Skip to content

Commit de5b1af

Browse files
authored
chore: update implementation
Signed-off-by: Shabareesh Shetty <[email protected]>
1 parent 697b398 commit de5b1af

File tree

1 file changed

+15
-51
lines changed
  • lib/node_modules/@stdlib/blas/base/dger/lib

1 file changed

+15
-51
lines changed

lib/node_modules/@stdlib/blas/base/dger/lib/base.js

Lines changed: 15 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@
1818

1919
'use strict';
2020

21-
// MODULES //
22-
23-
var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
24-
25-
2621
// MAIN //
2722

2823
/**
@@ -54,56 +49,25 @@ var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
5449
* // A => <Float64Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]
5550
*/
5651
function dger( M, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-params, max-len
57-
var isrm;
5852
var tmp;
59-
var ix1;
60-
var iy1;
61-
var sa0;
62-
var sa1;
63-
var i0;
64-
var i1;
65-
var oa;
66-
67-
// Note on variable naming convention: sa#, ix#, i# where # corresponds to the loop number, with `0` being the innermost loop...
53+
var idx;
54+
var jy;
55+
var ix;
56+
var i;
57+
var j;
6858

69-
isrm = isRowMajor( [ strideA1, strideA2 ] );
70-
if ( isrm ) {
71-
// For row-major matrices, the last dimension has the fastest changing index...
72-
sa0 = strideA2; // stride for innermost loop
73-
sa1 = strideA1; // stride for outermost loop
74-
} else { // isColMajor
75-
// For column-major matrices, the first dimension has the fastest changing index...
76-
sa0 = strideA1; // stride for innermost loop
77-
sa1 = strideA2; // stride for outermost loop
78-
}
79-
if ( !isrm ) {
80-
iy1 = offsetY;
81-
for ( i1 = 0; i1 < N; i1++ ) {
82-
if ( y[ iy1 ] !== 0.0 ) {
83-
tmp = alpha * y[ iy1 ];
84-
ix1 = offsetX;
85-
oa = offsetA + ( sa1 * i1 );
86-
for ( i0 = 0; i0 < M; i0++ ) {
87-
A[ oa + ( sa0 * i0 ) ] += x[ ix1 ] * tmp;
88-
ix1 += strideX;
89-
}
90-
}
91-
iy1 += strideY;
92-
}
93-
return A;
94-
}
95-
ix1 = offsetX;
96-
for ( i1 = 0; i1 < M; i1++ ) {
97-
if ( x[ ix1 ] !== 0.0 ) {
98-
tmp = alpha * x[ ix1 ];
99-
iy1 = offsetY;
100-
oa = offsetA + (sa1*i1);
101-
for ( i0 = 0; i0 < N; i0++ ) {
102-
A[ oa + ( sa0 * i0 ) ] += y[ iy1 ] * tmp;
103-
iy1 += strideY;
59+
jy = offsetY;
60+
for ( j = 0; j < N; j++ ) {
61+
if ( y[ jy ] !== 0.0 ) {
62+
tmp = alpha * y[ jy ];
63+
ix = offsetX;
64+
for ( i = 0; i < M; i++ ) {
65+
idx = offsetA + ( i * strideA1 ) + ( j * strideA2 );
66+
A[ idx ] += x[ ix ] * tmp;
67+
ix += strideX;
10468
}
10569
}
106-
ix1 += strideX;
70+
jy += strideY;
10771
}
10872
return A;
10973
}

0 commit comments

Comments
 (0)