Skip to content

Commit c057b66

Browse files
committed
feat: add branch 3 logic in base.js
1 parent 97965ed commit c057b66

File tree

1 file changed

+40
-2
lines changed
  • lib/node_modules/@stdlib/blas/base/ctpmv/lib

1 file changed

+40
-2
lines changed

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

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,11 @@ function ctpmv( order, uplo, trans, diag, N, AP, strideAP, offsetAP, x, strideX,
6262
var imtmp;
6363
var isrm;
6464
var sign;
65-
var rea;
66-
var ima;
65+
var imx;
6766
var rex;
6867
var imx;
68+
var rea;
69+
var ima;
6970
var iap;
7071
var ix0;
7172
var ix1;
@@ -171,6 +172,43 @@ function ctpmv( order, uplo, trans, diag, N, AP, strideAP, offsetAP, x, strideX,
171172
}
172173
return x;
173174
}
175+
if (
176+
( !isrm && uplo === 'upper' && trans !== 'no-transpose' ) ||
177+
( isrm && uplo === 'lower' && trans === 'no-transpose' )
178+
) {
179+
kk += ( ( N * ( N + 1 ) / 2 ) - 1 ) * sap;
180+
ix1 = ox + ( ( N - 1 ) * sx );
181+
for ( i1 = N - 1; i1 >= 0; i1-- ) {
182+
rex = viewX[ ix1 ];
183+
imx = viewX[ ix1 + 1 ];
184+
iap = kk;
185+
ix0 = ix1;
186+
if ( nonunit ) {
187+
rea = viewAP[ iap ];
188+
ima = sign * viewAP[ iap + 1 ];
189+
retmp = f32( ( rea * rex ) - ( ima * imx ) );
190+
imtmp = f32( ( rea * imx ) + ( ima * rex ) );
191+
} else {
192+
retmp = rex;
193+
imtmp = imx;
194+
}
195+
for ( i0 = i1 - 1; i0 >= 0; i0-- ) {
196+
ix0 -= sx;
197+
iap -= sap;
198+
rea = viewAP[ iap ];
199+
ima = sign * viewAP[ iap + 1 ];
200+
rex = viewX[ ix0 ];
201+
imx = viewX[ ix0 + 1 ];
202+
retmp += f32( ( rea * rex ) - ( ima * imx ) );
203+
imtmp += f32( ( rea * imx ) + ( ima * rex ) );
204+
}
205+
viewX[ ix1 ] = retmp;
206+
viewX[ ix1 + 1 ] = imtmp;
207+
ix1 -= sx;
208+
kk -= ( i1 + 1 ) * sap;
209+
}
210+
return x;
211+
}
174212
}
175213

176214

0 commit comments

Comments
 (0)