libflame  revision_anchor
Functions
FLA_Eig_gest_nu.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Eig_gest_nu_blk_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_blk_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_blk_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_blk_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_blk_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nu_unb_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_unb_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_unb_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_unb_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_unb_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_ops_var1 (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_var1 (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_var1 (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_var1 (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)
 
FLA_Error FLA_Eig_gest_nu_opt_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_ops_var2 (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_var2 (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_var2 (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_var2 (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)
 
FLA_Error FLA_Eig_gest_nu_opt_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nu_ops_var3 (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_var3 (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_var3 (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_var3 (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)
 
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)
 
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_blk_var1()

FLA_Error FLA_Eig_gest_nu_blk_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  FLA_Obj BTL, BTR, B00, B01, B02,
22  BBL, BBR, B10, B11, B12,
23  B20, B21, B22;
24 
25  FLA_Obj YL, YR, Y10, Y11, Y12;
26 
27  FLA_Obj Y12_t,
28  Y12_b;
29 
30  dim_t b;
31 
32  FLA_Part_2x2( A, &ATL, &ATR,
33  &ABL, &ABR, 0, 0, FLA_TL );
34 
35  FLA_Part_2x2( B, &BTL, &BTR,
36  &BBL, &BBR, 0, 0, FLA_TL );
37 
38  FLA_Part_1x2( Y, &YL, &YR, 0, FLA_LEFT );
39 
40  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_1x2_to_1x3( YL, /**/ YR, &Y10, /**/ &Y11, &Y12,
57  b, FLA_RIGHT );
58 
59  /*------------------------------------------------------------*/
60 
61  FLA_Part_2x1( Y12, &Y12_t,
62  &Y12_b, b, FLA_TOP );
63 
64  // Y12 = B12 * A22;
65  FLA_Hemm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
66  FLA_ONE, A22, B12, FLA_ZERO, Y12_t,
67  FLA_Cntl_sub_hemm( cntl ) );
68 
69  // A12 = triu( B11 ) * A12;
70  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR,
71  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
72  FLA_ONE, B11, A12,
73  FLA_Cntl_sub_trmm1( cntl ) );
74 
75  // A12 = A12 + 1/2 * Y12;
76  FLA_Axpy_internal( FLA_ONE_HALF, Y12_t, A12,
77  FLA_Cntl_sub_axpy1( cntl ) );
78 
79  // A11 = triu( B11 ) * A11 * triu( B11 )';
80  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_UPPER_TRIANGULAR,
81  A11, Y11, B11,
82  FLA_Cntl_sub_eig_gest( cntl ) );
83 
84  // A11 = A11 + A12 * B12' + B12 * A12';
85  FLA_Her2k_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
86  FLA_ONE, A12, B12, FLA_ONE, A11,
87  FLA_Cntl_sub_her2k( cntl ) );
88 
89  // A12 = A12 + 1/2 * Y12;
90  FLA_Axpy_internal( FLA_ONE_HALF, Y12_t, A12,
91  FLA_Cntl_sub_axpy2( cntl ) );
92 
93  // A12 = A12 * triu( B22 )';
94  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
95  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
96  FLA_ONE, B22, A12,
97  FLA_Cntl_sub_trmm2( cntl ) );
98 
99  /*------------------------------------------------------------*/
100 
101  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
102  A10, A11, /**/ A12,
103  /* ************** */ /* ****************** */
104  &ABL, /**/ &ABR, A20, A21, /**/ A22,
105  FLA_TL );
106 
107  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
108  B10, B11, /**/ B12,
109  /* ************** */ /* ****************** */
110  &BBL, /**/ &BBR, B20, B21, /**/ B22,
111  FLA_TL );
112 
113  FLA_Cont_with_1x3_to_1x2( &YL, /**/ &YR, Y10, Y11, /**/ Y12,
114  FLA_LEFT );
115  }
116 
117  return FLA_SUCCESS;
118 }
FLA_Error FLA_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal.c:16
FLA_Error FLA_Eig_gest_internal(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_internal.c:17
FLA_Error FLA_Hemm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_hemm_t *cntl)
Definition: FLA_Hemm_internal.c:16
FLA_Error FLA_Her2k_internal(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_her2k_t *cntl)
Definition: FLA_Her2k_internal.c:16
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition: FLA_Trmm_internal.c:16
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Error FLA_Cont_with_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:475
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
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
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:267
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
unsigned long dim_t
Definition: FLA_type_defs.h:71
Definition: FLA_type_defs.h:159

References FLA_Axpy_internal(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_blk_var2()

FLA_Error FLA_Eig_gest_nu_blk_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  FLA_Obj BTL, BTR, B00, B01, B02,
22  BBL, BBR, B10, B11, B12,
23  B20, B21, B22;
24 
25  FLA_Obj YL, YR, Y10, Y11, Y12;
26 
27  FLA_Obj Y12_t,
28  Y12_b;
29 
30  dim_t b;
31 
32  FLA_Part_2x2( A, &ATL, &ATR,
33  &ABL, &ABR, 0, 0, FLA_TL );
34 
35  FLA_Part_2x2( B, &BTL, &BTR,
36  &BBL, &BBR, 0, 0, FLA_TL );
37 
38  FLA_Part_1x2( Y, &YL, &YR, 0, FLA_LEFT );
39 
40  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_1x2_to_1x3( YL, /**/ YR, &Y10, /**/ &Y11, &Y12,
57  b, FLA_RIGHT );
58 
59  /*------------------------------------------------------------*/
60 
61  FLA_Part_2x1( Y12, &Y12_t,
62  &Y12_b, b, FLA_TOP );
63 
64  // A01 = A01 * triu( B11 )';
65  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
66  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
67  FLA_ONE, B11, A01,
68  FLA_Cntl_sub_trmm1( cntl ) );
69 
70 
71  // A01 = A01 + A02 * B12';
72  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_CONJ_TRANSPOSE,
73  FLA_ONE, A02, B12, FLA_ONE, A01,
74  FLA_Cntl_sub_gemm1( cntl ) );
75 
76  // Y12 = B12 * A22;
77  FLA_Hemm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
78  FLA_ONE, A22, B12, FLA_ZERO, Y12_t,
79  FLA_Cntl_sub_hemm( cntl ) );
80 
81  // A12 = triu( B11 ) * A12;
82  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR,
83  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
84  FLA_ONE, B11, A12,
85  FLA_Cntl_sub_trmm2( cntl ) );
86 
87  // A12 = A12 + 1/2 * Y12;
88  FLA_Axpy_internal( FLA_ONE_HALF, Y12_t, A12,
89  FLA_Cntl_sub_axpy1( cntl ) );
90 
91  // A11 = triu( B11 ) * A11 * triu( B11 )';
92  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_UPPER_TRIANGULAR,
93  A11, Y11, B11,
94  FLA_Cntl_sub_eig_gest( cntl ) );
95 
96  // A11 = A11 + A12 * B12' + B12 * A12';
97  FLA_Her2k_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
98  FLA_ONE, A12, B12, FLA_ONE, A11,
99  FLA_Cntl_sub_her2k( cntl ) );
100 
101  // A12 = A12 + 1/2 * Y12;
102  FLA_Axpy_internal( FLA_ONE_HALF, Y12_t, A12,
103  FLA_Cntl_sub_axpy2( cntl ) );
104 
105  /*------------------------------------------------------------*/
106 
107  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
108  A10, A11, /**/ A12,
109  /* ************** */ /* ****************** */
110  &ABL, /**/ &ABR, A20, A21, /**/ A22,
111  FLA_TL );
112 
113  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
114  B10, B11, /**/ B12,
115  /* ************** */ /* ****************** */
116  &BBL, /**/ &BBR, B20, B21, /**/ B22,
117  FLA_TL );
118 
119  FLA_Cont_with_1x3_to_1x2( &YL, /**/ &YR, Y10, Y11, /**/ Y12,
120  FLA_LEFT );
121  }
122 
123  return FLA_SUCCESS;
124 }
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition: FLA_Gemm_internal.c:16

