libflame  revision_anchor
Functions
FLA_Eig_gest_nl_opt_var5.c File Reference

(r)

Functions

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

FLA_Error FLA_Eig_gest_nl_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 
)
269 {
270  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
271  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
272  int i;
273 
274  for ( i = 0; i < m_AB; ++i )
275  {
276  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
277  scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
278  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
279 
280  scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
281  scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
282  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
283 
284  scomplex psi11;
285 
286  int m_behind = i;
287 
288  /*------------------------------------------------------------*/
289 
290  // FLA_Copy_external( alpha11, psi11 );
291  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
292  bl1_cmult3( buff_1h, alpha11, &psi11 );
293 
294  // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
295  // B00, a10t );
299  m_behind,
300  B00, rs_B, cs_B,
301  a10t, cs_A );
302 
303  // FLA_Axpy_external( psi11, b10t, a10t );
305  m_behind,
306  &psi11,
307  b10t, cs_B,
308  a10t, cs_A );
309 
310  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
311  // FLA_ONE, a10t, b10t, A00 );
314  m_behind,
315  buff_1,
316  a10t, cs_A,
317  b10t, cs_B,
318  A00, rs_A, cs_A );
319 
320  // FLA_Axpy_external( psi11, b10t, a10t );
322  m_behind,
323  &psi11,
324  b10t, cs_B,
325  a10t, cs_A );
326 
327  // FLA_Scal_external( beta11, a10t );
329  m_behind,
330  beta11,
331  a10t, cs_A );
332 
333  // FLA_Scal_external( beta11, alpha11 );
334  // FLA_Scal_external( beta11, alpha11 );
335  bl1_cscals( beta11, alpha11 );
336  bl1_cscals( beta11, alpha11 );
337 
338  /*------------------------------------------------------------*/
339 
340  }
341 
342  return FLA_SUCCESS;
343 }
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_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
void bl1_ctrmv(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_trmv.c:99
@ BLIS1_LOWER_TRIANGULAR
Definition: blis_type_defs.h:62
@ BLIS1_NONUNIT_DIAG
Definition: blis_type_defs.h:74
@ BLIS1_TRANSPOSE
Definition: blis_type_defs.h:55
@ 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_cher2(), bl1_cscalv(), bl1_ctrmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_opd_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
187 {
188  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
189  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
190  int i;
191 
192  for ( i = 0; i < m_AB; ++i )
193  {
194  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
195  double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
196  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
197 
198  double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
199  double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
200  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
201 
202  double psi11;
203 
204  int m_behind = i;
205 
206  /*------------------------------------------------------------*/
207 
208  // FLA_Copy_external( alpha11, psi11 );
209  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
210  bl1_dmult3( buff_1h, alpha11, &psi11 );
211 
212  // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
213  // B00, a10t );
217  m_behind,
218  B00, rs_B, cs_B,
219  a10t, cs_A );
220 
221  // FLA_Axpy_external( psi11, b10t, a10t );
223  m_behind,
224  &psi11,
225  b10t, cs_B,
226  a10t, cs_A );
227 
228  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
229  // FLA_ONE, a10t, b10t, A00 );
232  m_behind,
233  buff_1,
234  a10t, cs_A,
235  b10t, cs_B,
236  A00, rs_A, cs_A );
237 
238  // FLA_Axpy_external( psi11, b10t, a10t );
240  m_behind,
241  &psi11,
242  b10t, cs_B,
243  a10t, cs_A );
244 
245  // FLA_Scal_external( beta11, a10t );
247  m_behind,
248  beta11,
249  a10t, cs_A );
250 
251  // FLA_Scal_external( beta11, alpha11 );
252  // FLA_Scal_external( beta11, alpha11 );
253  bl1_dscals( beta11, alpha11 );
254  bl1_dscals( beta11, alpha11 );
255 
256  /*------------------------------------------------------------*/
257 
258  }
259 
260  return FLA_SUCCESS;
261 }
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_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
void bl1_dtrmv(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_trmv.c:56

References bl1_daxpyv(), bl1_dher2(), bl1_dscalv(), bl1_dtrmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_ops_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
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* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
115 
116  float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
117  float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
118  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
119 
120  float psi11;
121 
122  int m_behind = i;
123 
124  /*------------------------------------------------------------*/
125 
126  // FLA_Copy_external( alpha11, psi11 );
127  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
128  bl1_smult3( buff_1h, alpha11, &psi11 );
129 
130  // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
131  // B00, a10t );
135  m_behind,
136  B00, rs_B, cs_B,
137  a10t, cs_A );
138 
139  // FLA_Axpy_external( psi11, b10t, a10t );
141  m_behind,
142  &psi11,
143  b10t, cs_B,
144  a10t, cs_A );
145 
146  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
147  // FLA_ONE, a10t, b10t, A00 );
150  m_behind,
151  buff_1,
152  a10t, cs_A,
153  b10t, cs_B,
154  A00, rs_A, cs_A );
155 
156  // FLA_Axpy_external( psi11, b10t, a10t );
158  m_behind,
159  &psi11,
160  b10t, cs_B,
161  a10t, cs_A );
162 
163  // FLA_Scal_external( beta11, a10t );
165  m_behind,
166  beta11,
167  a10t, cs_A );
168 
169  // FLA_Scal_external( beta11, alpha11 );
170  // FLA_Scal_external( beta11, alpha11 );
171  bl1_sscals( beta11, alpha11 );
172  bl1_sscals( beta11, alpha11 );
173 
174  /*------------------------------------------------------------*/
175 
176  }
177 
178  return FLA_SUCCESS;
179 }
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_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
void bl1_strmv(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_trmv.c:13

References bl1_saxpyv(), bl1_sher2(), bl1_sscalv(), bl1_strmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_opt_var5()

FLA_Error FLA_Eig_gest_nl_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 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 }
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:265
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:183
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:101
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:347
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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
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_nl_opc_var5(), FLA_Eig_gest_nl_opd_var5(), FLA_Eig_gest_nl_ops_var5(), FLA_Eig_gest_nl_opz_var5(), 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().

