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{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YL, YR, Y10, Y11, Y12;
26
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
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
62 &Y12_b, b, FLA_TOP );
63
64 // Y12 = B12 * A22;
67 FLA_Cntl_sub_hemm( cntl ) );
68
69 // A12 = triu( B11 ) * A12;
72 FLA_ONE, B11, A12,
73 FLA_Cntl_sub_trmm1( cntl ) );
74
75 // A12 = A12 + 1/2 * Y12;
77 FLA_Cntl_sub_axpy1( cntl ) );
78
79 // A11 = triu( B11 ) * A11 * triu( B11 )';
81 A11, Y11, B11,
82 FLA_Cntl_sub_eig_gest( cntl ) );
83
84 // A11 = A11 + A12 * B12' + B12 * A12';
87 FLA_Cntl_sub_her2k( cntl ) );
88
89 // A12 = A12 + 1/2 * Y12;
91 FLA_Cntl_sub_axpy2( cntl ) );
92
93 // A12 = A12 * triu( B22 )';
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
int i
Definition bl1_axmyv2.c:145
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(), FLA_ZERO, and i.

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{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YL, YR, Y10, Y11, Y12;
26
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
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
62 &Y12_b, b, FLA_TOP );
63
64 // A01 = A01 * triu( B11 )';
67 FLA_ONE, B11, A01,
68 FLA_Cntl_sub_trmm1( cntl ) );
69
70
71 // A01 = A01 + A02 * B12';
74 FLA_Cntl_sub_gemm1( cntl ) );
75
76 // Y12 = B12 * A22;
79 FLA_Cntl_sub_hemm( cntl ) );
80
81 // A12 = triu( B11 ) * A12;
84 FLA_ONE, B11, A12,
85 FLA_Cntl_sub_trmm2( cntl ) );
86
87 // A12 = A12 + 1/2 * Y12;
89 FLA_Cntl_sub_axpy1( cntl ) );
90
91 // A11 = triu( B11 ) * A11 * triu( B11 )';
93 A11, Y11, B11,
94 FLA_Cntl_sub_eig_gest( cntl ) );
95
96 // A11 = A11 + A12 * B12' + B12 * A12';
99 FLA_Cntl_sub_her2k( cntl ) );
100
101 // A12 = A12 + 1/2 * Y12;
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(), FLA_ZERO, and i.

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{
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
20 BBL, BBR, B10, B11, B12,
21 B20, B21, B22;
22
23 FLA_Obj YT, Y01,
24 YB, Y11,
25 Y21;
26
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
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
57 /* ** */ /* *** */
58 &Y11,
59 YB, &Y21, b, FLA_BOTTOM );
60
61 /*------------------------------------------------------------*/
62
64
65 // Y01 = B01 * A11;
68 FLA_Cntl_sub_hemm( cntl ) );
69
70 // A01 = A01 + 1/2 * Y01;
72 FLA_Cntl_sub_axpy1( cntl ) );
73
74 // A00 = A00 + A01 * B01' + B01 * A01';
77 FLA_Cntl_sub_her2k( cntl ) );
78
79 // A01 = A01 + 1/2 * Y01;
81 FLA_Cntl_sub_axpy2( cntl ) );
82
83 // A01 = A01 * triu( B11 )';
86 FLA_ONE, B11, A01,
87 FLA_Cntl_sub_trmm1( cntl ) );
88
89 // A11 = triu( B11 ) * A11 * triu( B11 )';
91 A11, Y11, B11,
92 FLA_Cntl_sub_eig_gest( cntl ) );
93
94 // A02 = A02 + B01 * A12;
97 FLA_Cntl_sub_gemm1( cntl ) );
98
99 // A12 = triu( B11 ) * A12;
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
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(), FLA_ZERO, and i.

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{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YT, Y01,
26 YB, Y11,
27 Y21;
28
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
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
59 /* ** */ /* *** */
60 &Y11,
61 YB, &Y21, b, FLA_BOTTOM );
62
63 /*------------------------------------------------------------*/
64
66
67 // Y01 = B01 * A11;
70 FLA_Cntl_sub_hemm( cntl ) );
71
72 // A01 = triu( B00 ) * A01;
75 FLA_ONE, B00, A01,
76 FLA_Cntl_sub_trmm1( cntl ) );
77
78 // A01 = A01 + 1/2 * Y01;
80 FLA_Cntl_sub_axpy1( cntl ) );
81
82 // A00 = A00 + A01 * B01' + B01 * A01';
85 FLA_Cntl_sub_her2k( cntl ) );
86
87 // A01 = A01 + 1/2 * Y01;
89 FLA_Cntl_sub_axpy2( cntl ) );
90
91 // A01 = A01 * triu( B11 )';
94 FLA_ONE, B11, A01,
95 FLA_Cntl_sub_trmm2( cntl ) );
96
97 // A11 = triu( B11 ) * A11 * triu( B11 )';
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
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(), FLA_ZERO, and i.

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{
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 );
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}
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{
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 );
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{
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
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 );
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 );
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{
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
286
287 int m_behind = i;
288
289 /*------------------------------------------------------------*/
290
291 // FLA_Copy_external( alpha11, psi11 );
292 // FLA_Scal_external( FLA_ONE_HALF, 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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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 );
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
25
28
31
32 FLA_Part_2x1( Y, &yT,
33 &yB, 1, FLA_TOP );
34
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
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
62 buff_B, rs_B, cs_B );
63
64 break;
65 }
66
67 case FLA_COMPLEX:
68 {
72
76 buff_B, rs_B, cs_B );
77
78 break;
79 }
80
82 {
86
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(), FLA_Part_2x1(), and i.

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
25
28
31
32 FLA_Part_2x1( Y, &yT,
33 &yB, 1, FLA_TOP );
34
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
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
62 buff_B, rs_B, cs_B );
63
64 break;
65 }
66
67 case FLA_COMPLEX:
68 {
72
76 buff_B, rs_B, cs_B );
77
78 break;
79 }
80
82 {
86
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(), FLA_Part_2x1(), and i.

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
27
30
33
34 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
35
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
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
63 buff_B, rs_B, cs_B );
64
65 break;
66 }
67
68 case FLA_COMPLEX:
69 {
73
77 buff_B, rs_B, cs_B );
78
79 break;
80 }
81
83 {
87
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(), FLA_Part_1x2(), and i.

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
27
30
33
34 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
35
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
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
63 buff_B, rs_B, cs_B );
64
65 break;
66 }
67
68 case FLA_COMPLEX:
69 {
73
77 buff_B, rs_B, cs_B );
78
79 break;
80 }
81
83 {
87
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(), FLA_Part_1x2(), and i.

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{
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 );
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{
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 );
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{
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
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 );
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 );
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{
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
368
369 int m_behind = i;
370
371 /*------------------------------------------------------------*/
372
373 // FLA_Copy_external( alpha11, psi11 );
374 // FLA_Scal_external( FLA_ONE_HALF, 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 );
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,
17 A20, a21, A22;
18
19 FLA_Obj BTL, BTR, B00, b01, B02,
21 B20, b21, B22;
22
24
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
56 &y12t_b, 1, FLA_TOP );
57
58 // y12t = b12t * A22;
59 // y12t^T = A22^T * b12t^T;
62
63 // a12t = beta11 * a12t;
65
66 // a12t = a12t + 1/2 * y12t;
68
69 // alpha11 = conj(beta11) * alpha11 * beta11;
70 // = beta11 * alpha11 * beta11;
73
74 // alpha11 = alpha11 + a12t * b12t' + b12t * a12t';
76
77 // a12t = a12t + 1/2 * y12t;
79
80 // a12t = a12t * tril( B22 )';
81 // a12t^T = conj(triu( B22 )) * a12t^T;
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
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(), FLA_ZERO, and i.

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,
17 A20, a21, A22;
18
19 FLA_Obj BTL, BTR, B00, b01, B02,
21 B20, b21, B22;
22
24
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
56 &y12t_b, 1, FLA_TOP );
57
58 // a01 = a01 * beta11;
60
61 // a01 = a01 + A02 * b12t';
64
65 // y12t = b12t * A22;
66 // y12t^T = A22^T * b12t^T;
69
70 // a12t = beta11 * a12t;
72
73 // a12t = a12t + 1/2 * y12t;
75
76 // alpha11 = conj(beta11) * alpha11 * beta11;
77 // = beta11 * alpha11 * beta11;
80
81 // alpha11 = alpha11 + a12t * b12t' + b12t * a12t';
83
84 // a12t = a12t + 1/2 * y12t;
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(), FLA_ZERO, and i.

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,
19 A20, a21, A22;
20
21 FLA_Obj BTL, BTR, B00, b01, B02,
23 B20, b21, B22;
24
25 //FLA_Obj yT, y01,
26 // yB, psi11,
27 // y21;
28
29 //FLA_Obj y01_l, y01_r;
30
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
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;
75
76 //// a01 = a01 + 1/2 * y01;
77 //FLA_Axpy_external( FLA_ONE_HALF, y01_l, a01 );
78 // a01 = a01 + 1/2 * alpha11 * y01;
80
81 // A00 = A00 + a01 * b01' + b01 * a01';
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;
89
90 // a01 = a01 * beta11;
92
93 // alpha11 = conj(beta11) * alpha11 * beta11;
94 // = beta11 * alpha11 * beta11;
97
98 // A02 = A02 + b01 * a12t;
100
101 // a12t = 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(), FLA_Scal_external(), and i.

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,
19 A20, a21, A22;
20
21 FLA_Obj BTL, BTR, B00, b01, B02,
23 B20, b21, B22;
24
25 //FLA_Obj yT, y01,
26 // yB, psi11,
27 // y21;
28
29 //FLA_Obj y01_l, y01_r;
30
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
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;
75
76 // a01 = triu( B00 ) * a01;
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;
84
85 // A00 = A00 + a01 * b01' + b01 * a01';
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;
93
94 // a01 = a01 * beta11;
96
97 // alpha11 = conj(beta11) * alpha11 * beta11;
98 // = beta11 * alpha11 * beta11;
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(), FLA_Trmv_external(), and i.

Referenced by FLA_Eig_gest_nu().