libflame  revision_anchor
Functions
FLA_Eig_gest_nl_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_nl_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_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_nl_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_nl_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_nl_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_nl_opc_var4()

FLA_Error FLA_Eig_gest_nl_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 
)

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

Referenced by FLA_Eig_gest_nl_opt_var4().

287 {
288  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
289  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
297  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
298  scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
299 
300  scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
301  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
302 
303  scomplex psi11;
304 
305  int m_ahead = m_AB - i - 1;
306  int m_behind = i;
307 
308  /*------------------------------------------------------------*/
309 
310  // FLA_Copy_external( alpha11, psi11 );
311  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
312  bl1_cmult3( buff_1h, alpha11, &psi11 );
313 
314  // FLA_Axpy_external( psi11, b10t, a10t );
316  m_behind,
317  &psi11,
318  b10t, cs_B,
319  a10t, cs_A );
320 
321  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
322  // FLA_ONE, a10t, b10t, A00 );
325  m_behind,
326  buff_1,
327  a10t, cs_A,
328  b10t, cs_B,
329  A00, rs_A, cs_A );
330 
331  // FLA_Axpy_external( psi11, b10t, a10t );
333  m_behind,
334  &psi11,
335  b10t, cs_B,
336  a10t, cs_A );
337 
338  // FLA_Scal_external( beta11, a10t );
340  m_behind,
341  beta11,
342  a10t, cs_A );
343 
344  // FLA_Scal_external( beta11, alpha11 );
345  // FLA_Scal_external( beta11, alpha11 );
346  bl1_cscals( beta11, alpha11 );
347  bl1_cscals( beta11, alpha11 );
348 
349  // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
352  m_ahead,
353  m_behind,
354  buff_1,
355  a21, rs_A,
356  b10t, cs_B,
357  A20, rs_A, cs_A );
358 
359  // FLA_Scal_external( beta11, a21 );
361  m_ahead,
362  beta11,
363  a21, rs_A );
364 
365  /*------------------------------------------------------------*/
366 
367  }
368 
369  return FLA_SUCCESS;
370 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: blis_type_defs.h:132
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

◆ FLA_Eig_gest_nl_opd_var4()

FLA_Error FLA_Eig_gest_nl_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 
)

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

Referenced by FLA_Eig_gest_nl_opt_var4().

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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
205  double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
206  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
207  double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
208 
209  double* b10t = buff_B + (0 )*cs_B + (i )*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, b10t, a10t );
225  m_behind,
226  &psi11,
227  b10t, cs_B,
228  a10t, cs_A );
229 
230  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
231  // FLA_ONE, a10t, b10t, A00 );
234  m_behind,
235  buff_1,
236  a10t, cs_A,
237  b10t, cs_B,
238  A00, rs_A, cs_A );
239 
240  // FLA_Axpy_external( psi11, b10t, a10t );
242  m_behind,
243  &psi11,
244  b10t, cs_B,
245  a10t, cs_A );
246 
247  // FLA_Scal_external( beta11, a10t );
249  m_behind,
250  beta11,
251  a10t, cs_A );
252 
253  // FLA_Scal_external( beta11, alpha11 );
254  // FLA_Scal_external( beta11, alpha11 );
255  bl1_dscals( beta11, alpha11 );
256  bl1_dscals( beta11, alpha11 );
257 
258  // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
261  m_ahead,
262  m_behind,
263  buff_1,
264  a21, rs_A,
265  b10t, cs_B,
266  A20, rs_A, cs_A );
267 
268  // FLA_Scal_external( beta11, a21 );
270  m_ahead,
271  beta11,
272  a21, rs_A );
273 
274  /*------------------------------------------------------------*/
275 
276  }
277 
278  return FLA_SUCCESS;
279 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21

◆ FLA_Eig_gest_nl_ops_var4()

FLA_Error FLA_Eig_gest_nl_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 
)

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

Referenced by FLA_Eig_gest_nl_opt_var4().

105 {
106  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
108  int i;
109 
110  for ( i = 0; i < m_AB; ++i )
111  {
112  float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
113  float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
114  float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
115  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
116  float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
117 
118  float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
119  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
120 
121  float psi11;
122 
123  int m_ahead = m_AB - i - 1;
124  int m_behind = i;
125 
126  /*------------------------------------------------------------*/
127 
128  // FLA_Copy_external( alpha11, psi11 );
129  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
130  bl1_smult3( buff_1h, alpha11, &psi11 );
131 
132  // FLA_Axpy_external( psi11, b10t, a10t );
134  m_behind,
135  &psi11,
136  b10t, cs_B,
137  a10t, cs_A );
138 
139  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
140  // FLA_ONE, a10t, b10t, A00 );
143  m_behind,
144  buff_1,
145  a10t, cs_A,
146  b10t, cs_B,
147  A00, rs_A, cs_A );
148 
149  // FLA_Axpy_external( psi11, b10t, a10t );
151  m_behind,
152  &psi11,
153  b10t, cs_B,
154  a10t, cs_A );
155 
156  // FLA_Scal_external( beta11, a10t );
158  m_behind,
159  beta11,
160  a10t, cs_A );
161 
162  // FLA_Scal_external( beta11, alpha11 );
163  // FLA_Scal_external( beta11, alpha11 );
164  bl1_sscals( beta11, alpha11 );
165  bl1_sscals( beta11, alpha11 );
166 
167  // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
170  m_ahead,
171  m_behind,
172  buff_1,
173  a21, rs_A,
174  b10t, cs_B,
175  A20, rs_A, cs_A );
176 
177  // FLA_Scal_external( beta11, a21 );
179  m_ahead,
180  beta11,
181  a21, rs_A );
182 
183  /*------------------------------------------------------------*/
184 
185  }
186 
187  return FLA_SUCCESS;
188 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_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_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

