libflame  revision_anchor
Functions
FLA_Eig_gest_nu_opt_var5.c File Reference

(r)

Functions

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

FLA_Error FLA_Eig_gest_nu_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 
)
270 {
271  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
272  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
273  int i;
274 
275  for ( i = 0; i < m_AB; ++i )
276  {
277  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
278  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
279  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
280 
281  scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
282  scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
283  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
284 
285  scomplex psi11;
286 
287  int m_behind = i;
288 
289  /*------------------------------------------------------------*/
290 
291  // FLA_Copy_external( alpha11, psi11 );
292  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
293  bl1_cmult3( buff_1h, alpha11, &psi11 );
294 
295  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
296  // B00, a01 );
300  m_behind,
301  B00, rs_B, cs_B,
302  a01, rs_A );
303 
304  // FLA_Axpy_external( psi11, b01, a01 );
306  m_behind,
307  &psi11,
308  b01, rs_B,
309  a01, rs_A );
310 
311  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
312  // FLA_ONE, a01, b01, A00 );
315  m_behind,
316  buff_1,
317  a01, rs_A,
318  b01, rs_B,
319  A00, rs_A, cs_A );
320 
321  // FLA_Axpy_external( psi11, b01, a01 );
323  m_behind,
324  &psi11,
325  b01, rs_B,
326  a01, rs_A );
327 
328  // FLA_Scal_external( beta11, a01 );
330  m_behind,
331  beta11,
332  a01, rs_A );
333 
334  // FLA_Scal_external( beta11, alpha11 );
335  // FLA_Scal_external( beta11, alpha11 );
336  bl1_cscals( beta11, alpha11 );
337  bl1_cscals( beta11, alpha11 );
338 
339  /*------------------------------------------------------------*/
340 
341  }
342 
343  return FLA_SUCCESS;
344 }
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_UPPER_TRIANGULAR
Definition: blis_type_defs.h:63
@ 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_cscalv(), bl1_ctrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var5().

◆ FLA_Eig_gest_nu_opd_var5()

FLA_Error FLA_Eig_gest_nu_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 
)
188 {
189  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
190  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
191  int i;
192 
193  for ( i = 0; i < m_AB; ++i )
194  {
195  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
196  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
197  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
198 
199  double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
200  double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
201  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
202 
203  double psi11;
204 
205  int m_behind = i;
206 
207  /*------------------------------------------------------------*/
208 
209  // FLA_Copy_external( alpha11, psi11 );
210  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
211  bl1_dmult3( buff_1h, alpha11, &psi11 );
212 
213  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
214  // B00, a01 );
218  m_behind,
219  B00, rs_B, cs_B,
220  a01, rs_A );
221 
222  // FLA_Axpy_external( psi11, b01, a01 );
224  m_behind,
225  &psi11,
226  b01, rs_B,
227  a01, rs_A );
228 
229  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
230  // FLA_ONE, a01, b01, A00 );
233  m_behind,
234  buff_1,
235  a01, rs_A,
236  b01, rs_B,
237  A00, rs_A, cs_A );
238 
239  // FLA_Axpy_external( psi11, b01, a01 );
241  m_behind,
242  &psi11,
243  b01, rs_B,
244  a01, rs_A );
245 
246  // FLA_Scal_external( beta11, a01 );
248  m_behind,
249  beta11,
250  a01, rs_A );
251 
252  // FLA_Scal_external( beta11, alpha11 );
253  // FLA_Scal_external( beta11, alpha11 );
254  bl1_dscals( beta11, alpha11 );
255  bl1_dscals( beta11, alpha11 );
256 
257  /*------------------------------------------------------------*/
258 
259  }
260 
261  return FLA_SUCCESS;
262 }
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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var5().

◆ FLA_Eig_gest_nu_ops_var5()

FLA_Error FLA_Eig_gest_nu_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 
)
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 
117  float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
118  float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
119  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
120 
121  float psi11;
122 
123  int m_behind = i;
124 
125  /*------------------------------------------------------------*/
126 
127  // FLA_Copy_external( alpha11, psi11 );
128  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
129  bl1_smult3( buff_1h, alpha11, &psi11 );
130 
131  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
132  // B00, a01 );
136  m_behind,
137  B00, rs_B, cs_B,
138  a01, rs_A );
139 
140  // FLA_Axpy_external( psi11, b01, a01 );
142  m_behind,
143  &psi11,
144  b01, rs_B,
145  a01, rs_A );
146 
147  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
148  // FLA_ONE, a01, b01, A00 );
151  m_behind,
152  buff_1,
153  a01, rs_A,
154  b01, rs_B,
155  A00, rs_A, cs_A );
156 
157  // FLA_Axpy_external( psi11, b01, a01 );
159  m_behind,
160  &psi11,
161  b01, rs_B,
162  a01, rs_A );
163 
164  // FLA_Scal_external( beta11, a01 );
166  m_behind,
167  beta11,
168  a01, rs_A );
169 
170  // FLA_Scal_external( beta11, alpha11 );
171  // FLA_Scal_external( beta11, alpha11 );
172  bl1_sscals( beta11, alpha11 );
173  bl1_sscals( beta11, alpha11 );
174 
175  /*------------------------------------------------------------*/
176 
177  }
178 
179  return FLA_SUCCESS;
180 }
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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var5().

◆ FLA_Eig_gest_nu_opt_var5()

FLA_Error FLA_Eig_gest_nu_opt_var5 ( 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_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_nu_opt_var5.c:348
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var5.c:184
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var5.c:102
FLA_Error FLA_Eig_gest_nu_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_nu_opt_var5.c:266
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_var5(), FLA_Eig_gest_nu_opd_var5(), FLA_Eig_gest_nu_ops_var5(), FLA_Eig_gest_nu_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_nu().

◆ FLA_Eig_gest_nu_opz_var5()

FLA_Error FLA_Eig_gest_nu_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 
)
352 {
353  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
354  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
355  int i;
356 
357  for ( i = 0; i < m_AB; ++i )
358  {
359  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
360  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
361  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
362 
363  dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
364  dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
365  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
366 
367  dcomplex psi11;
368 
369  int m_behind = i;
370 
371  /*------------------------------------------------------------*/
372 
373  // FLA_Copy_external( alpha11, psi11 );
374  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
375  bl1_zmult3( buff_1h, alpha11, &psi11 );
376 
377  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
378  // B00, a01 );
382  m_behind,
383  B00, rs_B, cs_B,
384  a01, rs_A );
385 
386  // FLA_Axpy_external( psi11, b01, a01 );
388  m_behind,
389  &psi11,
390  b01, rs_B,
391  a01, rs_A );
392 
393  // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
394  // FLA_ONE, a01, b01, A00 );
397  m_behind,
398  buff_1,
399  a01, rs_A,
400  b01, rs_B,
401  A00, rs_A, cs_A );
402 
403  // FLA_Axpy_external( psi11, b01, a01 );
405  m_behind,
406  &psi11,
407  b01, rs_B,
408  a01, rs_A );
409 
410  // FLA_Scal_external( beta11, a01 );
412  m_behind,
413  beta11,
414  a01, rs_A );
415 
416  // FLA_Scal_external( beta11, alpha11 );
417  // FLA_Scal_external( beta11, alpha11 );
418  bl1_zscals( beta11, alpha11 );
419  bl1_zscals( beta11, alpha11 );
420 
421  /*------------------------------------------------------------*/
422 
423  }
424 
425  return FLA_SUCCESS;
426 }
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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nu_opt_var5().