22
22
23
23
var stride2offset = require ( '@stdlib/strided/base/stride2offset' ) ;
24
24
var isLayout = require ( '@stdlib/blas/base/assert/is-layout' ) ;
25
+ var isColumnMajor = require ( '@stdlib/ndarray/base/assert/is-column-major-string' ) ;
25
26
var format = require ( '@stdlib/string/format' ) ;
26
27
var base = require ( './base.js' ) ;
27
28
@@ -46,6 +47,7 @@ var base = require( './base.js' );
46
47
* @throws {RangeError } third argument must be a nonnegative integer
47
48
* @throws {RangeError } sixth argument must be non-zero
48
49
* @throws {RangeError } eighth argument must be non-zero
50
+ * @throws {RangeError } tenth argument must be greater than or equal to max(1,M)
49
51
* @returns {Float32Array } `A`
50
52
*
51
53
* @example
@@ -59,11 +61,14 @@ var base = require( './base.js' );
59
61
* // A => <Float32Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]
60
62
*/
61
63
function sger ( order , M , N , alpha , x , strideX , y , strideY , A , LDA ) {
64
+ var iscm ;
65
+ var vala ;
62
66
var sa1 ;
63
67
var sa2 ;
64
68
var ox ;
65
69
var oy ;
66
70
71
+ iscm = isColumnMajor ( order ) ;
67
72
if ( ! isLayout ( order ) ) {
68
73
throw new TypeError ( format ( 'invalid argument. First argument must be a valid order. Value: `%s`.' , order ) ) ;
69
74
}
@@ -79,6 +84,14 @@ function sger( order, M, N, alpha, x, strideX, y, strideY, A, LDA ) {
79
84
if ( strideY === 0 ) {
80
85
throw new RangeError ( format ( 'invalid argument. Eighth argument must be non-zero.' ) ) ;
81
86
}
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
+ }
82
95
// Check if we can early return...
83
96
if ( M === 0 || N === 0 || alpha === 0.0 ) {
84
97
return A ;
0 commit comments