2020
2121// MODULES // 
2222
23+ var  isColumnMajor  =  require (  '@stdlib/ndarray/base/assert/is-column-major-string'  ) ; 
2324var  isLayout  =  require (  '@stdlib/blas/base/assert/is-layout'  ) ; 
2425var  resolve  =  require (  '@stdlib/blas/base/layout-resolve-enum'  ) ; 
26+ var  max  =  require (  '@stdlib/math/base/special/fast/max'  ) ; 
2527var  format  =  require (  '@stdlib/string/format'  ) ; 
2628var  addon  =  require (  './../src/addon.node'  ) ; 
2729
@@ -60,6 +62,7 @@ var addon = require( './../src/addon.node' );
6062* // A => <Float64Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] 
6163*/ 
6264function  dger (  order ,  M ,  N ,  alpha ,  x ,  strideX ,  y ,  strideY ,  A ,  LDA  )  { 
65+ 	var  vala ; 
6366	if  (  ! isLayout (  order  )  )  { 
6467		throw  new  TypeError (  format (  'invalid argument. First argument must be a valid order. Value: `%s`.' ,  order  )  ) ; 
6568	} 
@@ -75,6 +78,18 @@ function dger( order, M, N, alpha, x, strideX, y, strideY, A, LDA ) {
7578	if  (  strideY  ===  0  )  { 
7679		throw  new  RangeError (  format (  'invalid argument. Eighth argument must be non-zero. Value: `%d`.' ,  strideY  )  ) ; 
7780	} 
81+ 	if  (  isColumnMajor (  order  )  )  { 
82+ 		vala  =  M ; 
83+ 	}  else  { 
84+ 		vala  =  N ; 
85+ 	} 
86+ 	if  (  LDA  <  max (  1 ,  vala  )  )  { 
87+ 		throw  new  RangeError (  format (  'invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.' ,  vala ,  LDA  )  ) ; 
88+ 	} 
89+ 	// Check if we can early return... 
90+ 	if  (  M  ===  0  ||  N  ===  0  ||  alpha  ===  0.0  )  { 
91+ 		return  A ; 
92+ 	} 
7893	addon (  resolve (  order  ) ,  M ,  N ,  alpha ,  x ,  strideX ,  y ,  strideY ,  A ,  LDA  ) ; 
7994	return  A ; 
8095} 
0 commit comments