Skip to content

Commit 8a02616

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 1773baa commit 8a02616

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

lib/node_modules/@stdlib/lapack/base/dorg2r/lib/init_unit_columns.js

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818

1919
'use strict';
2020

21+
// MODULES //
22+
23+
var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major' );
24+
25+
2126
// MAIN //
2227

2328
/**
@@ -49,19 +54,36 @@ function initUnitColumns( M, N, K, A, strideA1, strideA2, offsetA ) {
4954
var j;
5055

5156
// Initialize columns k+1:n to columns of the unit matrix
52-
ia1 = offsetA + (K*strideA1) + (K*strideA2);
53-
ia2 = offsetA + (K*strideA2);
54-
da = strideA2 - (M * strideA1);
55-
del = strideA1 + strideA2;
57+
if ( isRowMajor( [ strideA1, strideA2 ] ) ) {
58+
ia2 = offsetA + (K*strideA2);
59+
da = strideA1 - ((N-K) * strideA2);
60+
61+
for ( i = 0; i < M; i++ ) {
62+
for ( j = K; j < N; j++ ) {
63+
if ( i === j ) {
64+
A[ ia2 ] = 1.0;
65+
} else {
66+
A[ ia2 ] = 0.0;
67+
}
68+
ia2 += strideA2;
69+
}
70+
ia2 += da;
71+
}
72+
} else {
73+
ia1 = offsetA + (K*strideA1) + (K*strideA2);
74+
ia2 = offsetA + (K*strideA2);
75+
da = strideA2 - (M * strideA1);
76+
del = strideA1 + strideA2;
5677

57-
for ( i = K; i < N; i++ ) {
58-
for ( j = 0; j < M; j++ ) {
59-
A[ ia2 ] = 0.0;
60-
ia2 += strideA1;
78+
for ( i = K; i < N; i++ ) {
79+
for ( j = 0; j < M; j++ ) {
80+
A[ ia2 ] = 0.0;
81+
ia2 += strideA1;
82+
}
83+
A[ ia1 ] = 1.0;
84+
ia2 += da;
85+
ia1 += del;
6186
}
62-
A[ ia1 ] = 1.0;
63-
ia2 += da;
64-
ia1 += del;
6587
}
6688

6789
return A;

0 commit comments

Comments
 (0)