References FLA_Axpy_internal(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_blk_var3()

FLA_Error FLA_Eig_gest_nu_blk_var3 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)

◆ FLA_Eig_gest_nu_blk_var4()

FLA_Error FLA_Eig_gest_nu_blk_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
14 {
15  FLA_Obj ATL, ATR, A00, A01, A02,
16  ABL, ABR, A10, A11, A12,
17  A20, A21, A22;
18 
19  FLA_Obj BTL, BTR, B00, B01, B02,
20  BBL, BBR, B10, B11, B12,
21  B20, B21, B22;
22 
23  FLA_Obj YT, Y01,
24  YB, Y11,
25  Y21;
26 
27  FLA_Obj Y01_l, Y01_r;
28 
29  dim_t b;
30 
31  FLA_Part_2x2( A, &ATL, &ATR,
32  &ABL, &ABR, 0, 0, FLA_TL );
33 
34  FLA_Part_2x2( B, &BTL, &BTR,
35  &BBL, &BBR, 0, 0, FLA_TL );
36 
37  FLA_Part_2x1( Y, &YT,
38  &YB, 0, FLA_TOP );
39 
40  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_2x1_to_3x1( YT, &Y01,
57  /* ** */ /* *** */
58  &Y11,
59  YB, &Y21, b, FLA_BOTTOM );
60 
61  /*------------------------------------------------------------*/
62 
63  FLA_Part_1x2( Y01, &Y01_l, &Y01_r, b, FLA_LEFT );
64 
65  // Y01 = B01 * A11;
66  FLA_Hemm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
67  FLA_ONE, A11, B01, FLA_ZERO, Y01_l,
68  FLA_Cntl_sub_hemm( cntl ) );
69 
70  // A01 = A01 + 1/2 * Y01;
71  FLA_Axpy_internal( FLA_ONE_HALF, Y01_l, A01,
72  FLA_Cntl_sub_axpy1( cntl ) );
73 
74  // A00 = A00 + A01 * B01' + B01 * A01';
75  FLA_Her2k_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
76  FLA_ONE, A01, B01, FLA_ONE, A00,
77  FLA_Cntl_sub_her2k( cntl ) );
78 
79  // A01 = A01 + 1/2 * Y01;
80  FLA_Axpy_internal( FLA_ONE_HALF, Y01_l, A01,
81  FLA_Cntl_sub_axpy2( cntl ) );
82 
83  // A01 = A01 * triu( B11 )';
84  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
85  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
86  FLA_ONE, B11, A01,
87  FLA_Cntl_sub_trmm1( cntl ) );
88 
89  // A11 = triu( B11 ) * A11 * triu( B11 )';
90  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_UPPER_TRIANGULAR,
91  A11, Y11, B11,
92  FLA_Cntl_sub_eig_gest( cntl ) );
93 
94  // A02 = A02 + B01 * A12;
95  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE,
96  FLA_ONE, B01, A12, FLA_ONE, A02,
97  FLA_Cntl_sub_gemm1( cntl ) );
98 
99  // A12 = triu( B11 ) * A12;
100  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR,
101  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
102  FLA_ONE, B11, A12,
103  FLA_Cntl_sub_trmm2( cntl ) );
104 
105  /*------------------------------------------------------------*/
106 
107  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
108  A10, A11, /**/ A12,
109  /* ************** */ /* ****************** */
110  &ABL, /**/ &ABR, A20, A21, /**/ A22,
111  FLA_TL );
112 
113  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
114  B10, B11, /**/ B12,
115  /* ************** */ /* ****************** */
116  &BBL, /**/ &BBR, B20, B21, /**/ B22,
117  FLA_TL );
118 
119  FLA_Cont_with_3x1_to_2x1( &YT, Y01,
120  Y11,
121  /* ** */ /* *** */
122  &YB, Y21, FLA_TOP );
123  }
124 
125  return FLA_SUCCESS;
126 }
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:428
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:226

