Skip to content

Commit 086fc3c

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 fafa627 commit 086fc3c

File tree

1 file changed

+17
-5
lines changed
  • lib/node_modules/@stdlib/lapack/base/dlange/lib

1 file changed

+17
-5
lines changed

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,18 +268,30 @@ function infinityNorm( M, N, A, strideA1, strideA2, offsetA, work, strideWork, o
268268
* // returns ~25.5
269269
*/
270270
function frobeniusNorm( M, N, A, strideA1, strideA2, offsetA ) {
271+
var value;
271272
var ia1;
272273
var out;
273274
var i;
274275

275-
ia1 = offsetA;
276276
out = new Float64Array( [ 0.0, 1.0 ] );
277-
for ( i = 0; i < N; i++ ) {
278-
dlassq( M, A, strideA1, ia1, out[ 0 ], out[ 1 ], out, 1, 0 );
279-
ia1 += strideA2;
277+
278+
if ( isRowMajor( [ strideA1, strideA2 ] ) ) {
279+
ia1 = offsetA;
280+
for ( i = 0; i < M; i++ ) {
281+
dlassq( N, A, strideA2, ia1, out[ 0 ], out[ 1 ], out, 1, 0 );
282+
ia1 += strideA1;
283+
}
284+
value = out[ 0 ] * sqrt( out[ 1 ] );
285+
} else {
286+
ia1 = offsetA;
287+
for ( i = 0; i < N; i++ ) {
288+
dlassq( M, A, strideA1, ia1, out[ 0 ], out[ 1 ], out, 1, 0 );
289+
ia1 += strideA2;
290+
}
291+
value = out[ 0 ] * sqrt( out[ 1 ] );
280292
}
281293

282-
return out[ 0 ] * sqrt( out[ 1 ] );
294+
return value;
283295
}
284296

285297

0 commit comments

Comments
 (0)