libflame  revision_anchor
Functions
FLA_Eig_gest_il_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_il_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_ops_var4 (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_var4 (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_var4 (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_var4 (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_var4()

FLA_Error FLA_Eig_gest_il_opc_var4 ( 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 
)
286 {
287  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
288  scomplex* buff_m1h = FLA_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
289  int i;
290 
291  for ( i = 0; i < m_AB; ++i )
292  {
293  scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
294  scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
295  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
296  scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
297  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
298 
299  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
300  scomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
301 
302  scomplex psi11;
303 
304  int m_ahead = m_AB - i - 1;
305  int m_behind = i;
306 
307  /*------------------------------------------------------------*/
308 
309  // FLA_Inv_scal_external( beta11, a10t );
311  m_behind,
312  beta11,
313  a10t, cs_A );
314 
315  // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
318  m_ahead,
319  m_behind,
320  buff_m1,
321  b21, rs_B,
322  a10t, cs_A,
323  A20, rs_A, cs_A );
324 
325  // FLA_Inv_scal_external( beta11, alpha11 );
326  // FLA_Inv_scal_external( beta11, alpha11 );
327  bl1_cinvscals( beta11, alpha11 );
328  bl1_cinvscals( beta11, alpha11 );
329 
330  // FLA_Copy_external( alpha11, psi11 );
331  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
332  bl1_cmult3( buff_m1h, alpha11, &psi11 );
333 
334  // FLA_Inv_scal_external( beta11, a21 );
336  m_ahead,
337  beta11,
338  a21, rs_A );
339 
340  // FLA_Axpy_external( psi11, b21, a21 );
342  m_ahead,
343  &psi11,
344  b21, rs_B,
345  a21, rs_A );
346 
347  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
348  // FLA_MINUS_ONE, a21, b21, A22 );
351  m_ahead,
352  buff_m1,
353  a21, rs_A,
354  b21, rs_B,
355  A22, rs_A, cs_A );
356 
357  // FLA_Axpy_external( psi11, b21, a21 );
359  m_ahead,
360  &psi11,
361  b21, rs_B,
362  a21, rs_A );
363 
364  /*------------------------------------------------------------*/
365 
366  }
367 
368  return FLA_SUCCESS;
369 }
FLA_Obj FLA_MINUS_ONE_HALF
Definition: FLA_Init.c:21
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
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_cger(conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:111
void bl1_cher2(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition: bl1_her2.c:33
void bl1_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_invscalv.c:52
@ BLIS1_LOWER_TRIANGULAR
Definition: blis_type_defs.h:62
@ BLIS1_NO_CONJUGATE
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:133

References bl1_caxpyv(), bl1_cger(), bl1_cher2(), bl1_cinvscalv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_opd_var4()

FLA_Error FLA_Eig_gest_il_opd_var4 ( 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_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
197  double* buff_m1h = FLA_DOUBLE_PTR( FLA_MINUS_ONE_HALF );
198  int i;
199 
200  for ( i = 0; i < m_AB; ++i )
201  {
202  double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
203  double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
204  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
205  double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
206  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
207 
208  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
209  double* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
210 
211  double psi11;
212 
213  int m_ahead = m_AB - i - 1;
214  int m_behind = i;
215 
216  /*------------------------------------------------------------*/
217 
218  // FLA_Inv_scal_external( beta11, a10t );
220  m_behind,
221  beta11,
222  a10t, cs_A );
223 
224  // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
227  m_ahead,
228  m_behind,
229  buff_m1,
230  b21, rs_B,
231  a10t, cs_A,
232  A20, rs_A, cs_A );
233 
234  // FLA_Inv_scal_external( beta11, alpha11 );
235  // FLA_Inv_scal_external( beta11, alpha11 );
236  bl1_dinvscals( beta11, alpha11 );
237  bl1_dinvscals( beta11, alpha11 );
238 
239  // FLA_Copy_external( alpha11, psi11 );
240  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
241  bl1_dmult3( buff_m1h, alpha11, &psi11 );
242 
243  // FLA_Inv_scal_external( beta11, a21 );
245  m_ahead,
246  beta11,
247  a21, rs_A );
248 
249  // FLA_Axpy_external( psi11, b21, a21 );
251  m_ahead,
252  &psi11,
253  b21, rs_B,
254  a21, rs_A );
255 
256  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
257  // FLA_MINUS_ONE, a21, b21, A22 );
260  m_ahead,
261  buff_m1,
262  a21, rs_A,
263  b21, rs_B,
264  A22, rs_A, cs_A );
265 
266  // FLA_Axpy_external( psi11, b21, a21 );
268  m_ahead,
269  &psi11,
270  b21, rs_B,
271  a21, rs_A );
272 
273  /*------------------------------------------------------------*/
274 
275  }
276 
277  return FLA_SUCCESS;
278 }
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_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition: bl1_ger.c:62
void bl1_dher2(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition: bl1_her2.c:23
void bl1_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_invscalv.c:26

References bl1_daxpyv(), bl1_dger(), bl1_dher2(), bl1_dinvscalv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_ops_var4()

FLA_Error FLA_Eig_gest_il_ops_var4 ( 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_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
106  float* buff_m1h = FLA_FLOAT_PTR( FLA_MINUS_ONE_HALF );
107  int i;
108 
109  for ( i = 0; i < m_AB; ++i )
110  {
111  float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
112  float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
113  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
114  float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
115  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
116 
117  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
118  float* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
119 
120  float psi11;
121 
122  int m_ahead = m_AB - i - 1;
123  int m_behind = i;
124 
125  /*------------------------------------------------------------*/
126 
127  // FLA_Inv_scal_external( beta11, a10t );
129  m_behind,
130  beta11,
131  a10t, cs_A );
132 
133  // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
136  m_ahead,
137  m_behind,
138  buff_m1,
139  b21, rs_B,
140  a10t, cs_A,
141  A20, rs_A, cs_A );
142 
143  // FLA_Inv_scal_external( beta11, alpha11 );
144  // FLA_Inv_scal_external( beta11, alpha11 );
145  bl1_sinvscals( beta11, alpha11 );
146  bl1_sinvscals( beta11, alpha11 );
147 
148  // FLA_Copy_external( alpha11, psi11 );
149  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
150  bl1_smult3( buff_m1h, alpha11, &psi11 );
151 
152  // FLA_Inv_scal_external( beta11, a21 );
154  m_ahead,
155  beta11,
156  a21, rs_A );
157 
158  // FLA_Axpy_external( psi11, b21, a21 );
160  m_ahead,
161  &psi11,
162  b21, rs_B,
163  a21, rs_A );
164 
165  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
166  // FLA_MINUS_ONE, a21, b21, A22 );
169  m_ahead,
170  buff_m1,
171  a21, rs_A,
172  b21, rs_B,
173  A22, rs_A, cs_A );
174 
175  // FLA_Axpy_external( psi11, b21, a21 );
177  m_ahead,
178  &psi11,
179  b21, rs_B,
180  a21, rs_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_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition: bl1_ger.c:13
void bl1_sher2(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition: bl1_her2.c:13
void bl1_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_invscalv.c:13

References bl1_saxpyv(), bl1_sger(), bl1_sher2(), bl1_sinvscalv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_opt_var4()

FLA_Error FLA_Eig_gest_il_opt_var4 ( 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 
24  m_AB = FLA_Obj_length( A );
25 
26  rs_A = FLA_Obj_row_stride( A );
27  cs_A = FLA_Obj_col_stride( A );
28 
29  rs_B = FLA_Obj_row_stride( B );
30  cs_B = FLA_Obj_col_stride( B );
31 
32  FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33 
34  inc_y = FLA_Obj_vector_inc( yL );
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 
45  buff_A, rs_A, cs_A,
46  buff_y, inc_y,
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 
59  buff_A, rs_A, cs_A,
60  buff_y, inc_y,
61  buff_B, rs_B, cs_B );
62 
63  break;
64  }
65 
66  case FLA_COMPLEX:
67  {
68  scomplex* buff_A = FLA_COMPLEX_PTR( A );
69  scomplex* buff_y = FLA_COMPLEX_PTR( yL );
70  scomplex* buff_B = FLA_COMPLEX_PTR( B );
71 
73  buff_A, rs_A, cs_A,
74  buff_y, inc_y,
75  buff_B, rs_B, cs_B );
76 
77  break;
78  }
79 
80  case FLA_DOUBLE_COMPLEX:
81  {
82  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
83  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yL );
84  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
85 
87  buff_A, rs_A, cs_A,
88  buff_y, inc_y,
89  buff_B, rs_B, cs_B );
90 
91  break;
92  }
93  }
94 
95  return FLA_SUCCESS;
96 }
FLA_Error FLA_Eig_gest_il_opz_var4(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_var4.c:373
FLA_Error FLA_Eig_gest_il_opc_var4(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_var4.c:282
FLA_Error FLA_Eig_gest_il_ops_var4(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_var4.c:100
FLA_Error FLA_Eig_gest_il_opd_var4(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_var4.c:191
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_il_opc_var4(), FLA_Eig_gest_il_opd_var4(), FLA_Eig_gest_il_ops_var4(), FLA_Eig_gest_il_opz_var4(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), and FLA_Part_1x2().

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_opz_var4()

FLA_Error FLA_Eig_gest_il_opz_var4 ( 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 
)
377 {
378  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
379  dcomplex* buff_m1h = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
380  int i;
381 
382  for ( i = 0; i < m_AB; ++i )
383  {
384  dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
385  dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
386  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
387  dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
388  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
389 
390  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
391  dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
392 
393  dcomplex psi11;
394 
395  int m_ahead = m_AB - i - 1;
396  int m_behind = i;
397 
398  /*------------------------------------------------------------*/
399 
400  // FLA_Inv_scal_external( beta11, a10t );
402  m_behind,
403  beta11,
404  a10t, cs_A );
405 
406  // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
409  m_ahead,
410  m_behind,
411  buff_m1,
412  b21, rs_B,
413  a10t, cs_A,
414  A20, rs_A, cs_A );
415 
416  // FLA_Inv_scal_external( beta11, alpha11 );
417  // FLA_Inv_scal_external( beta11, alpha11 );
418  bl1_zinvscals( beta11, alpha11 );
419  bl1_zinvscals( beta11, alpha11 );
420 
421  // FLA_Copy_external( alpha11, psi11 );
422  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
423  bl1_zmult3( buff_m1h, alpha11, &psi11 );
424 
425  // FLA_Inv_scal_external( beta11, a21 );
427  m_ahead,
428  beta11,
429  a21, rs_A );
430 
431  // FLA_Axpy_external( psi11, b21, a21 );
433  m_ahead,
434  &psi11,
435  b21, rs_B,
436  a21, rs_A );
437 
438  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
439  // FLA_MINUS_ONE, a21, b21, A22 );
442  m_ahead,
443  buff_m1,
444  a21, rs_A,
445  b21, rs_B,
446  A22, rs_A, cs_A );
447 
448  // FLA_Axpy_external( psi11, b21, a21 );
450  m_ahead,
451  &psi11,
452  b21, rs_B,
453  a21, rs_A );
454 
455  /*------------------------------------------------------------*/
456 
457  }
458 
459  return FLA_SUCCESS;
460 }
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_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:194
void bl1_zher2(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_her2.c:121
void bl1_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_invscalv.c:78

References bl1_zaxpyv(), bl1_zger(), bl1_zher2(), bl1_zinvscalv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().