@@ -58,141 +58,141 @@ var f32 = require( '@stdlib/number/float64/base/to-float32' );
5858* cher2( 'lower', x.length, alpha, x, 1, 0, y, 1, 0, A, 2, 1, 0 );
5959* // A => <Complex64Array>[ 5.0, 0.0, 0.0, 0.0, 6.0, 3.0, 8.0, 0.0 ]
6060*/
61- function cher2 ( uplo , N , alpha , x , strideX , offsetX , y , strideY , offsetY , A , strideA1 , strideA2 , offsetA ) {
62- var alpha_re ;
63- var alpha_im ;
64- var tmp1_re ;
65- var tmp1_im ;
66- var tmp2_re ;
67- var tmp2_im ;
68- var re0_x ;
69- var im0_x ;
70- var re0_y ;
71- var im0_y ;
72- var re1_x ;
73- var im1_x ;
74- var re1_y ;
75- var im1_y ;
61+ function cher2 ( uplo , N , alpha , x , strideX , offsetX , y , strideY , offsetY , A , strideA1 , strideA2 , offsetA ) { // eslint-disable-line max-params, max-len
62+ var realpha ;
63+ var imalpha ;
64+ var retmp1 ;
65+ var imtmp1 ;
66+ var retmp2 ;
67+ var imtmp2 ;
7668 var viewX ;
77- var viewY ;
78- var viewA ;
79- var isrm ;
80- var idx ;
81- var ix1 ;
82- var iy1 ;
83- var ix0 ;
84- var iy0 ;
85- var re0 ;
86- var im0 ;
87- var re1 ;
88- var im1 ;
89- var sa0 ;
90- var sa1 ;
91- var re ;
92- var im ;
93- var i1 ;
94- var i0 ;
95- var ix ;
96- var iy ;
97- var ia ;
98- var sx ;
99- var sy ;
100-
101- alpha_re = f32 ( alpha . re ) ;
102- alpha_im = f32 ( alpha . im ) ;
103-
104- viewX = reinterpret ( x , 0 ) ;
105- viewY = reinterpret ( y , 0 ) ;
106- viewA = reinterpret ( A , 0 ) ;
107-
108- isrm = isRowMajor ( [ strideA1 , strideA2 ] ) ;
109- if ( isrm ) {
110- sa0 = strideA2 * 2 ;
111- sa1 = strideA1 * 2 ;
112- } else {
113- sa0 = strideA1 * 2 ;
114- sa1 = strideA2 * 2 ;
115- }
116- ix = offsetX * 2 ;
117- iy = offsetY * 2 ;
118- ia = offsetA * 2 ;
119- sx = strideX * 2 ;
120- sy = strideY * 2 ;
121- if ( ( isrm && uplo === 'upper' ) || ( ! isrm && uplo === 'lower' ) ) {
122- for ( i1 = 0 ; i1 < N ; i1 ++ ) {
123- ix1 = ix + ( i1 * sx ) ;
124- iy1 = iy + ( i1 * sy ) ;
125- re0_x = f32 ( viewX [ ix1 ] ) ;
126- im0_x = f32 ( viewX [ ix1 + 1 ] ) ;
127- re0_y = f32 ( viewY [ iy1 ] ) ;
128- im0_y = f32 ( viewY [ iy1 + 1 ] ) ;
129- for ( i0 = i1 ; i0 < N ; i0 ++ ) {
130- ix0 = ix + ( i0 * sx ) ;
131- iy0 = iy + ( i0 * sy ) ;
132- re1_x = f32 ( viewX [ ix0 ] ) ;
133- im1_x = f32 ( viewX [ ix0 + 1 ] ) ;
134- re1_y = f32 ( viewY [ iy0 ] ) ;
135- im1_y = f32 ( viewY [ iy0 + 1 ] ) ;
136-
137- re0 = f32 ( ( re0_x * re1_y ) + ( im0_x * im1_y ) ) ;
138- im0 = f32 ( ( im0_x * re1_y ) - ( re0_x * im1_y ) ) ;
139- tmp1_re = f32 ( ( alpha_re * re0 ) - ( alpha_im * im0 ) ) ;
140- tmp1_im = f32 ( ( alpha_re * im0 ) + ( alpha_im * re0 ) ) ;
141-
142- re1 = f32 ( ( re0_y * re1_x ) + ( im0_y * im1_x ) ) ;
143- im1 = f32 ( ( im0_y * re1_x ) - ( re0_y * im1_x ) ) ;
144- tmp2_re = f32 ( ( alpha_re * re1 ) + ( alpha_im * im1 ) ) ;
145- tmp2_im = f32 ( ( alpha_re * im1 ) - ( alpha_im * re1 ) ) ;
146-
147- re = f32 ( tmp1_re + tmp2_re ) ;
148- im = f32 ( tmp1_im + tmp2_im ) ;
149- idx = ia + ( i0 * sa0 ) + ( i1 * sa1 ) ;
150- viewA [ idx ] = f32 ( viewA [ idx ] + re ) ;
151- viewA [ idx + 1 ] = f32 ( viewA [ idx + 1 ] + im ) ;
152- if ( i0 === i1 ) {
153- viewA [ idx + 1 ] = 0.0 ;
154- }
155- }
156- }
157- return A ;
158- }
159- // ( isrm && uplo === 'lower' ) || ( !isrm && uplo === 'upper' )
160- for ( i1 = 0 ; i1 < N ; i1 ++ ) {
161- ix1 = ix + ( i1 * sx ) ;
162- iy1 = iy + ( i1 * sy ) ;
163- re0_x = f32 ( viewX [ ix1 ] ) ;
164- im0_x = f32 ( viewX [ ix1 + 1 ] ) ;
165- re0_y = f32 ( viewY [ iy1 ] ) ;
166- im0_y = f32 ( viewY [ iy1 + 1 ] ) ;
167- for ( i0 = 0 ; i0 <= i1 ; i0 ++ ) {
168- ix0 = ix + ( i0 * sx ) ;
169- iy0 = iy + ( i0 * sy ) ;
170- re1_x = f32 ( viewX [ ix0 ] ) ;
171- im1_x = f32 ( viewX [ ix0 + 1 ] ) ;
172- re1_y = f32 ( viewY [ iy0 ] ) ;
173- im1_y = f32 ( viewY [ iy0 + 1 ] ) ;
174-
175- re0 = f32 ( ( re0_x * re1_y ) + ( im0_x * im1_y ) ) ;
176- im0 = f32 ( ( im0_x * re1_y ) - ( re0_x * im1_y ) ) ;
177- tmp1_re = f32 ( ( alpha_re * re0 ) - ( alpha_im * im0 ) ) ;
178- tmp1_im = f32 ( ( alpha_re * im0 ) + ( alpha_im * re0 ) ) ;
179-
180- re1 = f32 ( ( re0_y * re1_x ) + ( im0_y * im1_x ) ) ;
181- im1 = f32 ( ( im0_y * re1_x ) - ( re0_y * im1_x ) ) ;
182- tmp2_re = f32 ( ( alpha_re * re1 ) + ( alpha_im * im1 ) ) ;
183- tmp2_im = f32 ( ( alpha_re * im1 ) - ( alpha_im * re1 ) ) ;
184-
185- re = f32 ( tmp1_re + tmp2_re ) ;
186- im = f32 ( tmp1_im + tmp2_im ) ;
187- idx = ia + ( i0 * sa0 ) + ( i1 * sa1 ) ;
188- viewA [ idx ] = f32 ( viewA [ idx ] + re ) ;
189- viewA [ idx + 1 ] = f32 ( viewA [ idx + 1 ] + im ) ;
190- if ( i0 === i1 ) {
191- viewA [ idx + 1 ] = 0.0 ;
192- }
193- }
194- }
195- return A ;
69+ var viewY ;
70+ var viewA ;
71+ var xre0 ;
72+ var xim0 ;
73+ var yre0 ;
74+ var yim0 ;
75+ var xre1 ;
76+ var xim1 ;
77+ var yre1 ;
78+ var yim1 ;
79+ var isrm ;
80+ var idx ;
81+ var ix1 ;
82+ var iy1 ;
83+ var ix0 ;
84+ var iy0 ;
85+ var re0 ;
86+ var im0 ;
87+ var re1 ;
88+ var im1 ;
89+ var sa0 ;
90+ var sa1 ;
91+ var re ;
92+ var im ;
93+ var i1 ;
94+ var i0 ;
95+ var ix ;
96+ var iy ;
97+ var ia ;
98+ var sx ;
99+ var sy ;
100+
101+ realpha = f32 ( alpha . re ) ;
102+ imalpha = f32 ( alpha . im ) ;
103+
104+ viewX = reinterpret ( x , 0 ) ;
105+ viewY = reinterpret ( y , 0 ) ;
106+ viewA = reinterpret ( A , 0 ) ;
107+
108+ isrm = isRowMajor ( [ strideA1 , strideA2 ] ) ;
109+ if ( isrm ) {
110+ sa0 = strideA2 * 2 ;
111+ sa1 = strideA1 * 2 ;
112+ } else {
113+ sa0 = strideA1 * 2 ;
114+ sa1 = strideA2 * 2 ;
115+ }
116+ ix = offsetX * 2 ;
117+ iy = offsetY * 2 ;
118+ ia = offsetA * 2 ;
119+ sx = strideX * 2 ;
120+ sy = strideY * 2 ;
121+ if ( ( isrm && uplo === 'upper' ) || ( ! isrm && uplo === 'lower' ) ) {
122+ for ( i1 = 0 ; i1 < N ; i1 ++ ) {
123+ ix1 = ix + ( i1 * sx ) ;
124+ iy1 = iy + ( i1 * sy ) ;
125+ xre0 = f32 ( viewX [ ix1 ] ) ;
126+ xim0 = f32 ( viewX [ ix1 + 1 ] ) ;
127+ yre0 = f32 ( viewY [ iy1 ] ) ;
128+ yim0 = f32 ( viewY [ iy1 + 1 ] ) ;
129+ for ( i0 = i1 ; i0 < N ; i0 ++ ) {
130+ ix0 = ix + ( i0 * sx ) ;
131+ iy0 = iy + ( i0 * sy ) ;
132+ xre1 = f32 ( viewX [ ix0 ] ) ;
133+ xim1 = f32 ( viewX [ ix0 + 1 ] ) ;
134+ yre1 = f32 ( viewY [ iy0 ] ) ;
135+ yim1 = f32 ( viewY [ iy0 + 1 ] ) ;
136+
137+ re0 = f32 ( ( xre0 * yre1 ) + ( xim0 * yim1 ) ) ;
138+ im0 = f32 ( ( xim0 * yre1 ) - ( xre0 * yim1 ) ) ;
139+ retmp1 = f32 ( ( realpha * re0 ) - ( imalpha * im0 ) ) ;
140+ imtmp1 = f32 ( ( realpha * im0 ) + ( imalpha * re0 ) ) ;
141+
142+ re1 = f32 ( ( yre0 * xre1 ) + ( yim0 * xim1 ) ) ;
143+ im1 = f32 ( ( yim0 * xre1 ) - ( yre0 * xim1 ) ) ;
144+ retmp2 = f32 ( ( realpha * re1 ) + ( imalpha * im1 ) ) ;
145+ imtmp2 = f32 ( ( realpha * im1 ) - ( imalpha * re1 ) ) ;
146+
147+ re = f32 ( retmp1 + retmp2 ) ;
148+ im = f32 ( imtmp1 + imtmp2 ) ;
149+ idx = ia + ( i0 * sa0 ) + ( i1 * sa1 ) ;
150+ viewA [ idx ] = f32 ( viewA [ idx ] + re ) ;
151+ viewA [ idx + 1 ] = f32 ( viewA [ idx + 1 ] + im ) ;
152+ if ( i0 === i1 ) {
153+ viewA [ idx + 1 ] = 0.0 ;
154+ }
155+ }
156+ }
157+ return A ;
158+ }
159+ // ( isrm && uplo === 'lower' ) || ( !isrm && uplo === 'upper' )
160+ for ( i1 = 0 ; i1 < N ; i1 ++ ) {
161+ ix1 = ix + ( i1 * sx ) ;
162+ iy1 = iy + ( i1 * sy ) ;
163+ xre0 = f32 ( viewX [ ix1 ] ) ;
164+ xim0 = f32 ( viewX [ ix1 + 1 ] ) ;
165+ yre0 = f32 ( viewY [ iy1 ] ) ;
166+ yim0 = f32 ( viewY [ iy1 + 1 ] ) ;
167+ for ( i0 = 0 ; i0 <= i1 ; i0 ++ ) {
168+ ix0 = ix + ( i0 * sx ) ;
169+ iy0 = iy + ( i0 * sy ) ;
170+ xre1 = f32 ( viewX [ ix0 ] ) ;
171+ xim1 = f32 ( viewX [ ix0 + 1 ] ) ;
172+ yre1 = f32 ( viewY [ iy0 ] ) ;
173+ yim1 = f32 ( viewY [ iy0 + 1 ] ) ;
174+
175+ re0 = f32 ( ( xre0 * yre1 ) + ( xim0 * yim1 ) ) ;
176+ im0 = f32 ( ( xim0 * yre1 ) - ( xre0 * yim1 ) ) ;
177+ retmp1 = f32 ( ( realpha * re0 ) - ( imalpha * im0 ) ) ;
178+ imtmp1 = f32 ( ( realpha * im0 ) + ( imalpha * re0 ) ) ;
179+
180+ re1 = f32 ( ( yre0 * xre1 ) + ( yim0 * xim1 ) ) ;
181+ im1 = f32 ( ( yim0 * xre1 ) - ( yre0 * xim1 ) ) ;
182+ retmp2 = f32 ( ( realpha * re1 ) + ( imalpha * im1 ) ) ;
183+ imtmp2 = f32 ( ( realpha * im1 ) - ( imalpha * re1 ) ) ;
184+
185+ re = f32 ( retmp1 + retmp2 ) ;
186+ im = f32 ( imtmp1 + imtmp2 ) ;
187+ idx = ia + ( i0 * sa0 ) + ( i1 * sa1 ) ;
188+ viewA [ idx ] = f32 ( viewA [ idx ] + re ) ;
189+ viewA [ idx + 1 ] = f32 ( viewA [ idx + 1 ] + im ) ;
190+ if ( i0 === i1 ) {
191+ viewA [ idx + 1 ] = 0.0 ;
192+ }
193+ }
194+ }
195+ return A ;
196196}
197197
198198
0 commit comments