Skip to content

Commit bd9df6b

Browse files
committed
refactor: optimise loops
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 382580e commit bd9df6b

File tree

1 file changed

+41
-13
lines changed
  • lib/node_modules/@stdlib/lapack/base/dlascl/lib

1 file changed

+41
-13
lines changed

lib/node_modules/@stdlib/lapack/base/dlascl/lib/base.js

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -120,22 +120,27 @@ function scaleGeneral( M, N, A, strideA1, strideA2, offsetA, mul ) {
120120
* // A => <Float64Array>[ 2.0, 0.0, 0.0, 4.0, 6.0, 0.0, 8.0, 10.0, 12.0 ]
121121
*/
122122
function scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
123+
var idx;
123124
var ia;
124125
var i0;
125126
var i1;
126127

127128
ia = offsetA;
128129
if ( isrm ) {
129130
for ( i1 = 0; i1 < M; i1++ ) {
131+
idx = ia + ( i1*strideA2 );
130132
for ( i0 = i1; i0 < N; i0++ ) {
131-
A[ ia + ( i0 * strideA2 ) ] *= mul;
133+
A[ idx ] *= mul;
134+
idx += strideA2;
132135
}
133136
ia += strideA1;
134137
}
135138
} else {
136139
for ( i1 = 0; i1 < N; i1++ ) {
137-
for ( i0 = 0; i0 <= min( i1, M - 1 ); i0++ ) {
138-
A[ ia + ( i0 * strideA1 ) ] *= mul;
140+
idx = ia;
141+
for ( i0 = 0; i0 <= min( i1, M-1 ); i0++ ) {
142+
A[ idx ] *= mul;
143+
idx += strideA1;
139144
}
140145
ia += strideA2;
141146
}
@@ -173,22 +178,27 @@ function scaleUpper( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
173178
* // A => <Float64Array>[ 2.0, 4.0, 6.0, 0.0, 8.0, 10.0, 0.0, 0.0, 12.0 ]
174179
*/
175180
function scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
181+
var idx;
176182
var ia;
177183
var i0;
178184
var i1;
179185

180186
ia = offsetA;
181187
if ( isrm ) {
182188
for ( i1 = 0; i1 < M; i1++ ) {
183-
for ( i0 = 0; i0 <= min( i1, N - 1 ); i0++ ) {
184-
A[ ia + ( i0 * strideA2 ) ] *= mul;
189+
idx = ia;
190+
for ( i0 = 0; i0 <= min( i1, N-1 ); i0++ ) {
191+
A[ idx ] *= mul;
192+
idx += strideA2;
185193
}
186194
ia += strideA1;
187195
}
188196
} else {
189197
for ( i1 = 0; i1 < N; i1++ ) {
198+
idx = ia + ( i1*strideA1 );
190199
for ( i0 = i1; i0 < M; i0++ ) {
191-
A[ ia + ( i0 * strideA1 ) ] *= mul;
200+
A[ idx ] *= mul;
201+
idx += strideA1;
192202
}
193203
ia += strideA2;
194204
}
@@ -226,23 +236,28 @@ function scaleLower( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
226236
* // A => <Float64Array>[ 2.0, 10.0, 0.0, 0.0, 4.0, 12.0, 18.0, 0.0, 6.0, 14.0, 20.0, 24.0, 8.0, 16.0, 22.0, 26.0 ]
227237
*/
228238
function scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
239+
var idx;
229240
var ia;
230241
var i0;
231242
var i1;
232243

233244
if ( isrm ) {
234245
ia = offsetA;
235246
for ( i1 = 0; i1 < M; i1++ ) {
247+
idx = ia + ( max( i1 - 1, 0 ) * strideA2 );
236248
for ( i0 = max( i1 - 1, 0 ); i0 < N; i0++ ) {
237-
A[ ia + ( i0 * strideA2 ) ] *= mul;
249+
A[ idx ] *= mul;
250+
idx += strideA2;
238251
}
239252
ia += strideA1;
240253
}
241254
} else {
242255
ia = offsetA;
243256
for ( i0 = 0; i0 < N; i0++ ) {
257+
idx = ia;
244258
for ( i1 = 0; i1 <= min( i0 + 1, M - 1 ); i1++ ) {
245-
A[ ia + ( i1 * strideA1 ) ] *= mul;
259+
A[ idx ] *= mul;
260+
idx += strideA1;
246261
}
247262
ia += strideA2;
248263
}
@@ -281,6 +296,7 @@ function scaleUpperHHessenberg( M, N, A, strideA1, strideA2, offsetA, isrm, mul
281296
* // A => <Float64Array>[ 11.0, 61.0, 101.0, 22.0, 72.0, 112.0, 33.0, 83.0, 123.0, 44.0, 94.0, 0.0, 55.0, 0.0, 0.0 ]
282297
*/
283298
function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
299+
var idx;
284300
var ia;
285301
var i0;
286302
var i1;
@@ -293,15 +309,19 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
293309

294310
if ( isrm ) {
295311
for ( i1 = 0; i1 < M; i1++ ) {
312+
idx = ia;
296313
for ( i0 = 0; i0 < ( N - i1 ); i0++ ) {
297-
A[ ia + ( i0 * strideA2 ) ] *= mul;
314+
A[ idx ] *= mul;
315+
idx += strideA2;
298316
}
299317
ia += strideA1;
300318
}
301319
} else {
302320
for ( i1 = 0; i1 < N; i1++ ) {
321+
idx = ia;
303322
for ( i0 = 0; i0 < min( k3, k4 - i1 ); i0++ ) {
304-
A[ ia + ( i0 * strideA1 ) ] *= mul;
323+
A[ idx ] *= mul;
324+
idx += strideA1;
305325
}
306326
ia += strideA2;
307327
}
@@ -340,6 +360,7 @@ function scaleSymmetricBandedLower( KL, M, N, A, strideA1, strideA2, offsetA, is
340360
* // A => <Float64Array>[ 0.0, 0.0, 11.0, 0.0, 61.0, 22.0, 101.0, 72.0, 33.0, 112.0, 83.0, 44.0, 123.0, 94.0, 55.0 ]
341361
*/
342362
function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, isrm, mul ) {
363+
var idx;
343364
var ia;
344365
var i0;
345366
var i1;
@@ -348,15 +369,19 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
348369

349370
if ( isrm ) {
350371
for ( i1 = 0; i1 <= KU; i1++ ) {
372+
idx = ia + ( max( KU - i1, 0 ) * strideA2 );
351373
for ( i0 = max( KU - i1, 0 ); i0 < N; i0++ ) {
352-
A[ ia + ( i0 * strideA2 ) ] *= mul;
374+
A[ idx ] *= mul;
375+
idx += strideA2;
353376
}
354377
ia += strideA1;
355378
}
356379
} else {
357380
for ( i1 = 0; i1 < N; i1++ ) {
381+
idx = ia + ( max( KU - i1, 0 ) * strideA1 );
358382
for ( i0 = max( KU - i1, 0 ); i0 <= KU; i0++ ) {
359-
A[ ia + ( i0 * strideA1 ) ] *= mul;
383+
A[ idx ] *= mul;
384+
idx += strideA1;
360385
}
361386
ia += strideA2;
362387
}
@@ -395,6 +420,7 @@ function scaleSymmetricBandedUpper( KU, M, N, A, strideA1, strideA2, offsetA, is
395420
* // A => <Float64Array>[ 0.0, 0.0, 0.0, 11.0, 21.0, 31.0, 0.0, 0.0, 12.0, 22.0, 32.0, 42.0, 0.0, 0.0, 23.0, 33.0, 43.0, 53.0, 0.0, 0.0, 34.0, 44.0, 54.0, 0.0, 0.0, 0.0, 45.0, 55.0, 0.0, 0.0 ]
396421
*/
397422
function scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ) {
423+
var idx;
398424
var ia;
399425
var i0;
400426
var i1;
@@ -410,8 +436,10 @@ function scaleBanded( KL, KU, M, N, A, strideA1, strideA2, offsetA, mul ) {
410436
ia = offsetA;
411437

412438
for ( i1 = 0; i1 < N; i1++ ) {
439+
idx = ia + ( max( k1 - i1, k2 ) * strideA1 );
413440
for ( i0 = max( k1 - i1, k2 ); i0 <= min( k3, k4 - i1 ); i0++ ) {
414-
A[ ia + ( i0 * strideA1 ) ] *= mul;
441+
A[ idx ] *= mul;
442+
idx += strideA1;
415443
}
416444
ia += strideA2;
417445
}

0 commit comments

Comments
 (0)