|
18 | 18 |
|
19 | 19 | 'use strict';
|
20 | 20 |
|
21 |
| -// MODULES // |
22 |
| - |
23 |
| -var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' ); |
24 |
| - |
25 |
| - |
26 | 21 | // MAIN //
|
27 | 22 |
|
28 | 23 | /**
|
@@ -54,56 +49,25 @@ var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
|
54 | 49 | * // A => <Float64Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]
|
55 | 50 | */
|
56 | 51 | 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; |
58 | 52 | 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; |
68 | 58 |
|
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; |
104 | 68 | }
|
105 | 69 | }
|
106 |
| - ix1 += strideX; |
| 70 | + jy += strideY; |
107 | 71 | }
|
108 | 72 | return A;
|
109 | 73 | }
|
|
0 commit comments