References FLA_Axpy_internal(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_blk_var5()

FLA_Error FLA_Eig_gest_nu_blk_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  FLA_Obj BTL, BTR, B00, B01, B02,
22  BBL, BBR, B10, B11, B12,
23  B20, B21, B22;
24 
25  FLA_Obj YT, Y01,
26  YB, Y11,
27  Y21;
28 
29  FLA_Obj Y01_l, Y01_r;
30 
31  dim_t b;
32 
33  FLA_Part_2x2( A, &ATL, &ATR,
34  &ABL, &ABR, 0, 0, FLA_TL );
35 
36  FLA_Part_2x2( B, &BTL, &BTR,
37  &BBL, &BBR, 0, 0, FLA_TL );
38 
39  FLA_Part_2x1( Y, &YT,
40  &YB, 0, FLA_TOP );
41 
42  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
43 
44  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
45 
46  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
47  /* ************* */ /* ******************** */
48  &A10, /**/ &A11, &A12,
49  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
50  b, b, FLA_BR );
51 
52  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
53  /* ************* */ /* ******************** */
54  &B10, /**/ &B11, &B12,
55  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
56  b, b, FLA_BR );
57 
58  FLA_Repart_2x1_to_3x1( YT, &Y01,
59  /* ** */ /* *** */
60  &Y11,
61  YB, &Y21, b, FLA_BOTTOM );
62 
63  /*------------------------------------------------------------*/
64 
65  FLA_Part_1x2( Y01, &Y01_l, &Y01_r, b, FLA_LEFT );
66 
67  // Y01 = B01 * A11;
68  FLA_Hemm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
69  FLA_ONE, A11, B01, FLA_ZERO, Y01_l,
70  FLA_Cntl_sub_hemm( cntl ) );
71 
72  // A01 = triu( B00 ) * A01;
73  FLA_Trmm_internal( FLA_LEFT, FLA_UPPER_TRIANGULAR,
74  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
75  FLA_ONE, B00, A01,
76  FLA_Cntl_sub_trmm1( cntl ) );
77 
78  // A01 = A01 + 1/2 * Y01;
79  FLA_Axpy_internal( FLA_ONE_HALF, Y01_l, A01,
80  FLA_Cntl_sub_axpy1( cntl ) );
81 
82  // A00 = A00 + A01 * B01' + B01 * A01';
83  FLA_Her2k_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
84  FLA_ONE, A01, B01, FLA_ONE, A00,
85  FLA_Cntl_sub_her2k( cntl ) );
86 
87  // A01 = A01 + 1/2 * Y01;
88  FLA_Axpy_internal( FLA_ONE_HALF, Y01_l, A01,
89  FLA_Cntl_sub_axpy2( cntl ) );
90 
91  // A01 = A01 * triu( B11 )';
92  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
93  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
94  FLA_ONE, B11, A01,
95  FLA_Cntl_sub_trmm2( cntl ) );
96 
97  // A11 = triu( B11 ) * A11 * triu( B11 )';
98  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_UPPER_TRIANGULAR,
99  A11, Y11, B11,
100  FLA_Cntl_sub_eig_gest( cntl ) );
101 
102  /*------------------------------------------------------------*/
103 
104  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
105  A10, A11, /**/ A12,
106  /* ************** */ /* ****************** */
107  &ABL, /**/ &ABR, A20, A21, /**/ A22,
108  FLA_TL );
109 
110  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
111  B10, B11, /**/ B12,
112  /* ************** */ /* ****************** */
113  &BBL, /**/ &BBR, B20, B21, /**/ B22,
114  FLA_TL );
115 
116  FLA_Cont_with_3x1_to_2x1( &YT, Y01,
117  Y11,
118  /* ** */ /* *** */
119  &YB, Y21, FLA_TOP );
120  }
121 
122  return FLA_SUCCESS;
123 }

References FLA_Axpy_internal(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_opc_var1()

FLA_Error FLA_Eig_gest_nu_opc_var1 ( 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 
)
283 {
284  scomplex* buff_0 = FLA_COMPLEX_PTR( FLA_ZERO );
285  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
286  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
287  int i;
288 
289  for ( i = 0; i < m_AB; ++i )
290  {
291  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
292  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
293  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
294 
295  scomplex* y12t = buff_y + (i+1)*inc_y;
296 
297  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
298  scomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
299  scomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
300 
301  int m_ahead = m_AB - i - 1;
302 
303  /*------------------------------------------------------------*/
304 
305  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
306  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
309  m_ahead,
310  buff_1,
311  A22, rs_A, cs_A,
312  b12t, cs_B,
313  buff_0,
314  y12t, inc_y );
315 
316  // FLA_Scal_external( beta11, a12t );
318  m_ahead,
319  beta11,
320  a12t, cs_A );
321 
322  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
324  m_ahead,
325  buff_1h,
326  y12t, inc_y,
327  a12t, cs_A );
328 
329  // FLA_Scal_external( beta11, alpha11 );
330  // FLA_Scal_external( beta11, alpha11 );
331  bl1_cscals( beta11, alpha11 );
332  bl1_cscals( beta11, alpha11 );
333 
334  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
336  m_ahead,
337  buff_1,
338  a12t, cs_A,
339  b12t, cs_B,
340  buff_1,
341  alpha11 );
342 
343  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
345  m_ahead,
346  buff_1h,
347  y12t, inc_y,
348  a12t, cs_A );
349 
350  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
351  // B22, a12t );
355  m_ahead,
356  B22, rs_B, cs_B,
357  a12t, cs_A );
358 
359  /*------------------------------------------------------------*/
360 
361  }
362 
363  return FLA_SUCCESS;
364 }
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_cdot2s(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition: bl1_dot2s.c:39
void bl1_chemv(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition: bl1_hemv.c:35
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_CONJ_NO_TRANSPOSE
Definition: blis_type_defs.h:56
@ 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_cdot2s(), bl1_chemv(), bl1_cscalv(), bl1_ctrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var1().

◆ FLA_Eig_gest_nu_opc_var2()

FLA_Error FLA_Eig_gest_nu_opc_var2 ( 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 
)
305 {
306  scomplex* buff_0 = FLA_COMPLEX_PTR( FLA_ZERO );
307  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
308  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
309  int i;
310 
311  for ( i = 0; i < m_AB; ++i )
312  {
313  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
314  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
315  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
316  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
317  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
318 
319  scomplex* y12t = buff_y + (i+1)*inc_y;
320 
321  scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
322  scomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
323 
324  int m_ahead = m_AB - i - 1;
325  int m_behind = i;
326 
327  /*------------------------------------------------------------*/
328 
329  // FLA_Scal_external( beta11, a01 );
331  m_behind,
332  beta11,
333  a01, rs_A );
334 
335  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
336  // FLA_ONE, A02, b12t, FLA_ONE, a01 );
339  m_behind,
340  m_ahead,
341  buff_1,
342  A02, rs_A, cs_A,
343  b12t, cs_B,
344  buff_1,
345  a01, rs_A );
346 
347  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
348  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
351  m_ahead,
352  buff_1,
353  A22, rs_A, cs_A,
354  b12t, cs_B,
355  buff_0,
356  y12t, inc_y );
357 
358  // FLA_Scal_external( beta11, a12t );
360  m_ahead,
361  beta11,
362  a12t, cs_A );
363 
364  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
366  m_ahead,
367  buff_1h,
368  y12t, inc_y,
369  a12t, cs_A );
370 
371  // FLA_Scal_external( beta11, alpha11 );
372  // FLA_Scal_external( beta11, alpha11 );
373  bl1_cscals( beta11, alpha11 );
374  bl1_cscals( beta11, alpha11 );
375 
376  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
378  m_ahead,
379  buff_1,
380  a12t, cs_A,
381  b12t, cs_B,
382  buff_1,
383  alpha11 );
384 
385  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
387  m_ahead,
388  buff_1h,
389  y12t, inc_y,
390  a12t, cs_A );
391 
392  /*------------------------------------------------------------*/
393 
394  }
395 
396  return FLA_SUCCESS;
397 }
void bl1_cgemv(trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition: bl1_gemv.c:125
@ BLIS1_NO_TRANSPOSE
Definition: blis_type_defs.h:54

References bl1_caxpyv(), bl1_cdot2s(), bl1_cgemv(), bl1_chemv(), bl1_cscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var2().

◆ FLA_Eig_gest_nu_opc_var3()

FLA_Error FLA_Eig_gest_nu_opc_var3 ( 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_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 }
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

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_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 }

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_var1()

