libflame  revision_anchor
Functions
FLA_Eig_gest_nu_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_nu_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_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_nu_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_nu_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_nu_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_nu_opc_var4()

FLA_Error FLA_Eig_gest_nu_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_1 = FLA_COMPLEX_PTR( FLA_ONE );
288  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
297  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
298 
299  scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
300  scomplex* beta11 = buff_B + (i )*cs_B + (i )*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_Copy_external( alpha11, psi11 );
310  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
311  bl1_cmult3( buff_1h, alpha11, &psi11 );
312 
313  // FLA_Axpy_external( psi11, b01, a01 );
315  m_behind,
316  &psi11,
317  b01, rs_B,
318  a01, rs_A );
319 
320  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
321  // FLA_ONE, a01, b01, A00 );
324  m_behind,
325  buff_1,
326  a01, rs_A,
327  b01, rs_B,
328  A00, rs_A, cs_A );
329 
330  // FLA_Axpy_external( psi11, b01, a01 );
332  m_behind,
333  &psi11,
334  b01, rs_B,
335  a01, rs_A );
336 
337  // FLA_Scal_external( beta11, a01 );
339  m_behind,
340  beta11,
341  a01, rs_A );
342 
343  // FLA_Scal_external( beta11, alpha11 );
344  bl1_cscals( beta11, alpha11 );
345  bl1_cscals( beta11, alpha11 );
346 
347  // FLA_Ger_external( FLA_ONE, b01, a12t, A02 );
350  m_behind,
351  m_ahead,
352  buff_1,
353  b01, rs_B,
354  a12t, cs_A,
355  A02, rs_A, cs_A );
356 
357  // FLA_Scal_external( beta11, a12t );
359  m_ahead,
360  beta11,
361  a12t, cs_A );
362 
363  /*------------------------------------------------------------*/
364 
365  }
366 
367  return FLA_SUCCESS;
368 }
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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_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_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
@ BLIS1_UPPER_TRIANGULAR
Definition: blis_type_defs.h:63
@ BLIS1_NO_CONJUGATE
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:133

References bl1_caxpyv(), bl1_cger(), bl1_cher2(), bl1_cscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var4().

◆ FLA_Eig_gest_nu_opd_var4()

FLA_Error FLA_Eig_gest_nu_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 
)
196 {
197  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
198  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
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  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
207  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
208 
209  double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
210  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
211 
212  double psi11;
213 
214  int m_ahead = m_AB - i - 1;
215  int m_behind = i;
216 
217  /*------------------------------------------------------------*/
218 
219  // FLA_Copy_external( alpha11, psi11 );
220  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
221  bl1_dmult3( buff_1h, alpha11, &psi11 );
222 
223  // FLA_Axpy_external( psi11, b01, a01 );
225  m_behind,
226  &psi11,
227  b01, rs_B,
228  a01, rs_A );
229 
230  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
231  // FLA_ONE, a01, b01, A00 );
234  m_behind,
235  buff_1,
236  a01, rs_A,
237  b01, rs_B,
238  A00, rs_A, cs_A );
239 
240  // FLA_Axpy_external( psi11, b01, a01 );
242  m_behind,
243  &psi11,
244  b01, rs_B,
245  a01, rs_A );
246 
247  // FLA_Scal_external( beta11, a01 );
249  m_behind,
250  beta11,
251  a01, rs_A );
252 
253  // FLA_Scal_external( beta11, alpha11 );
254  bl1_dscals( beta11, alpha11 );
255  bl1_dscals( beta11, alpha11 );
256 
257  // FLA_Ger_external( FLA_ONE, b01, a12t, A02 );
260  m_behind,
261  m_ahead,
262  buff_1,
263  b01, rs_B,
264  a12t, cs_A,
265  A02, rs_A, cs_A );
266 
267  // FLA_Scal_external( beta11, a12t );
269  m_ahead,
270  beta11,
271  a12t, cs_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_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24

References bl1_daxpyv(), bl1_dger(), bl1_dher2(), bl1_dscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var4().

◆ FLA_Eig_gest_nu_ops_var4()

FLA_Error FLA_Eig_gest_nu_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 
)
106 {
107  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
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  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
117  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
118 
119  float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
120  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
121 
122  float psi11;
123 
124  int m_ahead = m_AB - i - 1;
125  int m_behind = i;
126 
127  /*------------------------------------------------------------*/
128 
129  // FLA_Copy_external( alpha11, psi11 );
130  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
131  bl1_smult3( buff_1h, alpha11, &psi11 );
132 
133  // FLA_Axpy_external( psi11, b01, a01 );
135  m_behind,
136  &psi11,
137  b01, rs_B,
138  a01, rs_A );
139 
140  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
141  // FLA_ONE, a01, b01, A00 );
144  m_behind,
145  buff_1,
146  a01, rs_A,
147  b01, rs_B,
148  A00, rs_A, cs_A );
149 
150  // FLA_Axpy_external( psi11, b01, a01 );
152  m_behind,
153  &psi11,
154  b01, rs_B,
155  a01, rs_A );
156 
157  // FLA_Scal_external( beta11, a01 );
159  m_behind,
160  beta11,
161  a01, rs_A );
162 
163  // FLA_Scal_external( beta11, alpha11 );
164  bl1_sscals( beta11, alpha11 );
165  bl1_sscals( beta11, alpha11 );
166 
167  // FLA_Ger_external( FLA_ONE, b01, a12t, A02 );
170  m_behind,
171  m_ahead,
172  buff_1,
173  b01, rs_B,
174  a12t, cs_A,
175  A02, rs_A, cs_A );
176 
177  // FLA_Scal_external( beta11, a12t );
179  m_ahead,
180  beta11,
181  a12t, cs_A );
182 
183  /*------------------------------------------------------------*/
184 
185  }
186 
187  return FLA_SUCCESS;
188 }
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_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13

