Skip to content

Commit 6d81a32

Browse files
committed
chore: update implementation
1 parent 48d6ebb commit 6d81a32

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_cblas.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@
3131
* @param strideX X stride length
3232
*/
3333
void API_SUFFIX(c_zdscal)( const CBLAS_INT N, const double alpha, void *X, const CBLAS_INT strideX ) {
34-
API_SUFFIX(cblas_zdscal)( N, alpha, X, strideX );
34+
CBLAS_INT sx = strideX;
35+
if ( sx < 0 ) {
36+
sx = -sx;
37+
}
38+
API_SUFFIX(cblas_zdscal)( N, alpha, X, sx );
3539
}
3640

3741
/**
@@ -45,6 +49,11 @@ void API_SUFFIX(c_zdscal)( const CBLAS_INT N, const double alpha, void *X, const
4549
*/
4650
void API_SUFFIX(c_zdscal_ndarray)( const CBLAS_INT N, const double alpha, void *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) {
4751
stdlib_complex128_t *x = (stdlib_complex128_t *)X;
52+
CBLAS_INT sx = strideX;
53+
4854
x += stdlib_strided_min_view_buffer_index( N, strideX, offsetX ); // adjust array pointer
49-
API_SUFFIX(cblas_zdscal)( N, alpha, (void *)x, strideX );
55+
if ( sx < 0 ) {
56+
sx = -sx;
57+
}
58+
API_SUFFIX(cblas_zdscal)( N, alpha, (void *)x, sx );
5059
}

lib/node_modules/@stdlib/blas/base/zdscal/src/zdscal_ndarray.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@
3131
* @param offsetX starting index for X
3232
*/
3333
void API_SUFFIX(c_zdscal_ndarray)( const CBLAS_INT N, const double alpha, void *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) {
34-
stdlib_complex128_t *x = (stdlib_complex128_t *)X;
35-
CBLAS_INT ix;
36-
CBLAS_INT sx;
37-
CBLAS_INT i;
34+
stdlib_complex128_t z;
35+
int64_t is1;
36+
int64_t i;
3837

39-
if ( N <= 0 || alpha == 1.0 ) {
40-
return;
41-
}
42-
sx = strideX;
43-
ix = offsetX;
44-
for ( i = 0; i < N; i++ ) {
45-
x[ ix ] = stdlib_base_complex128_scale( alpha, x[ ix ] );
46-
ix += sx;
47-
}
48-
return;
38+
if ( N <= 0 || alpha == 1.0 ) {
39+
return;
40+
}
41+
stdlib_complex128_t *ip1 = (stdlib_complex128_t *)X;
42+
is1 = (int64_t)strideX;
43+
ip1 += offsetX;
44+
for ( i = 0; i < N; i++, ip1 += is1 ) {
45+
z = *ip1;
46+
*ip1 = stdlib_base_complex128_scale( alpha, z );
47+
}
48+
return;
4949
}

0 commit comments

Comments
 (0)