Skip to content

Commit cf297c3

Browse files
committed
feat: adds branch 2 logic
1 parent 73793db commit cf297c3

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

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

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,47 @@ function ctrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX
155155
}
156156
return x;
157157
}
158-
158+
if (
159+
( !isrm && uplo === 'lower' && trans === 'no-transpose' ) ||
160+
( isrm && uplo === 'upper' && trans !== 'no-transpose' )
161+
) {
162+
ix1 = ox;
163+
for ( i1 = 0; i1 < N; i1++ ) {
164+
rex = viewX[ ix1 ];
165+
imx = viewX[ ix1 + 1 ];
166+
if ( rex !== 0.0 || imx !== 0.0 ) {
167+
oa2 = oa + ( sa1 * i1 );
168+
if ( nonunit ) {
169+
ia = oa2 + ( sa0 * i1 );
170+
rea = viewA[ ia ];
171+
ima = sign * viewA[ ia + 1 ];
172+
magsq = f32( ( rea * rea ) + ( ima * ima ) );
173+
retmp = f32( f32( ( rex * rea ) + ( imx * ima ) ) / magsq );
174+
imtmp = f32( f32( ( imx * rea ) - ( rex * ima ) ) / magsq );
175+
viewX[ ix1 ] = retmp;
176+
viewX[ ix1 + 1 ] = imtmp;
177+
} else {
178+
retmp = rex;
179+
imtmp = imx;
180+
}
181+
ix0 = ix1;
182+
for ( i0 = i1 + 1; i0 < N; i0++ ) {
183+
ix0 += sx;
184+
ia = oa2 + ( sa0 * i0 );
185+
rea = viewA[ ia ];
186+
ima = sign * viewA[ ia + 1 ];
187+
rex = viewX[ ix0 ];
188+
imx = viewX[ ix0 + 1 ];
189+
remul = f32( ( retmp * rea ) - ( imtmp * ima ) );
190+
immul = f32( ( retmp * ima ) + ( imtmp * rea ) );
191+
viewX[ ix0 ] = f32( rex - remul );
192+
viewX[ ix0 + 1 ] = f32( imx - immul );
193+
}
194+
}
195+
ix1 += sx;
196+
}
197+
return x;
198+
}
159199
}
160200

161201

0 commit comments

Comments
 (0)