Skip to content

Commit 05889a0

Browse files
committed
feat: cache locality imporved
--- 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 ec4a39b commit 05889a0

1 file changed

Lines changed: 17 additions & 21 deletions

File tree

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

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

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -203,16 +203,14 @@ function cgbmv( trans, M, N, KL, KU, alpha, A, strideA1, strideA2, offsetA, x, s
203203
imx = viewX[ ix + 1 ];
204204
retmp = f32( ( realpha * rex ) - ( imalpha * imx ) );
205205
imtmp = f32( ( realpha * imx ) + ( imalpha * rex ) );
206-
oa2 = oa + ( i1 * sa1 );
206+
k = KU - i1;
207+
oa2 = oa + ( i1 * sa1 ) + ( k * sa0 );
207208
for ( i0 = max( 0, i1 - KU ); i0 < min( ylen, i1 + KL + 1 ); i0++ ) {
208-
k = i0 - i1;
209-
ia = oa2 + ( ( k + KU ) * sa0 );
210-
if ( ia >= 0 ) {
211-
rea = viewA[ ia ];
212-
ima = sign * viewA[ ia + 1 ];
213-
iy = oy + ( i0 * sy );
214-
muladd( rea, ima, retmp, imtmp, viewY[ iy ], viewY[ iy + 1 ], viewY, 1, iy ); // eslint-disable-line max-len
215-
}
209+
ia = oa2 + ( i0* sa0 );
210+
rea = viewA[ ia ];
211+
ima = sign * viewA[ ia + 1 ];
212+
iy = oy + ( i0 * sy );
213+
muladd( rea, ima, retmp, imtmp, viewY[ iy ], viewY[ iy + 1 ], viewY, 1, iy ); // eslint-disable-line max-len
216214
}
217215
}
218216
return y;
@@ -223,19 +221,17 @@ function cgbmv( trans, M, N, KL, KU, alpha, A, strideA1, strideA2, offsetA, x, s
223221
for ( i1 = 0; i1 < ylen; i1++ ) {
224222
retmp = 0.0;
225223
imtmp = 0.0;
226-
oa2 = oa + ( i1 * sa1 );
224+
k = KL - i1;
225+
oa2 = oa + ( i1 * sa1 ) + ( k * sa0 );
227226
for ( i0 = max( 0, i1 - KL ); i0 < min( xlen, i1 + KU + 1 ); i0++ ) {
228-
k = i0 - i1;
229-
ia = oa2 + ( ( k + KL ) * sa0 );
230-
if ( i0 < xlen && ia >= 0 ) {
231-
ix = ox + ( i0 * sx );
232-
rea = viewA[ ia ];
233-
ima = sign * viewA[ ia + 1 ];
234-
rex = viewX[ ix ];
235-
imx = viewX[ ix + 1 ];
236-
retmp = f32( retmp + f32( ( rea * rex ) - ( ima * imx ) ) );
237-
imtmp = f32( imtmp + f32( ( rea * imx ) + ( ima * rex ) ) );
238-
}
227+
ia = oa2 + ( i0 * sa0 );
228+
ix = ox + ( i0 * sx );
229+
rea = viewA[ ia ];
230+
ima = sign * viewA[ ia + 1 ];
231+
rex = viewX[ ix ];
232+
imx = viewX[ ix + 1 ];
233+
retmp = f32( retmp + f32( ( rea * rex ) - ( ima * imx ) ) );
234+
imtmp = f32( imtmp + f32( ( rea * imx ) + ( ima * rex ) ) );
239235
}
240236
iy = oy + ( i1 * sy );
241237
muladd( realpha, imalpha, retmp, imtmp, viewY[ iy ], viewY[ iy + 1 ], viewY, 1, iy ); // eslint-disable-line max-len

0 commit comments

Comments
 (0)