References bl1_saxpyv(), bl1_sger(), bl1_sher2(), bl1_sscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var4().

◆ FLA_Eig_gest_nu_opt_var4()

FLA_Error FLA_Eig_gest_nu_opt_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
16 {
17  FLA_Datatype datatype;
18  int m_AB;
19  int rs_A, cs_A;
20  int rs_B, cs_B;
21  int inc_y;
22  FLA_Obj yL, yR;
23 
24  datatype = FLA_Obj_datatype( A );
25 
26  m_AB = FLA_Obj_length( A );
27 
28  rs_A = FLA_Obj_row_stride( A );
29  cs_A = FLA_Obj_col_stride( A );
30 
31  rs_B = FLA_Obj_row_stride( B );
32  cs_B = FLA_Obj_col_stride( B );
33 
34  FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
35 
36  inc_y = FLA_Obj_vector_inc( yL );
37 
38  switch ( datatype )
39  {
40  case FLA_FLOAT:
41  {
42  float* buff_A = FLA_FLOAT_PTR( A );
43  float* buff_y = FLA_FLOAT_PTR( yL );
44  float* buff_B = FLA_FLOAT_PTR( B );
45 
47  buff_A, rs_A, cs_A,
48  buff_y, inc_y,
49  buff_B, rs_B, cs_B );
50 
51  break;
52  }
53 
54  case FLA_DOUBLE:
55  {
56  double* buff_A = FLA_DOUBLE_PTR( A );
57  double* buff_y = FLA_DOUBLE_PTR( yL );
58  double* buff_B = FLA_DOUBLE_PTR( B );
59 
61  buff_A, rs_A, cs_A,
62  buff_y, inc_y,
63  buff_B, rs_B, cs_B );
64 
65  break;
66  }
67 
68  case FLA_COMPLEX:
69  {
70  scomplex* buff_A = FLA_COMPLEX_PTR( A );
71  scomplex* buff_y = FLA_COMPLEX_PTR( yL );
72  scomplex* buff_B = FLA_COMPLEX_PTR( B );
73 
75  buff_A, rs_A, cs_A,
76  buff_y, inc_y,
77  buff_B, rs_B, cs_B );
78 
79  break;
80  }
81 
82  case FLA_DOUBLE_COMPLEX:
83  {
84  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
85  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yL );
86  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
87 
89  buff_A, rs_A, cs_A,
90  buff_y, inc_y,
91  buff_B, rs_B, cs_B );
92 
93  break;
94  }
95  }
96 
97  return FLA_SUCCESS;
98 }
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var4.c:372
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var4.c:192
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var4.c:282
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var4.c:102
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_nu_opc_var4(), FLA_Eig_gest_nu_opd_var4(), FLA_Eig_gest_nu_ops_var4(), FLA_Eig_gest_nu_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_nu().

◆ FLA_Eig_gest_nu_opz_var4()

FLA_Error FLA_Eig_gest_nu_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 
)
376 {
377  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
378  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
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  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
387  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
388 
389  dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
390  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
391 
392  dcomplex psi11;
393 
394  int m_ahead = m_AB - i - 1;
395  int m_behind = i;
396 
397  /*------------------------------------------------------------*/
398 
399  // FLA_Copy_external( alpha11, psi11 );
400  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
401  bl1_zmult3( buff_1h, alpha11, &psi11 );
402 
403  // FLA_Axpy_external( psi11, b01, a01 );
405  m_behind,
406  &psi11,
407  b01, rs_B,
408  a01, rs_A );
409 
410  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
411  // FLA_ONE, a01, b01, A00 );
414  m_behind,
415  buff_1,
416  a01, rs_A,
417  b01, rs_B,
418  A00, rs_A, cs_A );
419 
420  // FLA_Axpy_external( psi11, b01, a01 );
422  m_behind,
423  &psi11,
424  b01, rs_B,
425  a01, rs_A );
426 
427  // FLA_Scal_external( beta11, a01 );
429  m_behind,
430  beta11,
431  a01, rs_A );
432 
433  // FLA_Scal_external( beta11, alpha11 );
434  bl1_zscals( beta11, alpha11 );
435  bl1_zscals( beta11, alpha11 );
436 
437  // FLA_Ger_external( FLA_ONE, b01, a12t, A02 );
440  m_behind,
441  m_ahead,
442  buff_1,
443  b01, rs_B,
444  a12t, cs_A,
445  A02, rs_A, cs_A );
446 
447  // FLA_Scal_external( beta11, a12t );
449  m_ahead,
450  beta11,
451  a12t, cs_A );
452 
453  /*------------------------------------------------------------*/
454 
455  }
456 
457  return FLA_SUCCESS;
458 }
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60
bl1_zscals(beta, rho_yz)
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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72

References bl1_zaxpyv(), bl1_zger(), bl1_zher2(), bl1_zscals(), bl1_zscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var4().