Skip to content

Commit 4f2d6e3

Browse files
committed
Merge branch 'fix/dger' of https://github.com/shabishett07/stdlib into pr/ShabiShett07/6395
2 parents 6319005 + de5b1af commit 4f2d6e3

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

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

0 commit comments

Comments
 (0)