libflame revision_anchor
Functions
FLA_Eig_gest_iu_opt_var1.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_iu_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_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_iu_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_iu_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_iu_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_iu_opc_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
284{
289 int i;
290
291 for ( i = 0; i < m_AB; ++i )
292 {
293 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
294 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
295 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
296
297 scomplex* y01 = buff_y + (0 )*inc_y;
298
299 scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
300 scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
301 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
302
303 int m_behind = i;
304
305 /*------------------------------------------------------------*/
306
307 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
308 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
311 m_behind,
312 buff_1,
313 A00, rs_A, cs_A,
314 b01, rs_B,
315 buff_0,
316 y01, inc_y );
317
318 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
319 // B00, a01 );
323 m_behind,
324 B00, rs_B, cs_B,
325 a01, rs_A );
326
327 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
329 m_behind,
330 buff_m1h,
331 y01, inc_y,
332 a01, rs_A );
333
334 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
336 m_behind,
337 buff_m1,
338 a01, rs_A,
339 b01, rs_B,
340 buff_1,
341 alpha11 );
342
343 // FLA_Inv_scal_external( beta11, alpha11 );
344 // FLA_Inv_scal_external( beta11, alpha11 );
347
348 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
350 m_behind,
351 buff_m1h,
352 y01, inc_y,
353 a01, rs_A );
354
355 // FLA_Inv_scal_external( beta11, a01 );
357 m_behind,
358 beta11,
359 a01, rs_A );
360
361 /*------------------------------------------------------------*/
362
363 }
364
365 return FLA_SUCCESS;
366}
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_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ 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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_opd_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
194{
195 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
196 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
199 int i;
200
201 for ( i = 0; i < m_AB; ++i )
202 {
203 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
204 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
205 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
206
207 double* y01 = buff_y + (0 )*inc_y;
208
209 double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
210 double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
211 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
212
213 int m_behind = i;
214
215 /*------------------------------------------------------------*/
216
217 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
218 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
221 m_behind,
222 buff_1,
223 A00, rs_A, cs_A,
224 b01, rs_B,
225 buff_0,
226 y01, inc_y );
227
228 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
229 // B00, a01 );
233 m_behind,
234 B00, rs_B, cs_B,
235 a01, rs_A );
236
237 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
239 m_behind,
240 buff_m1h,
241 y01, inc_y,
242 a01, rs_A );
243
244 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
246 m_behind,
247 buff_m1,
248 a01, rs_A,
249 b01, rs_B,
250 buff_1,
251 alpha11 );
252
253 // FLA_Inv_scal_external( beta11, alpha11 );
254 // FLA_Inv_scal_external( beta11, alpha11 );
257
258 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
260 m_behind,
261 buff_m1h,
262 y01, inc_y,
263 a01, rs_A );
264
265 // FLA_Inv_scal_external( beta11, a01 );
267 m_behind,
268 beta11,
269 a01, rs_A );
270
271 /*------------------------------------------------------------*/
272
273 }
274
275 return FLA_SUCCESS;
276}
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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_ops_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
104{
105 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
106 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
109 int i;
110
111 for ( i = 0; i < m_AB; ++i )
112 {
113 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
114 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
115 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
116
117 float* y01 = buff_y + (0 )*inc_y;
118
119 float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
120 float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
121 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
122
123 int m_behind = i;
124
125 /*------------------------------------------------------------*/
126
127 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
128 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
131 m_behind,
132 buff_1,
133 A00, rs_A, cs_A,
134 b01, rs_B,
135 buff_0,
136 y01, inc_y );
137
138 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
139 // B00, a01 );
143 m_behind,
144 B00, rs_B, cs_B,
145 a01, rs_A );
146
147 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
149 m_behind,
150 buff_m1h,
151 y01, inc_y,
152 a01, rs_A );
153
154 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
156 m_behind,
157 buff_m1,
158 a01, rs_A,
159 b01, rs_B,
160 buff_1,
161 alpha11 );
162
163 // FLA_Inv_scal_external( beta11, alpha11 );
164 // FLA_Inv_scal_external( beta11, alpha11 );
167
168 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
170 m_behind,
171 buff_m1h,
172 y01, inc_y,
173 a01, rs_A );
174
175 // FLA_Inv_scal_external( beta11, a01 );
177 m_behind,
178 beta11,
179 a01, rs_A );
180
181 /*------------------------------------------------------------*/
182
183 }
184
185 return FLA_SUCCESS;
186}
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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_opt_var1()

FLA_Error FLA_Eig_gest_iu_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 yL, yR;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33
35
36 switch ( datatype )
37 {
38 case FLA_FLOAT:
39 {
40 float* buff_A = FLA_FLOAT_PTR( A );
41 float* buff_y = FLA_FLOAT_PTR( yL );
42 float* buff_B = FLA_FLOAT_PTR( B );
43
47 buff_B, rs_B, cs_B );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_y = FLA_DOUBLE_PTR( yL );
56 double* buff_B = FLA_DOUBLE_PTR( B );
57
61 buff_B, rs_B, cs_B );
62
63 break;
64 }
65
66 case FLA_COMPLEX:
67 {
71
75 buff_B, rs_B, cs_B );
76
77 break;
78 }
79
81 {
85
89 buff_B, rs_B, cs_B );
90
91 break;
92 }
93 }
94
95 return FLA_SUCCESS;
96}
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:190
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:100
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:280
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:370
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
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_iu_opc_var1(), FLA_Eig_gest_iu_opd_var1(), FLA_Eig_gest_iu_ops_var1(), FLA_Eig_gest_iu_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Part_1x2(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_opz_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
374{
379 int i;
380
381 for ( i = 0; i < m_AB; ++i )
382 {
383 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
384 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
385 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
386
387 dcomplex* y01 = buff_y + (0 )*inc_y;
388
389 dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
390 dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
391 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
392
393 int m_behind = i;
394
395 /*------------------------------------------------------------*/
396
397 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
398 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
401 m_behind,
402 buff_1,
403 A00, rs_A, cs_A,
404 b01, rs_B,
405 buff_0,
406 y01, inc_y );
407
408 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
409 // B00, a01 );
413 m_behind,
414 B00, rs_B, cs_B,
415 a01, rs_A );
416
417 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
419 m_behind,
420 buff_m1h,
421 y01, inc_y,
422 a01, rs_A );
423
424 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
426 m_behind,
427 buff_m1,
428 a01, rs_A,
429 b01, rs_B,
430 buff_1,
431 alpha11 );
432
433 // FLA_Inv_scal_external( beta11, alpha11 );
434 // FLA_Inv_scal_external( beta11, alpha11 );
437
438 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
440 m_behind,
441 buff_m1h,
442 y01, inc_y,
443 a01, rs_A );
444
445 // FLA_Inv_scal_external( beta11, a01 );
447 m_behind,
448 beta11,
449 a01, rs_A );
450
451 /*------------------------------------------------------------*/
452
453 }
454
455 return FLA_SUCCESS;
456}
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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().