libflame  revision_anchor
Functions
FLA_Eig_gest_il_opt_var5.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_il_opt_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_ops_var5 (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_var5 (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_var5 (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_var5 (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_var5()

FLA_Error FLA_Eig_gest_il_opc_var5 ( 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 
)
268 {
269  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
270  scomplex* buff_m1h = FLA_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
271  int i;
272 
273  for ( i = 0; i < m_AB; ++i )
274  {
275  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
276  scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
277  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
278 
279  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
280  scomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
281  scomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
282 
283  scomplex psi11;
284 
285  int m_ahead = m_AB - i - 1;
286 
287  /*------------------------------------------------------------*/
288 
289  // FLA_Inv_scal_external( beta11, alpha11 );
290  // FLA_Inv_scal_external( beta11, alpha11 );
291  bl1_cinvscals( beta11, alpha11 );
292  bl1_cinvscals( beta11, alpha11 );
293 
294  // FLA_Copy_external( alpha11, psi11 );
295  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
296  bl1_cmult3( buff_m1h, alpha11, &psi11 );
297 
298  // FLA_Inv_scal_external( beta11, a21 );
300  m_ahead,
301  beta11,
302  a21, rs_A );
303 
304  // FLA_Axpy_external( psi11, b21, a21 );
306  m_ahead,
307  &psi11,
308  b21, rs_B,
309  a21, rs_A );
310 
311  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
312  // FLA_MINUS_ONE, a21, b21, A22 );
315  m_ahead,
316  buff_m1,
317  a21, rs_A,
318  b21, rs_B,
319  A22, rs_A, cs_A );
320 
321  // FLA_Axpy_external( psi11, b21, a21 );
323  m_ahead,
324  &psi11,
325  b21, rs_B,
326  a21, rs_A );
327 
328  // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
329  // B22, a21 );
333  m_ahead,
334  B22, rs_B, cs_B,
335  a21, rs_A );
336 
337  /*------------------------------------------------------------*/
338 
339  }
340 
341  return FLA_SUCCESS;
342 }
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_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
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_NO_TRANSPOSE
Definition: blis_type_defs.h:54
@ BLIS1_NO_CONJUGATE
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:133

References bl1_caxpyv(), bl1_cher2(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_opd_var5()

FLA_Error FLA_Eig_gest_il_opd_var5 ( 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 
)
186 {
187  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
188  double* buff_m1h = FLA_DOUBLE_PTR( FLA_MINUS_ONE_HALF );
189  int i;
190 
191  for ( i = 0; i < m_AB; ++i )
192  {
193  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
194  double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
195  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
196 
197  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
198  double* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
199  double* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
200 
201  double psi11;
202 
203  int m_ahead = m_AB - i - 1;
204 
205  /*------------------------------------------------------------*/
206 
207  // FLA_Inv_scal_external( beta11, alpha11 );
208  // FLA_Inv_scal_external( beta11, alpha11 );
209  bl1_dinvscals( beta11, alpha11 );
210  bl1_dinvscals( beta11, alpha11 );
211 
212  // FLA_Copy_external( alpha11, psi11 );
213  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
214  bl1_dmult3( buff_m1h, alpha11, &psi11 );
215 
216  // FLA_Inv_scal_external( beta11, a21 );
218  m_ahead,
219  beta11,
220  a21, rs_A );
221 
222  // FLA_Axpy_external( psi11, b21, a21 );
224  m_ahead,
225  &psi11,
226  b21, rs_B,
227  a21, rs_A );
228 
229  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
230  // FLA_MINUS_ONE, a21, b21, A22 );
233  m_ahead,
234  buff_m1,
235  a21, rs_A,
236  b21, rs_B,
237  A22, rs_A, cs_A );
238 
239  // FLA_Axpy_external( psi11, b21, a21 );
241  m_ahead,
242  &psi11,
243  b21, rs_B,
244  a21, rs_A );
245 
246  // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
247  // B22, a21 );
251  m_ahead,
252  B22, rs_B, cs_B,
253  a21, rs_A );
254 
255  /*------------------------------------------------------------*/
256 
257  }
258 
259  return FLA_SUCCESS;
260 }
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_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
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_dher2(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_ops_var5()

FLA_Error FLA_Eig_gest_il_ops_var5 ( 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* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
112  float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
113  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
114 
115  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
116  float* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
117  float* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
118 
119  float psi11;
120 
121  int m_ahead = m_AB - i - 1;
122 
123  /*------------------------------------------------------------*/
124 
125  // FLA_Inv_scal_external( beta11, alpha11 );
126  // FLA_Inv_scal_external( beta11, alpha11 );
127  bl1_sinvscals( beta11, alpha11 );
128  bl1_sinvscals( beta11, alpha11 );
129 
130  // FLA_Copy_external( alpha11, psi11 );
131  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
132  bl1_smult3( buff_m1h, alpha11, &psi11 );
133 
134  // FLA_Inv_scal_external( beta11, a21 );
136  m_ahead,
137  beta11,
138  a21, rs_A );
139 
140  // FLA_Axpy_external( psi11, b21, a21 );
142  m_ahead,
143  &psi11,
144  b21, rs_B,
145  a21, rs_A );
146 
147  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
148  // FLA_MINUS_ONE, a21, b21, A22 );
151  m_ahead,
152  buff_m1,
153  a21, rs_A,
154  b21, rs_B,
155  A22, rs_A, cs_A );
156 
157  // FLA_Axpy_external( psi11, b21, a21 );
159  m_ahead,
160  &psi11,
161  b21, rs_B,
162  a21, rs_A );
163 
164  // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
165  // B22, a21 );
169  m_ahead,
170  B22, rs_B, cs_B,
171  a21, rs_A );
172 
173  /*------------------------------------------------------------*/
174 
175  }
176 
177  return FLA_SUCCESS;
178 }
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_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
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_sher2(), bl1_sinvscalv(), bl1_strsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_opt_var5()

