Skip to content

Commit 7560ab3

Browse files
committed
refactor: avoid temporary complex number instantiation
--- 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 --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: passed - task: run_c_examples status: passed - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: passed - task: run_c_benchmarks status: failed ---
1 parent a4340c8 commit 7560ab3

File tree

1 file changed

+21
-7
lines changed
  • lib/node_modules/@stdlib/blas/base/zaxpy/lib

1 file changed

+21
-7
lines changed

lib/node_modules/@stdlib/blas/base/zaxpy/lib/ndarray.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020

2121
// MODULES //
2222

23+
var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' );
24+
var muladd = require( '@stdlib/complex/float64/base/mul-add' ).assign;
25+
var real = require( '@stdlib/complex/float64/real' );
26+
var imag = require( '@stdlib/complex/float64/imag' );
2327
var dcabs1 = require( '@stdlib/blas/base/dcabs1' );
24-
var cmul = require( '@stdlib/complex/float64/base/mul' );
25-
var cadd = require( '@stdlib/complex/float64/base/add' );
2628

2729

2830
// MAIN //
@@ -62,8 +64,14 @@ var cadd = require( '@stdlib/complex/float64/base/add' );
6264
* // returns 7.0
6365
*/
6466
function zaxpy( N, za, zx, strideX, offsetX, zy, strideY, offsetY ) {
67+
var viewX;
68+
var viewY;
69+
var sx;
70+
var sy;
6571
var ix;
6672
var iy;
73+
var re;
74+
var im;
6775
var i;
6876

6977
if ( N <= 0 ) {
@@ -72,12 +80,18 @@ function zaxpy( N, za, zx, strideX, offsetX, zy, strideY, offsetY ) {
7280
if ( dcabs1( za ) === 0.0 ) {
7381
return zy;
7482
}
75-
ix = offsetX;
76-
iy = offsetY;
83+
re = real( za );
84+
im = imag( za );
85+
viewX = reinterpret( zx, 0 );
86+
viewY = reinterpret( zy, 0 );
87+
sx = strideX * 2;
88+
sy = strideY * 2;
89+
ix = offsetX * 2;
90+
iy = offsetY * 2;
7791
for ( i = 0; i < N; i++ ) {
78-
zy.set( cadd( cmul( za, zx.get( ix ) ), zy.get( iy ) ), iy );
79-
ix += strideX;
80-
iy += strideY;
92+
muladd( re, im, viewX[ ix ], viewX[ ix+1 ], viewY[ iy ], viewY[ iy+1 ], viewY, 1, iy ); // eslint-disable-line max-len
93+
ix += sx;
94+
iy += sy;
8195
}
8296
return zy;
8397
}

0 commit comments

Comments
 (0)