libflame revision_anchor
Functions
FLA_Eig_gest_il_opt_var1.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_il_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_ops_var1 (int m_AB, float *buff_A, int rs_A, int cs_A, float *buff_y, int inc_y, float *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_il_opd_var1 (int m_AB, double *buff_A, int rs_A, int cs_A, double *buff_y, int inc_y, double *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_il_opc_var1 (int m_AB, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_y, int inc_y, scomplex *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_il_opz_var1 (int m_AB, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_y, int inc_y, dcomplex *buff_B, int rs_B, int cs_B)
 

Function Documentation

◆ FLA_Eig_gest_il_opc_var1()

FLA_Error FLA_Eig_gest_il_opc_var1 ( int  m_AB,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_y,
int  inc_y,
scomplex buff_B,
int  rs_B,
int  cs_B 
)
285{
290 int i;
291
292 for ( i = 0; i < m_AB; ++i )
293 {
294 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
295 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
296 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
297
298 scomplex* y10t = buff_y + (0 )*inc_y;
299
300 scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
301 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
302 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
303
304 int m_behind = i;
305
306 /*------------------------------------------------------------*/
307
308 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
309 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
312 m_behind,
313 buff_1,
314 A00, rs_A, cs_A,
315 b10t, cs_B,
316 buff_0,
317 y10t, inc_y );
318
319 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
320 // B00, a10t );
324 m_behind,
325 B00, rs_B, cs_B,
326 a10t, cs_A );
327
328 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
330 m_behind,
331 buff_m1h,
332 y10t, inc_y,
333 a10t, cs_A );
334
335 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
337 m_behind,
338 buff_m1,
339 a10t, cs_A,
340 b10t, cs_B,
341 buff_1,
342 alpha11 );
343
344 // FLA_Inv_scal_external( beta11, alpha11 );
345 // FLA_Inv_scal_external( beta11, alpha11 );
348
349 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
351 m_behind,
352 buff_m1h,
353 y10t, inc_y,
354 a10t, cs_A );
355
356 // FLA_Inv_scal_external( beta11, a10t );
358 m_behind,
359 beta11,
360 a10t, cs_A );
361
362 /*------------------------------------------------------------*/
363
364 }
365
366 return FLA_SUCCESS;
367}
FLA_Obj FLA_MINUS_ONE_HALF
Definition FLA_Init.c:21
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
int i
Definition bl1_axmyv2.c:145
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_axpyv.c:29
void bl1_cdot2s(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition bl1_dot2s.c:39
void bl1_chemv(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_hemv.c:35
void bl1_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_invscalv.c:52
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trsv.c:99
@ BLIS1_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_NO_TRANSPOSE
Definition blis_type_defs.h:56
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_caxpyv(), bl1_cdot2s(), bl1_chemv(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_opd_var1()

FLA_Error FLA_Eig_gest_il_opd_var1 ( int  m_AB,
double buff_A,
int  rs_A,
int  cs_A,
double buff_y,
int  inc_y,
double buff_B,
int  rs_B,
int  cs_B 
)
195{
196 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
197 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
200 int i;
201
202 for ( i = 0; i < m_AB; ++i )
203 {
204 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
205 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
206 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
207
208 double* y10t = buff_y + (0 )*inc_y;
209
210 double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
211 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
212 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
213
214 int m_behind = i;
215
216 /*------------------------------------------------------------*/
217
218 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
219 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
222 m_behind,
223 buff_1,
224 A00, rs_A, cs_A,
225 b10t, cs_B,
226 buff_0,
227 y10t, inc_y );
228
229 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
230 // B00, a10t );
234 m_behind,
235 B00, rs_B, cs_B,
236 a10t, cs_A );
237
238 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
240 m_behind,
241 buff_m1h,
242 y10t, inc_y,
243 a10t, cs_A );
244
245 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
247 m_behind,
248 buff_m1,
249 a10t, cs_A,
250 b10t, cs_B,
251 buff_1,
252 alpha11 );
253
254 // FLA_Inv_scal_external( beta11, alpha11 );
255 // FLA_Inv_scal_external( beta11, alpha11 );
258
259 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
261 m_behind,
262 buff_m1h,
263 y10t, inc_y,
264 a10t, cs_A );
265
266 // FLA_Inv_scal_external( beta11, a10t );
268 m_behind,
269 beta11,
270 a10t, cs_A );
271
272 /*------------------------------------------------------------*/
273
274 }
275
276 return FLA_SUCCESS;
277}
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition bl1_axpyv.c:21
void bl1_ddot2s(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition bl1_dot2s.c:26
void bl1_dhemv(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_hemv.c:24
void bl1_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_invscalv.c:26
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56

References bl1_daxpyv(), bl1_ddot2s(), bl1_dhemv(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_ops_var1()

FLA_Error FLA_Eig_gest_il_ops_var1 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)
105{
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
110 int i;
111
112 for ( i = 0; i < m_AB; ++i )
113 {
114 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
115 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
116 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
117
118 float* y10t = buff_y + (0 )*inc_y;
119
120 float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
121 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
122 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
123
124 int m_behind = i;
125
126 /*------------------------------------------------------------*/
127
128 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
129 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
132 m_behind,
133 buff_1,
134 A00, rs_A, cs_A,
135 b10t, cs_B,
136 buff_0,
137 y10t, inc_y );
138
139 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
140 // B00, a10t );
144 m_behind,
145 B00, rs_B, cs_B,
146 a10t, cs_A );
147
148 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
150 m_behind,
151 buff_m1h,
152 y10t, inc_y,
153 a10t, cs_A );
154
155 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
157 m_behind,
158 buff_m1,
159 a10t, cs_A,
160 b10t, cs_B,
161 buff_1,
162 alpha11 );
163
164 // FLA_Inv_scal_external( beta11, alpha11 );
165 // FLA_Inv_scal_external( beta11, alpha11 );
168
169 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
171 m_behind,
172 buff_m1h,
173 y10t, inc_y,
174 a10t, cs_A );
175
176 // FLA_Inv_scal_external( beta11, a10t );
178 m_behind,
179 beta11,
180 a10t, cs_A );
181
182 /*------------------------------------------------------------*/
183
184 }
185
186 return FLA_SUCCESS;
187}
void bl1_saxpyv(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy)
Definition bl1_axpyv.c:13
void bl1_sdot2s(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition bl1_dot2s.c:13
void bl1_shemv(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_hemv.c:13
void bl1_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_invscalv.c:13
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13

References bl1_saxpyv(), bl1_sdot2s(), bl1_shemv(), bl1_sinvscalv(), bl1_strsv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_opt_var1()

FLA_Error FLA_Eig_gest_il_opt_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Datatype datatype;
16 int m_AB;
17 int rs_A, cs_A;
18 int rs_B, cs_B;
19 int inc_y;
20 FLA_Obj yT, yB;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_2x1( Y, &yT,
33 &yB, 1, FLA_TOP );
34
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_y = FLA_FLOAT_PTR( yT );
43 float* buff_B = FLA_FLOAT_PTR( B );
44
48 buff_B, rs_B, cs_B );
49
50 break;
51 }
52
53 case FLA_DOUBLE:
54 {
55 double* buff_A = FLA_DOUBLE_PTR( A );
56 double* buff_y = FLA_DOUBLE_PTR( yT );
57 double* buff_B = FLA_DOUBLE_PTR( B );
58
62 buff_B, rs_B, cs_B );
63
64 break;
65 }
66
67 case FLA_COMPLEX:
68 {
72
76 buff_B, rs_B, cs_B );
77
78 break;
79 }
80
82 {
86
90 buff_B, rs_B, cs_B );
91
92 break;
93 }
94 }
95
96 return FLA_SUCCESS;
97}
FLA_Error FLA_Eig_gest_il_opc_var1(int m_AB, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_y, int inc_y, scomplex *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_il_opt_var1.c:281
FLA_Error FLA_Eig_gest_il_opd_var1(int m_AB, double *buff_A, int rs_A, int cs_A, double *buff_y, int inc_y, double *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_il_opt_var1.c:191
FLA_Error FLA_Eig_gest_il_opz_var1(int m_AB, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_y, int inc_y, dcomplex *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_il_opt_var1.c:371
FLA_Error FLA_Eig_gest_il_ops_var1(int m_AB, float *buff_A, int rs_A, int cs_A, float *buff_y, int inc_y, float *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_il_opt_var1.c:101
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition FLA_Query.c:145
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
Definition FLA_type_defs.h:159
Definition blis_type_defs.h:138

References FLA_Eig_gest_il_opc_var1(), FLA_Eig_gest_il_opd_var1(), FLA_Eig_gest_il_ops_var1(), FLA_Eig_gest_il_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Part_2x1(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_opz_var1()

FLA_Error FLA_Eig_gest_il_opz_var1 ( int  m_AB,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_y,
int  inc_y,
dcomplex buff_B,
int  rs_B,
int  cs_B 
)
375{
380 int i;
381
382 for ( i = 0; i < m_AB; ++i )
383 {
384 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
385 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
386 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
387
388 dcomplex* y10t = buff_y + (0 )*inc_y;
389
390 dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
391 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
392 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
393
394 int m_behind = i;
395
396 /*------------------------------------------------------------*/
397
398 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
399 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
402 m_behind,
403 buff_1,
404 A00, rs_A, cs_A,
405 b10t, cs_B,
406 buff_0,
407 y10t, inc_y );
408
409 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
410 // B00, a10t );
414 m_behind,
415 B00, rs_B, cs_B,
416 a10t, cs_A );
417
418 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
420 m_behind,
421 buff_m1h,
422 y10t, inc_y,
423 a10t, cs_A );
424
425 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
427 m_behind,
428 buff_m1,
429 a10t, cs_A,
430 b10t, cs_B,
431 buff_1,
432 alpha11 );
433
434 // FLA_Inv_scal_external( beta11, alpha11 );
435 // FLA_Inv_scal_external( beta11, alpha11 );
438
439 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
441 m_behind,
442 buff_m1h,
443 y10t, inc_y,
444 a10t, cs_A );
445
446 // FLA_Inv_scal_external( beta11, a10t );
448 m_behind,
449 beta11,
450 a10t, cs_A );
451
452 /*------------------------------------------------------------*/
453
454 }
455
456 return FLA_SUCCESS;
457}
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_axpyv.c:60
void bl1_zdot2s(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition bl1_dot2s.c:70
void bl1_zhemv(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_hemv.c:134
void bl1_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_invscalv.c:78
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177

References bl1_zaxpyv(), bl1_zdot2s(), bl1_zhemv(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().