|
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 | /**
|
@@ -55,56 +50,25 @@ var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
|
55 | 50 | * // A => <Float64Array>[ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]
|
56 | 51 | */
|
57 | 52 | 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; |
59 | 53 | 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; |
69 | 59 |
|
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; |
105 | 69 | }
|
106 | 70 | }
|
107 |
| - ix1 += strideX; |
| 71 | + jy += strideY; |
108 | 72 | }
|
109 | 73 | return A;
|
110 | 74 | }
|
|
0 commit comments