◆ FLA_Eig_gest_nl_opz_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
351 {
352  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
353  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
354  int i;
355 
356  for ( i = 0; i < m_AB; ++i )
357  {
358  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
359  dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
360  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
361 
362  dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
363  dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
364  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
365 
366  dcomplex psi11;
367 
368  int m_behind = i;
369 
370  /*------------------------------------------------------------*/
371 
372  // FLA_Copy_external( alpha11, psi11 );
373  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
374  bl1_zmult3( buff_1h, alpha11, &psi11 );
375 
376  // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
377  // B00, a10t );
381  m_behind,
382  B00, rs_B, cs_B,
383  a10t, cs_A );
384 
385  // FLA_Axpy_external( psi11, b10t, a10t );
387  m_behind,
388  &psi11,
389  b10t, cs_B,
390  a10t, cs_A );
391 
392  // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
393  // FLA_ONE, a10t, b10t, A00 );
396  m_behind,
397  buff_1,
398  a10t, cs_A,
399  b10t, cs_B,
400  A00, rs_A, cs_A );
401 
402  // FLA_Axpy_external( psi11, b10t, a10t );
404  m_behind,
405  &psi11,
406  b10t, cs_B,
407  a10t, cs_A );
408 
409  // FLA_Scal_external( beta11, a10t );
411  m_behind,
412  beta11,
413  a10t, cs_A );
414 
415  // FLA_Scal_external( beta11, alpha11 );
416  // FLA_Scal_external( beta11, alpha11 );
417  bl1_zscals( beta11, alpha11 );
418  bl1_zscals( beta11, alpha11 );
419 
420  /*------------------------------------------------------------*/
421 
422  }
423 
424  return FLA_SUCCESS;
425 }
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_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
void bl1_ztrmv(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_trmv.c:177

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

Referenced by FLA_Eig_gest_nl_opt_var5().