FLA_Error FLA_Eig_gest_il_opt_var5 ( 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_ops_var5(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_var5.c:100
FLA_Error FLA_Eig_gest_il_opc_var5(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_var5.c:264
FLA_Error FLA_Eig_gest_il_opd_var5(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_var5.c:182
FLA_Error FLA_Eig_gest_il_opz_var5(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_var5.c:346
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_var5(), FLA_Eig_gest_il_opd_var5(), FLA_Eig_gest_il_ops_var5(), FLA_Eig_gest_il_opz_var5(), 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_var5()

FLA_Error FLA_Eig_gest_il_opz_var5 ( 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 
)
350 {
351  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
352  dcomplex* buff_m1h = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE_HALF );
353  int i;
354 
355  for ( i = 0; i < m_AB; ++i )
356  {
357  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
358  dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
359  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
360 
361  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
362  dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
363  dcomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
364 
365  dcomplex psi11;
366 
367  int m_ahead = m_AB - i - 1;
368 
369  /*------------------------------------------------------------*/
370 
371  // FLA_Inv_scal_external( beta11, alpha11 );
372  // FLA_Inv_scal_external( beta11, alpha11 );
373  bl1_zinvscals( beta11, alpha11 );
374  bl1_zinvscals( beta11, alpha11 );
375 
376  // FLA_Copy_external( alpha11, psi11 );
377  // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
378  bl1_zmult3( buff_m1h, alpha11, &psi11 );
379 
380  // FLA_Inv_scal_external( beta11, a21 );
382  m_ahead,
383  beta11,
384  a21, rs_A );
385 
386  // FLA_Axpy_external( psi11, b21, a21 );
388  m_ahead,
389  &psi11,
390  b21, rs_B,
391  a21, rs_A );
392 
393  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
394  // FLA_MINUS_ONE, a21, b21, A22 );
397  m_ahead,
398  buff_m1,
399  a21, rs_A,
400  b21, rs_B,
401  A22, rs_A, cs_A );
402 
403  // FLA_Axpy_external( psi11, b21, a21 );
405  m_ahead,
406  &psi11,
407  b21, rs_B,
408  a21, rs_A );
409 
410  // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
411  // B22, a21 );
415  m_ahead,
416  B22, rs_B, cs_B,
417  a21, rs_A );
418 
419  /*------------------------------------------------------------*/
420 
421  }
422 
423  return FLA_SUCCESS;
424 }
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_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
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_zher2(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().