Skip to content

Commit 5ad9f8e

Browse files
committed
refactor: update x index recalculation to stride addition
--- 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: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 383d6af commit 5ad9f8e

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

  • lib/node_modules/@stdlib/blas/base/ctrsv/lib

lib/node_modules/@stdlib/blas/base/ctrsv/lib/base.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
118118
( !isrm && uplo === 'upper' && trans === 'no-transpose' ) ||
119119
( isrm && uplo === 'lower' && trans !== 'no-transpose' )
120120
) {
121+
ix1 = ox + ( ( N - 1 ) * sx );
121122
for ( i1 = N - 1; i1 >= 0; i1-- ) {
122-
ix1 = ox + ( i1 * sx );
123123
rex = viewX[ ix1 ];
124124
imx = viewX[ ix1 + 1 ];
125125
if ( rex !== 0.0 || imx !== 0.0 ) {
@@ -137,8 +137,9 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
137137
retmp = rex;
138138
imtmp = imx;
139139
}
140+
ix0 = ix1;
140141
for ( i0 = i1 - 1; i0 >= 0; i0-- ) {
141-
ix0 = ox + ( i0 * sx );
142+
ix0 -= sx;
142143
ia = oa2 + ( sa0 * i0 );
143144
rea = viewA[ ia ];
144145
ima = sign * viewA[ ia + 1 ];
@@ -150,15 +151,16 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
150151
viewX[ ix0 + 1 ] = f32( imx - immul );
151152
}
152153
}
154+
ix1 -= sx;
153155
}
154156
return x;
155157
}
156158
if (
157159
( !isrm && uplo === 'lower' && trans === 'no-transpose' ) ||
158160
( isrm && uplo === 'upper' && trans !== 'no-transpose' )
159161
) {
162+
ix1 = ox;
160163
for ( i1 = 0; i1 < N; i1++ ) {
161-
ix1 = ox + ( i1 * sx );
162164
rex = viewX[ ix1 ];
163165
imx = viewX[ ix1 + 1 ];
164166
if ( rex !== 0.0 || imx !== 0.0 ) {
@@ -176,8 +178,9 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
176178
retmp = rex;
177179
imtmp = imx;
178180
}
181+
ix0 = ix1;
179182
for ( i0 = i1 + 1; i0 < N; i0++ ) {
180-
ix0 = ox + ( i0 * sx );
183+
ix0 += sx;
181184
ia = oa2 + ( sa0 * i0 );
182185
rea = viewA[ ia ];
183186
ima = sign * viewA[ ia + 1 ];
@@ -189,29 +192,31 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
189192
viewX[ ix0 + 1 ] = f32( imx - immul );
190193
}
191194
}
195+
ix1 += sx;
192196
}
193197
return x;
194198
}
195199
if (
196200
( !isrm && uplo === 'upper' && trans !== 'no-transpose' ) ||
197201
( isrm && uplo === 'lower' && trans === 'no-transpose' )
198202
) {
203+
ix1 = ox;
199204
for ( i1 = 0; i1 < N; i1++ ) {
200-
ix1 = ox + ( i1 * sx );
201205
oa2 = oa + ( sa1 * i1 );
202206
rex = viewX[ ix1 ];
203207
imx = viewX[ ix1 + 1 ];
204208
retmp = rex;
205209
imtmp = imx;
210+
ix0 = ox;
206211
for ( i0 = 0; i0 < i1; i0++ ) {
207-
ix0 = ox + ( i0 * sx );
208212
ia = oa2 + ( sa0 * i0 );
209213
rea = viewA[ ia ];
210214
ima = sign * viewA[ ia + 1 ];
211215
rex = viewX[ ix0 ];
212216
imx = viewX[ ix0 + 1 ];
213217
retmp -= f32( ( rex * rea ) - ( imx * ima ) );
214218
imtmp -= f32( ( rex * ima ) + ( imx * rea ) );
219+
ix0 += sx;
215220
}
216221
if ( nonunit ) {
217222
ia = oa2 + ( sa0 * i1 );
@@ -225,26 +230,28 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
225230
}
226231
viewX[ ix1 ] = retmp;
227232
viewX[ ix1 + 1 ] = imtmp;
233+
ix1 += sx;
228234
}
229235
return x;
230236
}
231237
// ( !isrm && uplo === 'lower' && trans !== 'no-transpose' ) || ( isrm && uplo === 'upper' && trans === 'no-transpose' )
238+
ix1 = ox + ( ( N - 1 ) * sx );
232239
for ( i1 = N - 1; i1 >= 0; i1-- ) {
233-
ix1 = ox + ( i1 * sx );
234240
oa2 = oa + ( sa1 * i1 );
235241
rex = viewX[ ix1 ];
236242
imx = viewX[ ix1 + 1 ];
237243
retmp = rex;
238244
imtmp = imx;
245+
ix0 = ox + ( ( N - 1 ) * sx );
239246
for ( i0 = N - 1; i0 > i1; i0-- ) {
240-
ix0 = ox + ( i0 * sx );
241247
ia = oa2 + ( sa0 * i0 );
242248
rea = viewA[ ia ];
243249
ima = sign * viewA[ ia + 1 ];
244250
rex = viewX[ ix0 ];
245251
imx = viewX[ ix0 + 1 ];
246252
retmp -= f32( ( rex * rea ) - ( imx * ima ) );
247253
imtmp -= f32( ( rex * ima ) + ( imx * rea ) );
254+
ix0 -= sx;
248255
}
249256
if ( nonunit ) {
250257
ia = oa2 + ( sa0 * i1 );
@@ -258,6 +265,7 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
258265
}
259266
viewX[ ix1 ] = retmp;
260267
viewX[ ix1 + 1 ] = imtmp;
268+
ix1 -= sx;
261269
}
262270
return x;
263271
}

0 commit comments

Comments
 (0)