◆ FLA_Eig_gest_nl_opt_var4()

FLA_Error FLA_Eig_gest_nl_opt_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)

References FLA_Eig_gest_nl_opc_var4(), FLA_Eig_gest_nl_opd_var4(), FLA_Eig_gest_nl_ops_var4(), FLA_Eig_gest_nl_opz_var4(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), and FLA_Part_2x1().

Referenced by FLA_Eig_gest_nl().

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 
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_2x1( Y, &yT,
33  &yB, 1, FLA_TOP );
34 
35  inc_y = FLA_Obj_vector_inc( yT );
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 
46  buff_A, rs_A, cs_A,
47  buff_y, inc_y,
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 
60  buff_A, rs_A, cs_A,
61  buff_y, inc_y,
62  buff_B, rs_B, cs_B );
63 
64  break;
65  }
66 
67  case FLA_COMPLEX:
68  {
69  scomplex* buff_A = FLA_COMPLEX_PTR( A );
70  scomplex* buff_y = FLA_COMPLEX_PTR( yT );
71  scomplex* buff_B = FLA_COMPLEX_PTR( B );
72 
74  buff_A, rs_A, cs_A,
75  buff_y, inc_y,
76  buff_B, rs_B, cs_B );
77 
78  break;
79  }
80 
81  case FLA_DOUBLE_COMPLEX:
82  {
83  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
84  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yT );
85  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
86 
88  buff_A, rs_A, cs_A,
89  buff_y, inc_y,
90  buff_B, rs_B, cs_B );
91 
92  break;
93  }
94  }
95 
96  return FLA_SUCCESS;
97 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:101
Definition: FLA_type_defs.h:158
Definition: blis_type_defs.h:132
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:374
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
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:283
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition: FLA_Query.c:145
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:192

◆ FLA_Eig_gest_nl_opz_var4()

FLA_Error FLA_Eig_gest_nl_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 
)

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

Referenced by FLA_Eig_gest_nl_opt_var4().

378 {
379  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
380  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
381  int i;
382 
383  for ( i = 0; i < m_AB; ++i )
384  {
385  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
386  dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
387  dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
388  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
389  dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
390 
391  dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
392  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
393 
394  dcomplex psi11;
395 
396  int m_ahead = m_AB - i - 1;
397  int m_behind = i;
398 
399  /*------------------------------------------------------------*/
400 
401  // FLA_Copy_external( alpha11, psi11 );
402  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
403  bl1_zmult3( buff_1h, alpha11, &psi11 );
404 
405  // FLA_Axpy_external( psi11, b10t, a10t );
407  m_behind,
408  &psi11,
409  b10t, cs_B,
410  a10t, cs_A );
411 
412  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
413  // FLA_ONE, a10t, b10t, A00 );
416  m_behind,
417  buff_1,
418  a10t, cs_A,
419  b10t, cs_B,
420  A00, rs_A, cs_A );
421 
422  // FLA_Axpy_external( psi11, b10t, a10t );
424  m_behind,
425  &psi11,
426  b10t, cs_B,
427  a10t, cs_A );
428 
429  // FLA_Scal_external( beta11, a10t );
431  m_behind,
432  beta11,
433  a10t, cs_A );
434 
435  // FLA_Scal_external( beta11, alpha11 );
436  // FLA_Scal_external( beta11, alpha11 );
437  bl1_zscals( beta11, alpha11 );
438  bl1_zscals( beta11, alpha11 );
439 
440  // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
443  m_ahead,
444  m_behind,
445  buff_1,
446  a21, rs_A,
447  b10t, cs_B,
448  A20, rs_A, cs_A );
449 
450  // FLA_Scal_external( beta11, a21 );
452  m_ahead,
453  beta11,
454  a21, rs_A );
455 
456  /*------------------------------------------------------------*/
457 
458  }
459 
460  return FLA_SUCCESS;
461 }
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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
int i
Definition: bl1_axmyv2.c:145
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
Definition: blis_type_defs.h:62
Definition: blis_type_defs.h:137
bl1_zscals(beta, rho_yz)
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60