FLA_Error FLA_Eig_gest_nu_opd_var1 ( 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 
)
194 {
195  double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
196  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
197  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
198  int i;
199 
200  for ( i = 0; i < m_AB; ++i )
201  {
202  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
203  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
204  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
205 
206  double* y12t = buff_y + (i+1)*inc_y;
207 
208  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
209  double* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
210  double* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
211 
212  int m_ahead = m_AB - i - 1;
213 
214  /*------------------------------------------------------------*/
215 
216  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
217  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
220  m_ahead,
221  buff_1,
222  A22, rs_A, cs_A,
223  b12t, cs_B,
224  buff_0,
225  y12t, inc_y );
226 
227  // FLA_Scal_external( beta11, a12t );
229  m_ahead,
230  beta11,
231  a12t, cs_A );
232 
233  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
235  m_ahead,
236  buff_1h,
237  y12t, inc_y,
238  a12t, cs_A );
239 
240  // FLA_Scal_external( beta11, alpha11 );
241  // FLA_Scal_external( beta11, alpha11 );
242  bl1_dscals( beta11, alpha11 );
243  bl1_dscals( beta11, alpha11 );
244 
245  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
247  m_ahead,
248  buff_1,
249  a12t, cs_A,
250  b12t, cs_B,
251  buff_1,
252  alpha11 );
253 
254  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
256  m_ahead,
257  buff_1h,
258  y12t, inc_y,
259  a12t, cs_A );
260 
261  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
262  // B22, a12t );
266  m_ahead,
267  B22, rs_B, cs_B,
268  a12t, cs_A );
269 
270  /*------------------------------------------------------------*/
271 
272  }
273 
274  return FLA_SUCCESS;
275 }
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_ddot2s(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition: bl1_dot2s.c:26
void bl1_dhemv(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition: bl1_hemv.c:24
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_ddot2s(), bl1_dhemv(), bl1_dscalv(), bl1_dtrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var1().

◆ FLA_Eig_gest_nu_opd_var2()

FLA_Error FLA_Eig_gest_nu_opd_var2 ( 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 
)
205 {
206  double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
207  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
208  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
209  int i;
210 
211  for ( i = 0; i < m_AB; ++i )
212  {
213  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
214  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
215  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
216  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
217  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
218 
219  double* y12t = buff_y + (i+1)*inc_y;
220 
221  double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
222  double* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
223 
224  int m_ahead = m_AB - i - 1;
225  int m_behind = i;
226 
227  /*------------------------------------------------------------*/
228 
229  // FLA_Scal_external( beta11, a01 );
231  m_behind,
232  beta11,
233  a01, rs_A );
234 
235  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
236  // FLA_ONE, A02, b12t, FLA_ONE, a01 );
239  m_behind,
240  m_ahead,
241  buff_1,
242  A02, rs_A, cs_A,
243  b12t, cs_B,
244  buff_1,
245  a01, rs_A );
246 
247  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
248  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
251  m_ahead,
252  buff_1,
253  A22, rs_A, cs_A,
254  b12t, cs_B,
255  buff_0,
256  y12t, inc_y );
257 
258  // FLA_Scal_external( beta11, a12t );
260  m_ahead,
261  beta11,
262  a12t, cs_A );
263 
264  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
266  m_ahead,
267  buff_1h,
268  y12t, inc_y,
269  a12t, cs_A );
270 
271  // FLA_Scal_external( beta11, alpha11 );
272  // FLA_Scal_external( beta11, alpha11 );
273  bl1_dscals( beta11, alpha11 );
274  bl1_dscals( beta11, alpha11 );
275 
276  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
278  m_ahead,
279  buff_1,
280  a12t, cs_A,
281  b12t, cs_B,
282  buff_1,
283  alpha11 );
284 
285  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
287  m_ahead,
288  buff_1h,
289  y12t, inc_y,
290  a12t, cs_A );
291 
292  /*------------------------------------------------------------*/
293 
294  }
295 
296  return FLA_SUCCESS;
297 }
void bl1_dgemv(trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition: bl1_gemv.c:69

References bl1_daxpyv(), bl1_ddot2s(), bl1_dgemv(), bl1_dhemv(), bl1_dscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var2().

◆ FLA_Eig_gest_nu_opd_var3()

FLA_Error FLA_Eig_gest_nu_opd_var3 ( 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_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_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

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_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 }

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_var1()

FLA_Error FLA_Eig_gest_nu_ops_var1 ( 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_0 = FLA_FLOAT_PTR( FLA_ZERO );
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* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
114  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
115  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
116 
117  float* y12t = buff_y + (i+1)*inc_y;
118 
119  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
120  float* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
121  float* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
122 
123  int m_ahead = m_AB - i - 1;
124 
125  /*------------------------------------------------------------*/
126 
127  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
128  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
131  m_ahead,
132  buff_1,
133  A22, rs_A, cs_A,
134  b12t, cs_B,
135  buff_0,
136  y12t, inc_y );
137 
138  // FLA_Scal_external( beta11, a12t );
140  m_ahead,
141  beta11,
142  a12t, cs_A );
143 
144  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
146  m_ahead,
147  buff_1h,
148  y12t, inc_y,
149  a12t, cs_A );
150 
151  // FLA_Scal_external( beta11, alpha11 );
152  // FLA_Scal_external( beta11, alpha11 );
153  bl1_sscals( beta11, alpha11 );
154  bl1_sscals( beta11, alpha11 );
155 
156  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
158  m_ahead,
159  buff_1,
160  a12t, cs_A,
161  b12t, cs_B,
162  buff_1,
163  alpha11 );
164 
165  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
167  m_ahead,
168  buff_1h,
169  y12t, inc_y,
170  a12t, cs_A );
171 
172  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
173  // B22, a12t );
177  m_ahead,
178  B22, rs_B, cs_B,
179  a12t, cs_A );
180 
181  /*------------------------------------------------------------*/
182 
183  }
184 
185  return FLA_SUCCESS;
186 }
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_sdot2s(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition: bl1_dot2s.c:13
void bl1_shemv(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition: bl1_hemv.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_sdot2s(), bl1_shemv(), bl1_sscalv(), bl1_strmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var1().

◆ FLA_Eig_gest_nu_ops_var2()

FLA_Error FLA_Eig_gest_nu_ops_var2 ( 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_0 = FLA_FLOAT_PTR( FLA_ZERO );
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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
114  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
115  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
116  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
117  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
118 
119  float* y12t = buff_y + (i+1)*inc_y;
120 
121  float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
122  float* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
123 
124  int m_ahead = m_AB - i - 1;
125  int m_behind = i;
126 
127  /*------------------------------------------------------------*/
128 
129  // FLA_Scal_external( beta11, a01 );
131  m_behind,
132  beta11,
133  a01, rs_A );
134 
135  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
136  // FLA_ONE, A02, b12t, FLA_ONE, a01 );
139  m_behind,
140  m_ahead,
141  buff_1,
142  A02, rs_A, cs_A,
143  b12t, cs_B,
144  buff_1,
145  a01, rs_A );
146 
147  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
148  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
151  m_ahead,
152  buff_1,
153  A22, rs_A, cs_A,
154  b12t, cs_B,
155  buff_0,
156  y12t, inc_y );
157 
158  // FLA_Scal_external( beta11, a12t );
160  m_ahead,
161  beta11,
162  a12t, cs_A );
163 
164  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
166  m_ahead,
167  buff_1h,
168  y12t, inc_y,
169  a12t, cs_A );
170 
171  // FLA_Scal_external( beta11, alpha11 );
172  // FLA_Scal_external( beta11, alpha11 );
173  bl1_sscals( beta11, alpha11 );
174  bl1_sscals( beta11, alpha11 );
175 
176  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
178  m_ahead,
179  buff_1,
180  a12t, cs_A,
181  b12t, cs_B,
182  buff_1,
183  alpha11 );
184 
185  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
187  m_ahead,
188  buff_1h,
189  y12t, inc_y,
190  a12t, cs_A );
191 
192  /*------------------------------------------------------------*/
193 
194  }
195 
196  return FLA_SUCCESS;
197 }
void bl1_sgemv(trans1_t transa, conj1_t conjx, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition: bl1_gemv.c:13

References bl1_saxpyv(), bl1_sdot2s(), bl1_sgemv(), bl1_shemv(), bl1_sscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var2().

◆ FLA_Eig_gest_nu_ops_var3()

FLA_Error FLA_Eig_gest_nu_ops_var3 ( 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_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_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

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_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 }

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_var1()

FLA_Error FLA_Eig_gest_nu_opt_var1 ( 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_nu_opc_var1(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_var1.c:279
FLA_Error FLA_Eig_gest_nu_opz_var1(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_var1.c:368
FLA_Error FLA_Eig_gest_nu_opd_var1(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_var1.c:190
FLA_Error FLA_Eig_gest_nu_ops_var1(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_var1.c:101
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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: blis_type_defs.h:138

References FLA_Eig_gest_nu_opc_var1(), FLA_Eig_gest_nu_opd_var1(), FLA_Eig_gest_nu_ops_var1(), FLA_Eig_gest_nu_opz_var1(), 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_nu().

◆ FLA_Eig_gest_nu_opt_var2()

FLA_Error FLA_Eig_gest_nu_opt_var2 ( 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_nu_opz_var2(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_var2.c:401
FLA_Error FLA_Eig_gest_nu_ops_var2(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_var2.c:101
FLA_Error FLA_Eig_gest_nu_opd_var2(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_var2.c:201
FLA_Error FLA_Eig_gest_nu_opc_var2(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_var2.c:301

References FLA_Eig_gest_nu_opc_var2(), FLA_Eig_gest_nu_opd_var2(), FLA_Eig_gest_nu_ops_var2(), FLA_Eig_gest_nu_opz_var2(), 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_nu().

◆ FLA_Eig_gest_nu_opt_var3()

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

◆ 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

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_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

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_var1()

FLA_Error FLA_Eig_gest_nu_opz_var1 ( 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 
)
372 {
373  dcomplex* buff_0 = FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO );
374  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
375  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
376  int i;
377 
378  for ( i = 0; i < m_AB; ++i )
379  {
380  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
381  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
382  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
383 
384  dcomplex* y12t = buff_y + (i+1)*inc_y;
385 
386  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
387  dcomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
388  dcomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
389 
390  int m_ahead = m_AB - i - 1;
391 
392  /*------------------------------------------------------------*/
393 
394  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
395  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
398  m_ahead,
399  buff_1,
400  A22, rs_A, cs_A,
401  b12t, cs_B,
402  buff_0,
403  y12t, inc_y );
404 
405  // FLA_Scal_external( beta11, a12t );
407  m_ahead,
408  beta11,
409  a12t, cs_A );
410 
411  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
413  m_ahead,
414  buff_1h,
415  y12t, inc_y,
416  a12t, cs_A );
417 
418  // FLA_Scal_external( beta11, alpha11 );
419  // FLA_Scal_external( beta11, alpha11 );
420  bl1_zscals( beta11, alpha11 );
421  bl1_zscals( beta11, alpha11 );
422 
423  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
425  m_ahead,
426  buff_1,
427  a12t, cs_A,
428  b12t, cs_B,
429  buff_1,
430  alpha11 );
431 
432  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
434  m_ahead,
435  buff_1h,
436  y12t, inc_y,
437  a12t, cs_A );
438 
439  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
440  // B22, a12t );
444  m_ahead,
445  B22, rs_B, cs_B,
446  a12t, cs_A );
447 
448  /*------------------------------------------------------------*/
449 
450  }
451 
452  return FLA_SUCCESS;
453 }
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_zdot2s(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition: bl1_dot2s.c:70
bl1_zscals(beta, rho_yz)
void bl1_zhemv(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition: bl1_hemv.c:134
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_zdot2s(), bl1_zhemv(), bl1_zscals(), bl1_zscalv(), bl1_ztrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var1().

◆ FLA_Eig_gest_nu_opz_var2()

FLA_Error FLA_Eig_gest_nu_opz_var2 ( 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 
)
405 {
406  dcomplex* buff_0 = FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO );
407  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
408  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
409  int i;
410 
411  for ( i = 0; i < m_AB; ++i )
412  {
413  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
414  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
415  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
416  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
417  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
418 
419  dcomplex* y12t = buff_y + (i+1)*inc_y;
420 
421  dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
422  dcomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
423 
424  int m_ahead = m_AB - i - 1;
425  int m_behind = i;
426 
427  /*------------------------------------------------------------*/
428 
429  // FLA_Scal_external( beta11, a01 );
431  m_behind,
432  beta11,
433  a01, rs_A );
434 
435  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
436  // FLA_ONE, A02, b12t, FLA_ONE, a01 );
439  m_behind,
440  m_ahead,
441  buff_1,
442  A02, rs_A, cs_A,
443  b12t, cs_B,
444  buff_1,
445  a01, rs_A );
446 
447  // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
448  // FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
451  m_ahead,
452  buff_1,
453  A22, rs_A, cs_A,
454  b12t, cs_B,
455  buff_0,
456  y12t, inc_y );
457 
458  // FLA_Scal_external( beta11, a12t );
460  m_ahead,
461  beta11,
462  a12t, cs_A );
463 
464  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
466  m_ahead,
467  buff_1h,
468  y12t, inc_y,
469  a12t, cs_A );
470 
471  // FLA_Scal_external( beta11, alpha11 );
472  // FLA_Scal_external( beta11, alpha11 );
473  bl1_zscals( beta11, alpha11 );
474  bl1_zscals( beta11, alpha11 );
475 
476  // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
478  m_ahead,
479  buff_1,
480  a12t, cs_A,
481  b12t, cs_B,
482  buff_1,
483  alpha11 );
484 
485  // FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
487  m_ahead,
488  buff_1h,
489  y12t, inc_y,
490  a12t, cs_A );
491 
492  /*------------------------------------------------------------*/
493 
494  }
495 
496  return FLA_SUCCESS;
497 }
void bl1_zgemv(trans1_t transa, conj1_t conjx, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition: bl1_gemv.c:255

References bl1_zaxpyv(), bl1_zdot2s(), bl1_zgemv(), bl1_zhemv(), bl1_zscals(), bl1_zscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nu_opt_var2().

◆ FLA_Eig_gest_nu_opz_var3()

FLA_Error FLA_Eig_gest_nu_opz_var3 ( 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 
)

◆ 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_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

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().

◆ 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 }

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().

