2222
2323var stride2offset = require ( '@stdlib/strided/base/stride2offset' ) ;
2424var isLayout = require ( '@stdlib/blas/base/assert/is-layout' ) ;
25+ var isColumnMajor = require ( '@stdlib/ndarray/base/assert/is-column-major-string' ) ;
2526var format = require ( '@stdlib/string/format' ) ;
2627var base = require ( './base.js' ) ;
2728
@@ -46,6 +47,7 @@ var base = require( './base.js' );
4647* @throws {RangeError } third argument must be a nonnegative integer
4748* @throws {RangeError } sixth argument must be non-zero
4849* @throws {RangeError } eighth argument must be non-zero
50+ * @throws {RangeError } tenth argument must be greater than or equal to max(1,M)
4951* @returns {Float32Array } `A`
5052*
5153* @example
@@ -59,11 +61,14 @@ var base = require( './base.js' );
5961* // A => <Float32Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]
6062*/
6163function sger ( order , M , N , alpha , x , strideX , y , strideY , A , LDA ) {
64+ var iscm ;
65+ var vala ;
6266 var sa1 ;
6367 var sa2 ;
6468 var ox ;
6569 var oy ;
6670
71+ iscm = isColumnMajor ( order ) ;
6772 if ( ! isLayout ( order ) ) {
6873 throw new TypeError ( format ( 'invalid argument. First argument must be a valid order. Value: `%s`.' , order ) ) ;
6974 }
@@ -79,6 +84,14 @@ function sger( order, M, N, alpha, x, strideX, y, strideY, A, LDA ) {
7984 if ( strideY === 0 ) {
8085 throw new RangeError ( format ( 'invalid argument. Eighth argument must be non-zero.' ) ) ;
8186 }
87+ if ( iscm ) {
88+ vala = M ;
89+ } else {
90+ vala = N ;
91+ }
92+ if ( LDA < max ( 1 , vala ) ) {
93+ throw new RangeError ( format ( 'invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.' , vala , LDA ) ) ;
94+ }
8295 // Check if we can early return...
8396 if ( M === 0 || N === 0 || alpha === 0.0 ) {
8497 return A ;
0 commit comments