◆ FLA_Eig_gest_nu_unb_var1()

FLA_Error FLA_Eig_gest_nu_unb_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14 {
15  FLA_Obj ATL, ATR, A00, a01, A02,
16  ABL, ABR, a10t, alpha11, a12t,
17  A20, a21, A22;
18 
19  FLA_Obj BTL, BTR, B00, b01, B02,
20  BBL, BBR, b10t, beta11, b12t,
21  B20, b21, B22;
22 
23  FLA_Obj yL, yR, y10t, psi11, y12t;
24 
25  FLA_Obj y12t_t,
26  y12t_b;
27 
28  FLA_Part_2x2( A, &ATL, &ATR,
29  &ABL, &ABR, 0, 0, FLA_TL );
30 
31  FLA_Part_2x2( B, &BTL, &BTR,
32  &BBL, &BBR, 0, 0, FLA_TL );
33 
34  FLA_Part_1x2( Y, &yL, &yR, 0, FLA_LEFT );
35 
36  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
37 
38  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
39  /* ************* */ /* ************************** */
40  &a10t, /**/ &alpha11, &a12t,
41  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
42  1, 1, FLA_BR );
43 
44  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
45  /* ************* */ /* ************************* */
46  &b10t, /**/ &beta11, &b12t,
47  BBL, /**/ BBR, &B20, /**/ &b21, &B22,
48  1, 1, FLA_BR );
49 
50  FLA_Repart_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
51  1, FLA_RIGHT );
52 
53  /*------------------------------------------------------------*/
54 
55  FLA_Part_2x1( y12t, &y12t_t,
56  &y12t_b, 1, FLA_TOP );
57 
58  // y12t = b12t * A22;
59  // y12t^T = A22^T * b12t^T;
60  FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
61  FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
62 
63  // a12t = beta11 * a12t;
64  FLA_Scal_external( beta11, a12t );
65 
66  // a12t = a12t + 1/2 * y12t;
67  FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
68 
69  // alpha11 = conj(beta11) * alpha11 * beta11;
70  // = beta11 * alpha11 * beta11;
71  FLA_Scal_external( beta11, alpha11 );
72  FLA_Scal_external( beta11, alpha11 );
73 
74  // alpha11 = alpha11 + a12t * b12t' + b12t * a12t';
75  FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
76 
77  // a12t = a12t + 1/2 * y12t;
78  FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
79 
80  // a12t = a12t * tril( B22 )';
81  // a12t^T = conj(triu( B22 )) * a12t^T;
82  FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
83  B22, a12t );
84 
85  /*------------------------------------------------------------*/
86 
87  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
88  a10t, alpha11, /**/ a12t,
89  /* ************** */ /* ************************ */
90  &ABL, /**/ &ABR, A20, a21, /**/ A22,
91  FLA_TL );
92 
93  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
94  b10t, beta11, /**/ b12t,
95  /* ************** */ /* *********************** */
96  &BBL, /**/ &BBR, B20, b21, /**/ B22,
97  FLA_TL );
98 
99  FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
100  FLA_LEFT );
101  }
102 
103  return FLA_SUCCESS;
104 }
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Error FLA_Dot2cs_external(FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj beta, FLA_Obj rho)
Definition: FLA_Dot2cs_external.c:13
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trmv_external.c:13
FLA_Error FLA_Hemvc_external(FLA_Uplo uplo, FLA_Conj conja, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition: FLA_Hemvc_external.c:13

References FLA_Axpy_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Hemvc_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trmv_external(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_unb_var2()

FLA_Error FLA_Eig_gest_nu_unb_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14 {
15  FLA_Obj ATL, ATR, A00, a01, A02,
16  ABL, ABR, a10t, alpha11, a12t,
17  A20, a21, A22;
18 
19  FLA_Obj BTL, BTR, B00, b01, B02,
20  BBL, BBR, b10t, beta11, b12t,
21  B20, b21, B22;
22 
23  FLA_Obj yL, yR, y10t, psi11, y12t;
24 
25  FLA_Obj y12t_t,
26  y12t_b;
27 
28  FLA_Part_2x2( A, &ATL, &ATR,
29  &ABL, &ABR, 0, 0, FLA_TL );
30 
31  FLA_Part_2x2( B, &BTL, &BTR,
32  &BBL, &BBR, 0, 0, FLA_TL );
33 
34  FLA_Part_1x2( Y, &yL, &yR, 0, FLA_LEFT );
35 
36  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
37 
38  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
39  /* ************* */ /* ************************** */
40  &a10t, /**/ &alpha11, &a12t,
41  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
42  1, 1, FLA_BR );
43 
44  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
45  /* ************* */ /* ************************* */
46  &b10t, /**/ &beta11, &b12t,
47  BBL, /**/ BBR, &B20, /**/ &b21, &B22,
48  1, 1, FLA_BR );
49 
50  FLA_Repart_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
51  1, FLA_RIGHT );
52 
53  /*------------------------------------------------------------*/
54 
55  FLA_Part_2x1( y12t, &y12t_t,
56  &y12t_b, 1, FLA_TOP );
57 
58  // a01 = a01 * beta11;
59  FLA_Scal_external( beta11, a01 );
60 
61  // a01 = a01 + A02 * b12t';
62  FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
63  FLA_ONE, A02, b12t, FLA_ONE, a01 );
64 
65  // y12t = b12t * A22;
66  // y12t^T = A22^T * b12t^T;
67  FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
68  FLA_ONE, A22, b12t, FLA_ZERO, y12t_t );
69 
70  // a12t = beta11 * a12t;
71  FLA_Scal_external( beta11, a12t );
72 
73  // a12t = a12t + 1/2 * y12t;
74  FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
75 
76  // alpha11 = conj(beta11) * alpha11 * beta11;
77  // = beta11 * alpha11 * beta11;
78  FLA_Scal_external( beta11, alpha11 );
79  FLA_Scal_external( beta11, alpha11 );
80 
81  // alpha11 = alpha11 + a12t * b12t' + b12t * a12t';
82  FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a12t, b12t, FLA_ONE, alpha11 );
83 
84  // a12t = a12t + 1/2 * y12t;
85  FLA_Axpy_external( FLA_ONE_HALF, y12t_t, a12t );
86 
87  /*------------------------------------------------------------*/
88 
89  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
90  a10t, alpha11, /**/ a12t,
91  /* ************** */ /* ************************ */
92  &ABL, /**/ &ABR, A20, a21, /**/ A22,
93  FLA_TL );
94 
95  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
96  b10t, beta11, /**/ b12t,
97  /* ************** */ /* *********************** */
98  &BBL, /**/ &BBR, B20, b21, /**/ B22,
99  FLA_TL );
100 
101  FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
102  FLA_LEFT );
103  }
104 
105  return FLA_SUCCESS;
106 }
FLA_Error FLA_Gemvc_external(FLA_Trans transa, FLA_Conj conjx, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition: FLA_Gemvc_external.c:13

References FLA_Axpy_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Gemvc_external(), FLA_Hemvc_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and FLA_ZERO.

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_unb_var3()

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

◆ FLA_Eig_gest_nu_unb_var4()

FLA_Error FLA_Eig_gest_nu_unb_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Obj BTL, BTR, B00, b01, B02,
22  BBL, BBR, b10t, beta11, b12t,
23  B20, b21, B22;
24 
25  //FLA_Obj yT, y01,
26  // yB, psi11,
27  // y21;
28 
29  //FLA_Obj y01_l, y01_r;
30 
31  FLA_Obj psi11, y12t,
32  y21, Y22;
33 
34  FLA_Part_2x2( A, &ATL, &ATR,
35  &ABL, &ABR, 0, 0, FLA_TL );
36 
37  FLA_Part_2x2( B, &BTL, &BTR,
38  &BBL, &BBR, 0, 0, FLA_TL );
39 
40  //FLA_Part_2x1( Y, &yT,
41  // &yB, 0, FLA_TOP );
42 
43  FLA_Part_2x2( Y, &psi11, &y12t,
44  &y21, &Y22, 1, 1, FLA_TL );
45 
46  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
47 
48  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
49  /* ************* */ /* ************************** */
50  &a10t, /**/ &alpha11, &a12t,
51  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
52  1, 1, FLA_BR );
53 
54  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
55  /* ************* */ /* ************************* */
56  &b10t, /**/ &beta11, &b12t,
57  BBL, /**/ BBR, &B20, /**/ &b21, &B22,
58  1, 1, FLA_BR );
59 
60  //FLA_Repart_2x1_to_3x1( yT, &y01,
61  // /* ** */ /* ***** */
62  // &psi11,
63  // yB, &y21, 1, FLA_BOTTOM );
64 
65  /*------------------------------------------------------------*/
66 
67  //FLA_Part_1x2( y01, &y01_l, &y01_r, 1, FLA_LEFT );
68 
69  //// y01 = b01 * alpha11;
70  //FLA_Copy_external( b01, y01_l );
71  //FLA_Scal_external( alpha11, y01_l );
72  // psi11 = 1/2 * alpha11;
73  FLA_Copy_external( alpha11, psi11 );
75 
76  //// a01 = a01 + 1/2 * y01;
77  //FLA_Axpy_external( FLA_ONE_HALF, y01_l, a01 );
78  // a01 = a01 + 1/2 * alpha11 * y01;
79  FLA_Axpy_external( psi11, b01, a01 );
80 
81  // A00 = A00 + a01 * b01' + b01 * a01';
82  FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
83  FLA_ONE, a01, b01, A00 );
84 
85  //// a01 = a01 + 1/2 * y01;
86  //FLA_Axpy_external( FLA_ONE_HALF, y01_l, a01 );
87  // a01 = a01 + 1/2 * alpha11 * y01;
88  FLA_Axpy_external( psi11, b01, a01 );
89 
90  // a01 = a01 * beta11;
91  FLA_Scal_external( beta11, a01 );
92 
93  // alpha11 = conj(beta11) * alpha11 * beta11;
94  // = beta11 * alpha11 * beta11;
95  FLA_Scal_external( beta11, alpha11 );
96  FLA_Scal_external( beta11, alpha11 );
97 
98  // A02 = A02 + b01 * a12t;
99  FLA_Ger_external( FLA_ONE, b01, a12t, A02 );
100 
101  // a12t = beta11 * a12t;
102  FLA_Scal_external( beta11, a12t );
103 
104  /*------------------------------------------------------------*/
105 
106  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
107  a10t, alpha11, /**/ a12t,
108  /* ************** */ /* ************************ */
109  &ABL, /**/ &ABR, A20, a21, /**/ A22,
110  FLA_TL );
111 
112  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
113  b10t, beta11, /**/ b12t,
114  /* ************** */ /* *********************** */
115  &BBL, /**/ &BBR, B20, b21, /**/ B22,
116  FLA_TL );
117 
118  //FLA_Cont_with_3x1_to_2x1( &yT, y01,
119  // psi11,
120  // /* ** */ /* ***** */
121  // &yB, y21, FLA_TOP );
122  }
123 
124  return FLA_SUCCESS;
125 }
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition: FLA_Copy_external.c:13
FLA_Error FLA_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Ger_external.c:13
FLA_Error FLA_Her2c_external(FLA_Uplo uplo, FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Her2c_external.c:13

References FLA_Axpy_external(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Ger_external(), FLA_Her2c_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Scal_external().

Referenced by FLA_Eig_gest_nu().

◆ FLA_Eig_gest_nu_unb_var5()

FLA_Error FLA_Eig_gest_nu_unb_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Obj BTL, BTR, B00, b01, B02,
22  BBL, BBR, b10t, beta11, b12t,
23  B20, b21, B22;
24 
25  //FLA_Obj yT, y01,
26  // yB, psi11,
27  // y21;
28 
29  //FLA_Obj y01_l, y01_r;
30 
31  FLA_Obj psi11, y12t,
32  y21, Y22;
33 
34  FLA_Part_2x2( A, &ATL, &ATR,
35  &ABL, &ABR, 0, 0, FLA_TL );
36 
37  FLA_Part_2x2( B, &BTL, &BTR,
38  &BBL, &BBR, 0, 0, FLA_TL );
39 
40  //FLA_Part_2x1( Y, &yT,
41  // &yB, 0, FLA_TOP );
42 
43  FLA_Part_2x2( Y, &psi11, &y12t,
44  &y21, &Y22, 1, 1, FLA_TL );
45 
46  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
47 
48  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
49  /* ************* */ /* ************************** */
50  &a10t, /**/ &alpha11, &a12t,
51  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
52  1, 1, FLA_BR );
53 
54  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
55  /* ************* */ /* ************************* */
56  &b10t, /**/ &beta11, &b12t,
57  BBL, /**/ BBR, &B20, /**/ &b21, &B22,
58  1, 1, FLA_BR );
59 
60  //FLA_Repart_2x1_to_3x1( yT, &y01,
61  // /* ** */ /* ***** */
62  // &psi11,
63  // yB, &y21, 1, FLA_BOTTOM );
64 
65  /*------------------------------------------------------------*/
66 
67  //FLA_Part_1x2( y01, &y01_l, &y01_r, 1, FLA_LEFT );
68 
69  //// y01 = b01 * alpha11;
70  //FLA_Copy_external( b01, y01_l );
71  //FLA_Scal_external( alpha11, y01_l );
72  // psi11 = 1/2 * alpha11;
73  FLA_Copy_external( alpha11, psi11 );
75 
76  // a01 = triu( B00 ) * a01;
77  FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
78  B00, a01 );
79 
80  //// a01 = a01 + 1/2 * y01;
81  //FLA_Axpy_external( FLA_ONE_HALF, y01_l, a01 );
82  // a01 = a01 + 1/2 * alpha11 * y01;
83  FLA_Axpy_external( psi11, b01, a01 );
84 
85  // A00 = A00 + a01 * b01' + b01 * a01';
86  FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
87  FLA_ONE, a01, b01, A00 );
88 
89  //// a01 = a01 + 1/2 * y01;
90  //FLA_Axpy_external( FLA_ONE_HALF, y01_l, a01 );
91  // a01 = a01 + 1/2 * alpha11 * y01;
92  FLA_Axpy_external( psi11, b01, a01 );
93 
94  // a01 = a01 * beta11;
95  FLA_Scal_external( beta11, a01 );
96 
97  // alpha11 = conj(beta11) * alpha11 * beta11;
98  // = beta11 * alpha11 * beta11;
99  FLA_Scal_external( beta11, alpha11 );
100  FLA_Scal_external( beta11, alpha11 );
101 
102  /*------------------------------------------------------------*/
103 
104  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
105  a10t, alpha11, /**/ a12t,
106  /* ************** */ /* ************************ */
107  &ABL, /**/ &ABR, A20, a21, /**/ A22,
108  FLA_TL );
109 
110  FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
111  b10t, beta11, /**/ b12t,
112  /* ************** */ /* *********************** */
113  &BBL, /**/ &BBR, B20, b21, /**/ B22,
114  FLA_TL );
115 
116  //FLA_Cont_with_3x1_to_2x1( &yT, y01,
117  // psi11,
118  // /* ** */ /* ***** */
119  // &yB, y21, FLA_TOP );
120  }
121 
122  return FLA_SUCCESS;
123 }

References FLA_Axpy_external(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Her2c_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and FLA_Trmv_external().

Referenced by FLA_Eig_gest_nu().