libflame revision_anchor
Functions
FLA_Eig_gest_iu.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Eig_gest_iu_blk_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_blk_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_blk_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_blk_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_blk_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_iu_unb_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_unb_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_unb_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_unb_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_unb_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_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_iu_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_iu_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_iu_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_iu_opt_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_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_iu_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_iu_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_iu_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_iu_opt_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_ops_var3 (int m_AB, float *buff_A, int rs_A, int cs_A, float *buff_Y, int rs_Y, int cs_Y, float *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_iu_opd_var3 (int m_AB, double *buff_A, int rs_A, int cs_A, double *buff_Y, int rs_Y, int cs_Y, double *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_iu_opc_var3 (int m_AB, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_Y, int rs_Y, int cs_Y, scomplex *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_iu_opz_var3 (int m_AB, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_Y, int rs_Y, int cs_Y, dcomplex *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_iu_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_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_iu_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_iu_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_iu_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_iu_opt_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_iu_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_iu_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_iu_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_iu_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_iu_blk_var1()

FLA_Error FLA_Eig_gest_iu_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 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 = A00 * B01;
70 FLA_Cntl_sub_hemm( cntl ) );
71
72 // A01 = inv( triu( B00 )' ) * A01;
75 FLA_ONE, B00, A01,
76 FLA_Cntl_sub_trsm1( cntl ) );
77
78 // A01 = A01 - 1/2 * Y01;
80 FLA_Cntl_sub_axpy1( cntl ) );
81
82 // A11 = A11 - A01' * B01 - B01' * A01;
85 FLA_Cntl_sub_her2k( cntl ) );
86
87 // A11 = inv( triu( B11 )' ) * A11 * inv( triu( B11 ) );
89 A11, Y11, B11,
90 FLA_Cntl_sub_eig_gest( cntl ) );
91
92 // A01 = A01 - 1/2 * Y01;
94 FLA_Cntl_sub_axpy2( cntl ) );
95
96 // A01 = A01 * inv( triu( B11 ) );
99 FLA_ONE, B11, A01,
100 FLA_Cntl_sub_trsm2( 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}
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_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition FLA_Trsm_internal.c:16
FLA_Obj FLA_MINUS_ONE_HALF
Definition FLA_Init.c:21
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
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_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
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
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_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_blk_var2()

FLA_Error FLA_Eig_gest_iu_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 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 = 1/2 * A00 * B01;
70 FLA_Cntl_sub_hemm( cntl ) );
71
72 // A01 = A01 - Y01;
74 FLA_Cntl_sub_axpy1( cntl ) );
75
76 // A11 = A11 - A01' * B01 - B01' * A01;
79 FLA_Cntl_sub_her2k( cntl ) );
80
81 // A11 = inv( triu( B11 )' ) * A11 * inv( triu( B11 ) );
83 A11, Y11, B11,
84 FLA_Cntl_sub_eig_gest( cntl ) );
85
86 // A12 = A12 - B01' * A02;
89 FLA_Cntl_sub_gemm1( cntl ) );
90
91 // A12 = inv( triu( B11 )' ) * A12;
94 FLA_ONE, B11, A12,
95 FLA_Cntl_sub_trsm1( cntl ) );
96
97 // A01 = A01 - Y01;
99 FLA_Cntl_sub_axpy2( cntl ) );
100
101 // A01 = A01 * inv( triu( B11 ) );
104 FLA_ONE, B11, A01,
105 FLA_Cntl_sub_trsm2( cntl ) );
106
107 /*------------------------------------------------------------*/
108
109 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
110 A10, A11, /**/ A12,
111 /* ************** */ /* ****************** */
112 &ABL, /**/ &ABR, A20, A21, /**/ A22,
113 FLA_TL );
114
115 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
116 B10, B11, /**/ B12,
117 /* ************** */ /* ****************** */
118 &BBL, /**/ &BBR, B20, B21, /**/ B22,
119 FLA_TL );
120
122 Y11,
123 /* ** */ /* *** */
124 &YB, Y21, FLA_TOP );
125 }
126
127 return FLA_SUCCESS;
128}
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
FLA_Obj FLA_ONE_HALF
Definition FLA_Init.c:19

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_MINUS_ONE, 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_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_blk_var3()

FLA_Error FLA_Eig_gest_iu_blk_var3 ( 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 YTL, YTR, Y00, Y01, Y02,
26 YBL, YBR, Y10, Y11, Y12,
27 Y20, Y21, Y22;
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_2x2( Y, &YTL, &YTR,
38 &YBL, &YBR, 0, 0, FLA_TL );
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_2x2_to_3x3( YTL, /**/ YTR, &Y00, /**/ &Y01, &Y02,
57 /* ************* */ /* ******************** */
58 &Y10, /**/ &Y11, &Y12,
59 YBL, /**/ YBR, &Y20, /**/ &Y21, &Y22,
60 b, b, FLA_BR );
61
62 /*------------------------------------------------------------*/
63
64 // A01 = A01 - 1/2 * Y01;
66 FLA_Cntl_sub_axpy1( cntl ) );
67
68 // A11 = A11 - A01' * B01 - B01' * A01;
71 FLA_Cntl_sub_her2k( cntl ) );
72
73 // A11 = inv( triu( B11 )' ) * A11 * inv( triu( B11 ) );
75 A11, Y11, B11,
76 FLA_Cntl_sub_eig_gest( cntl ) );
77
78 // A12 = A12 - B01' * A02;
81 FLA_Cntl_sub_gemm1( cntl ) );
82
83 // A12 = A12 * inv( triu( B11 )' );
86 FLA_ONE, B11, A12,
87 FLA_Cntl_sub_trsm1( cntl ) );
88
89 // A01 = A01 - 1/2 * Y01;
91 FLA_Cntl_sub_axpy2( cntl ) );
92
93 // A01 = A01 * inv( triu( B11 ) );
96 FLA_ONE, B11, A01,
97 FLA_Cntl_sub_trsm2( cntl ) );
98
99 // Y02 = Y02 + A01 * B12;
102 FLA_Cntl_sub_gemm2( cntl ) );
103
104 // Y12 = A11 * B12;
107 FLA_Cntl_sub_hemm( cntl ) );
108
109 // Y12 = Y12 + A01' * B02;
112 FLA_Cntl_sub_gemm3( cntl ) );
113
114 /*------------------------------------------------------------*/
115
116 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
117 A10, A11, /**/ A12,
118 /* ************** */ /* ****************** */
119 &ABL, /**/ &ABR, A20, A21, /**/ A22,
120 FLA_TL );
121
122 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
123 B10, B11, /**/ B12,
124 /* ************** */ /* ****************** */
125 &BBL, /**/ &BBR, B20, B21, /**/ B22,
126 FLA_TL );
127
128 FLA_Cont_with_3x3_to_2x2( &YTL, /**/ &YTR, Y00, Y01, /**/ Y02,
129 Y10, Y11, /**/ Y12,
130 /* ************** */ /* ****************** */
131 &YBL, /**/ &YBR, Y20, Y21, /**/ Y22,
132 FLA_TL );
133 }
134
135 return FLA_SUCCESS;
136}

References FLA_Axpy_internal(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_blk_var4()

FLA_Error FLA_Eig_gest_iu_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 YL, YR, Y10, Y11, Y12;
24
26 Y12_b;
27
28 dim_t b;
29
30 FLA_Part_2x2( A, &ATL, &ATR,
31 &ABL, &ABR, 0, 0, FLA_TL );
32
33 FLA_Part_2x2( B, &BTL, &BTR,
34 &BBL, &BBR, 0, 0, FLA_TL );
35
36 FLA_Part_1x2( Y, &YL, &YR, 0, FLA_LEFT );
37
38 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
39
41
42 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
43 /* ************* */ /* ******************** */
44 &A10, /**/ &A11, &A12,
45 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
46 b, b, FLA_BR );
47
48 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
49 /* ************* */ /* ******************** */
50 &B10, /**/ &B11, &B12,
51 BBL, /**/ BBR, &B20, /**/ &B21, &B22,
52 b, b, FLA_BR );
53
54 FLA_Repart_1x2_to_1x3( YL, /**/ YR, &Y10, /**/ &Y11, &Y12,
55 b, FLA_RIGHT );
56
57 /*------------------------------------------------------------*/
58
60 &Y12_b, b, FLA_TOP );
61
62 // A01 = A01 * inv( triu( B11 ) );
65 FLA_ONE, B11, A01,
66 FLA_Cntl_sub_trsm1( cntl ) );
67
68 // A02 = A02 - A01 * B12;
71 FLA_Cntl_sub_gemm1( cntl ) );
72
73 // A11 = inv( triu( B11 )' ) * A11 * inv( triu( B11 ) );
75 A11, Y11, B11,
76 FLA_Cntl_sub_eig_gest( cntl ) );
77
78 // Y12 = A11 * B12;
81 FLA_Cntl_sub_hemm( cntl ) );
82
83 // A12 = inv( triu( B11 )' ) * A12;
86 FLA_ONE, B11, A12,
87 FLA_Cntl_sub_trsm2( cntl ) );
88
89 // A12 = A12 - 1/2 * Y12;
91 FLA_Cntl_sub_axpy1( cntl ) );
92
93 // A22 = A22 - A12' * B12 - B12' * A12;
96 FLA_Cntl_sub_her2k( cntl ) );
97
98 // A12 = A12 - 1/2 * Y12;
100 FLA_Cntl_sub_axpy2( 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_1x3_to_1x2( &YL, /**/ &YR, Y10, Y11, /**/ Y12,
117 FLA_LEFT );
118 }
119
120 return FLA_SUCCESS;
121}
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_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

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_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_blk_var5()

FLA_Error FLA_Eig_gest_iu_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 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 // A11 = inv( triu( B11 )' ) * A11 * inv( triu( B11 ) );
66 A11, Y11, B11,
67 FLA_Cntl_sub_eig_gest( cntl ) );
68
69 // Y12 = A11 * B12;
72 FLA_Cntl_sub_hemm( cntl ) );
73
74 // A12 = inv( triu( B11 )' ) * A12;
77 FLA_ONE, B11, A12,
78 FLA_Cntl_sub_trsm1( cntl ) );
79
80 // A12 = A12 - 1/2 * Y12;
82 FLA_Cntl_sub_axpy1( cntl ) );
83
84 // A22 = A22 - 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 * inv( triu( B22 ) );
96 FLA_ONE, B22, A12,
97 FLA_Cntl_sub_trsm2( 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}

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_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_opc_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
284{
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
297 scomplex* y01 = buff_y + (0 )*inc_y;
298
299 scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
300 scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
301 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
302
303 int m_behind = i;
304
305 /*------------------------------------------------------------*/
306
307 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
308 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
311 m_behind,
312 buff_1,
313 A00, rs_A, cs_A,
314 b01, rs_B,
315 buff_0,
316 y01, inc_y );
317
318 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
319 // B00, a01 );
323 m_behind,
324 B00, rs_B, cs_B,
325 a01, rs_A );
326
327 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
329 m_behind,
330 buff_m1h,
331 y01, inc_y,
332 a01, rs_A );
333
334 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
336 m_behind,
337 buff_m1,
338 a01, rs_A,
339 b01, rs_B,
340 buff_1,
341 alpha11 );
342
343 // FLA_Inv_scal_external( beta11, alpha11 );
344 // FLA_Inv_scal_external( beta11, alpha11 );
347
348 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
350 m_behind,
351 buff_m1h,
352 y01, inc_y,
353 a01, rs_A );
354
355 // FLA_Inv_scal_external( beta11, a01 );
357 m_behind,
358 beta11,
359 a01, rs_A );
360
361 /*------------------------------------------------------------*/
362
363 }
364
365 return FLA_SUCCESS;
366}
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_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_invscalv.c:52
void bl1_ctrsv(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_trsv.c:99
@ BLIS1_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ 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_cinvscalv(), bl1_ctrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_opc_var2()

FLA_Error FLA_Eig_gest_iu_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 
)
306{
311 int i;
312
313 for ( i = 0; i < m_AB; ++i )
314 {
315 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
316 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
317 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
318 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
319 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
320
321 scomplex* y01 = buff_y + (0 )*inc_y;
322
323 scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
324 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
325
326 int m_ahead = m_AB - i - 1;
327 int m_behind = i;
328
329 /*------------------------------------------------------------*/
330
331 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
332 // FLA_ONE_HALF, A00, b01, FLA_ZERO, y01_l );
335 m_behind,
336 buff_1h,
337 A00, rs_A, cs_A,
338 b01, rs_B,
339 buff_0,
340 y01, inc_y );
341
342 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
344 m_behind,
345 buff_m1,
346 y01, inc_y,
347 a01, rs_A );
348
349 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
351 m_behind,
352 buff_m1,
353 a01, rs_A,
354 b01, rs_B,
355 buff_1,
356 alpha11 );
357
358 // FLA_Inv_scal_external( beta11, alpha11 );
359 // FLA_Inv_scal_external( beta11, alpha11 );
362
363 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
364 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
367 m_behind,
368 m_ahead,
369 buff_m1,
370 A02, rs_A, cs_A,
371 b01, rs_B,
372 buff_1,
373 a12t, cs_A );
374
375 // FLA_Inv_scal_external( beta11, a12t );
377 m_ahead,
378 beta11,
379 a12t, cs_A );
380
381 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
383 m_behind,
384 buff_m1,
385 y01, inc_y,
386 a01, rs_A );
387
388 // FLA_Inv_scal_external( beta11, a01 );
390 m_behind,
391 beta11,
392 a01, rs_A );
393
394 /*------------------------------------------------------------*/
395
396 }
397
398 return FLA_SUCCESS;
399}
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_TRANSPOSE
Definition blis_type_defs.h:55

References bl1_caxpyv(), bl1_cdot2s(), bl1_cgemv(), bl1_chemv(), bl1_cinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var2().

◆ FLA_Eig_gest_iu_opc_var3()

FLA_Error FLA_Eig_gest_iu_opc_var3 ( int  m_AB,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_Y,
int  rs_Y,
int  cs_Y,
scomplex buff_B,
int  rs_B,
int  cs_B 
)
352{
356 int i;
357
358 for ( i = 0; i < m_AB; ++i )
359 {
360 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
361 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
362 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
363 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
364
365 scomplex* y01 = buff_Y + (i )*cs_Y + (0 )*rs_Y;
366 scomplex* Y02 = buff_Y + (i+1)*cs_Y + (0 )*rs_Y;
367 scomplex* y12t = buff_Y + (i+1)*cs_Y + (i )*rs_Y;
368
369 scomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
370 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
371 scomplex* B02 = buff_B + (i+1)*cs_B + (0 )*rs_B;
372 scomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
373
374 int m_ahead = m_AB - i - 1;
375 int m_behind = i;
376
377 /*------------------------------------------------------------*/
378
379 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
381 m_behind,
382 buff_m1h,
383 y01, rs_Y,
384 a01, rs_A );
385
386 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
388 m_behind,
389 buff_m1,
390 a01, rs_A,
391 b01, rs_B,
392 buff_1,
393 alpha11 );
394
395 // FLA_Inv_scal_external( beta11, alpha11 );
396 // FLA_Inv_scal_external( beta11, alpha11 );
399
400 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
401 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
404 m_behind,
405 m_ahead,
406 buff_m1,
407 A02, rs_A, cs_A,
408 b01, rs_B,
409 buff_1,
410 a12t, cs_A );
411
412 // FLA_Inv_scal_external( beta11, a12t );
414 m_ahead,
415 beta11,
416 a12t, cs_A );
417
418 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
420 m_behind,
421 buff_m1h,
422 y01, rs_Y,
423 a01, rs_A );
424
425 // FLA_Inv_scal_external( beta11, a01 );
427 m_behind,
428 beta11,
429 a01, rs_A );
430
431 // FLA_Ger_external( FLA_ONE, a01, b12t, Y02 );
434 m_behind,
435 m_ahead,
436 buff_1,
437 a01, rs_A,
438 b12t, cs_B,
439 Y02, rs_Y, cs_Y );
440
441 // FLA_Copy_external( b12t, y12t );
442 // FLA_Scal_external( alpha11, y12t );
444 m_ahead,
445 b12t, cs_B,
446 y12t, cs_Y );
448 m_ahead,
449 alpha11,
450 y12t, cs_Y );
451
452 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
453 // FLA_ONE, B02, a01, FLA_ONE, y12t );
456 m_behind,
457 m_ahead,
458 buff_1,
459 B02, rs_B, cs_B,
460 a01, rs_A,
461 buff_1,
462 y12t, cs_Y );
463
464 /*------------------------------------------------------------*/
465
466 }
467
468 return FLA_SUCCESS;
469}
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
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_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_scalv.c:46

References bl1_caxpyv(), bl1_ccopyv(), bl1_cdot2s(), bl1_cgemv(), bl1_cger(), bl1_cinvscalv(), bl1_cscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_iu_opt_var3().

◆ FLA_Eig_gest_iu_opc_var4()

FLA_Error FLA_Eig_gest_iu_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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
294 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
295 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
296 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
297 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
298
299 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
300 scomplex* b12t = buff_B + (i+1)*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_Inv_scal_external( beta11, a01 );
311 m_behind,
312 beta11,
313 a01, rs_A );
314
315 // FLA_Ger_external( FLA_MINUS_ONE, a01, b12t, A02 );
318 m_behind,
319 m_ahead,
320 buff_m1,
321 a01, rs_A,
322 b12t, cs_B,
323 A02, rs_A, cs_A );
324
325 // FLA_Inv_scal_external( beta11, alpha11 );
326 // FLA_Inv_scal_external( beta11, alpha11 );
329
330 // FLA_Copy_external( alpha11, psi11 );
331 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
333
334 // FLA_Inv_scal_external( beta11, a12t );
336 m_ahead,
337 beta11,
338 a12t, cs_A );
339
340 // FLA_Axpy_external( psi11, b12t, a12t );
342 m_ahead,
343 &psi11,
344 b12t, cs_B,
345 a12t, cs_A );
346
347 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
348 // FLA_MINUS_ONE, a12t, b12t, A22 );
351 m_ahead,
352 buff_m1,
353 a12t, cs_A,
354 b12t, cs_B,
355 A22, rs_A, cs_A );
356
357 // FLA_Axpy_external( psi11, b12t, a12t );
359 m_ahead,
360 &psi11,
361 b12t, cs_B,
362 a12t, cs_A );
363
364 /*------------------------------------------------------------*/
365
366 }
367
368 return FLA_SUCCESS;
369}
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_cinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var4().

◆ FLA_Eig_gest_iu_opc_var5()

FLA_Error FLA_Eig_gest_iu_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 
)
268{
271 int i;
272
273 for ( i = 0; i < m_AB; ++i )
274 {
275 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
276 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
277 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
278
279 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
280 scomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
281 scomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
282
284
285 int m_ahead = m_AB - i - 1;
286
287 /*------------------------------------------------------------*/
288
289 // FLA_Inv_scal_external( beta11, alpha11 );
290 // FLA_Inv_scal_external( beta11, alpha11 );
293
294 // FLA_Copy_external( alpha11, psi11 );
295 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
297
298 // FLA_Inv_scal_external( beta11, a12t );
300 m_ahead,
301 beta11,
302 a12t, cs_A );
303
304 // FLA_Axpy_external( psi11, b12t, a12t );
306 m_ahead,
307 &psi11,
308 b12t, cs_B,
309 a12t, cs_A );
310
311 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
312 // FLA_MINUS_ONE, a12t, b12t, A22 );
315 m_ahead,
316 buff_m1,
317 a12t, cs_A,
318 b12t, cs_B,
319 A22, rs_A, cs_A );
320
321 // FLA_Axpy_external( psi11, b12t, a12t );
323 m_ahead,
324 &psi11,
325 b12t, cs_B,
326 a12t, cs_A );
327
328 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
329 // B22, a12t );
333 m_ahead,
334 B22, rs_B, cs_B,
335 a12t, cs_A );
336
337 /*------------------------------------------------------------*/
338
339 }
340
341 return FLA_SUCCESS;
342}

References bl1_caxpyv(), bl1_cher2(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var5().

◆ FLA_Eig_gest_iu_opd_var1()

FLA_Error FLA_Eig_gest_iu_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_1 = FLA_DOUBLE_PTR( FLA_ONE );
196 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
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
207 double* y01 = buff_y + (0 )*inc_y;
208
209 double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
210 double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
211 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
212
213 int m_behind = i;
214
215 /*------------------------------------------------------------*/
216
217 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
218 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
221 m_behind,
222 buff_1,
223 A00, rs_A, cs_A,
224 b01, rs_B,
225 buff_0,
226 y01, inc_y );
227
228 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
229 // B00, a01 );
233 m_behind,
234 B00, rs_B, cs_B,
235 a01, rs_A );
236
237 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
239 m_behind,
240 buff_m1h,
241 y01, inc_y,
242 a01, rs_A );
243
244 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
246 m_behind,
247 buff_m1,
248 a01, rs_A,
249 b01, rs_B,
250 buff_1,
251 alpha11 );
252
253 // FLA_Inv_scal_external( beta11, alpha11 );
254 // FLA_Inv_scal_external( beta11, alpha11 );
257
258 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
260 m_behind,
261 buff_m1h,
262 y01, inc_y,
263 a01, rs_A );
264
265 // FLA_Inv_scal_external( beta11, a01 );
267 m_behind,
268 beta11,
269 a01, rs_A );
270
271 /*------------------------------------------------------------*/
272
273 }
274
275 return FLA_SUCCESS;
276}
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_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_invscalv.c:26
void bl1_dtrsv(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_trsv.c:56

References bl1_daxpyv(), bl1_ddot2s(), bl1_dhemv(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_opd_var2()

FLA_Error FLA_Eig_gest_iu_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_1 = FLA_DOUBLE_PTR( FLA_ONE );
208 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
210 int i;
211
212 for ( i = 0; i < m_AB; ++i )
213 {
214 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
215 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
216 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
217 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
218 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
219
220 double* y01 = buff_y + (0 )*inc_y;
221
222 double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
223 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
224
225 int m_ahead = m_AB - i - 1;
226 int m_behind = i;
227
228 /*------------------------------------------------------------*/
229
230 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
231 // FLA_ONE_HALF, A00, b01, FLA_ZERO, y01_l );
234 m_behind,
235 buff_1h,
236 A00, rs_A, cs_A,
237 b01, rs_B,
238 buff_0,
239 y01, inc_y );
240
241 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
243 m_behind,
244 buff_m1,
245 y01, inc_y,
246 a01, rs_A );
247
248 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
250 m_behind,
251 buff_m1,
252 a01, rs_A,
253 b01, rs_B,
254 buff_1,
255 alpha11 );
256
257 // FLA_Inv_scal_external( beta11, alpha11 );
258 // FLA_Inv_scal_external( beta11, alpha11 );
261
262 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
263 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
266 m_behind,
267 m_ahead,
268 buff_m1,
269 A02, rs_A, cs_A,
270 b01, rs_B,
271 buff_1,
272 a12t, cs_A );
273
274 // FLA_Inv_scal_external( beta11, a12t );
276 m_ahead,
277 beta11,
278 a12t, cs_A );
279
280 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
282 m_behind,
283 buff_m1,
284 y01, inc_y,
285 a01, rs_A );
286
287 // FLA_Inv_scal_external( beta11, a01 );
289 m_behind,
290 beta11,
291 a01, rs_A );
292
293 /*------------------------------------------------------------*/
294
295 }
296
297 return FLA_SUCCESS;
298}
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_dinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var2().

◆ FLA_Eig_gest_iu_opd_var3()

FLA_Error FLA_Eig_gest_iu_opd_var3 ( int  m_AB,
double buff_A,
int  rs_A,
int  cs_A,
double buff_Y,
int  rs_Y,
int  cs_Y,
double buff_B,
int  rs_B,
int  cs_B 
)
227{
228 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
231 int i;
232
233 for ( i = 0; i < m_AB; ++i )
234 {
235 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
236 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
237 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
238 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
239
240 double* y01 = buff_Y + (i )*cs_Y + (0 )*rs_Y;
241 double* Y02 = buff_Y + (i+1)*cs_Y + (0 )*rs_Y;
242 double* y12t = buff_Y + (i+1)*cs_Y + (i )*rs_Y;
243
244 double* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
245 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
246 double* B02 = buff_B + (i+1)*cs_B + (0 )*rs_B;
247 double* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
248
249 int m_ahead = m_AB - i - 1;
250 int m_behind = i;
251
252 /*------------------------------------------------------------*/
253
254 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
256 m_behind,
257 buff_m1h,
258 y01, rs_Y,
259 a01, rs_A );
260
261 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
263 m_behind,
264 buff_m1,
265 a01, rs_A,
266 b01, rs_B,
267 buff_1,
268 alpha11 );
269
270 // FLA_Inv_scal_external( beta11, alpha11 );
271 // FLA_Inv_scal_external( beta11, alpha11 );
274
275 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
276 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
279 m_behind,
280 m_ahead,
281 buff_m1,
282 A02, rs_A, cs_A,
283 b01, rs_B,
284 buff_1,
285 a12t, cs_A );
286
287 // FLA_Inv_scal_external( beta11, a12t );
289 m_ahead,
290 beta11,
291 a12t, cs_A );
292
293 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
295 m_behind,
296 buff_m1h,
297 y01, rs_Y,
298 a01, rs_A );
299
300 // FLA_Inv_scal_external( beta11, a01 );
302 m_behind,
303 beta11,
304 a01, rs_A );
305
306 // FLA_Ger_external( FLA_ONE, a01, b12t, Y02 );
309 m_behind,
310 m_ahead,
311 buff_1,
312 a01, rs_A,
313 b12t, cs_B,
314 Y02, rs_Y, cs_Y );
315
316 // FLA_Copy_external( b12t, y12t );
317 // FLA_Scal_external( alpha11, y12t );
319 m_ahead,
320 b12t, cs_B,
321 y12t, cs_Y );
323 m_ahead,
324 alpha11,
325 y12t, cs_Y );
326
327 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
328 // FLA_ONE, B02, a01, FLA_ONE, y12t );
331 m_behind,
332 m_ahead,
333 buff_1,
334 B02, rs_B, cs_B,
335 a01, rs_A,
336 buff_1,
337 y12t, cs_Y );
338
339 /*------------------------------------------------------------*/
340
341 }
342
343 return FLA_SUCCESS;
344}
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_ger.c:62
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24

References bl1_daxpyv(), bl1_dcopyv(), bl1_ddot2s(), bl1_dgemv(), bl1_dger(), bl1_dinvscalv(), bl1_dscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_iu_opt_var3().

◆ FLA_Eig_gest_iu_opd_var4()

FLA_Error FLA_Eig_gest_iu_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 
)
195{
198 int i;
199
200 for ( i = 0; i < m_AB; ++i )
201 {
202 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
203 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
204 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
205 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
206 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
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
211 double psi11;
212
213 int m_ahead = m_AB - i - 1;
214 int m_behind = i;
215
216 /*------------------------------------------------------------*/
217
218 // FLA_Inv_scal_external( beta11, a01 );
220 m_behind,
221 beta11,
222 a01, rs_A );
223
224 // FLA_Ger_external( FLA_MINUS_ONE, a01, b12t, A02 );
227 m_behind,
228 m_ahead,
229 buff_m1,
230 a01, rs_A,
231 b12t, cs_B,
232 A02, rs_A, cs_A );
233
234 // FLA_Inv_scal_external( beta11, alpha11 );
235 // FLA_Inv_scal_external( beta11, alpha11 );
238
239 // FLA_Copy_external( alpha11, psi11 );
240 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
242
243 // FLA_Inv_scal_external( beta11, a12t );
245 m_ahead,
246 beta11,
247 a12t, cs_A );
248
249 // FLA_Axpy_external( psi11, b12t, a12t );
251 m_ahead,
252 &psi11,
253 b12t, cs_B,
254 a12t, cs_A );
255
256 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
257 // FLA_MINUS_ONE, a12t, b12t, A22 );
260 m_ahead,
261 buff_m1,
262 a12t, cs_A,
263 b12t, cs_B,
264 A22, rs_A, cs_A );
265
266 // FLA_Axpy_external( psi11, b12t, a12t );
268 m_ahead,
269 &psi11,
270 b12t, cs_B,
271 a12t, cs_A );
272
273 /*------------------------------------------------------------*/
274
275 }
276
277 return FLA_SUCCESS;
278}
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_dinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var4().

◆ FLA_Eig_gest_iu_opd_var5()

FLA_Error FLA_Eig_gest_iu_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 
)
186{
189 int i;
190
191 for ( i = 0; i < m_AB; ++i )
192 {
193 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
194 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
195 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
196
197 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
198 double* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
199 double* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
200
201 double psi11;
202
203 int m_ahead = m_AB - i - 1;
204
205 /*------------------------------------------------------------*/
206
207 // FLA_Inv_scal_external( beta11, alpha11 );
208 // FLA_Inv_scal_external( beta11, alpha11 );
211
212 // FLA_Copy_external( alpha11, psi11 );
213 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
215
216 // FLA_Inv_scal_external( beta11, a12t );
218 m_ahead,
219 beta11,
220 a12t, cs_A );
221
222 // FLA_Axpy_external( psi11, b12t, a12t );
224 m_ahead,
225 &psi11,
226 b12t, cs_B,
227 a12t, cs_A );
228
229 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
230 // FLA_MINUS_ONE, a12t, b12t, A22 );
233 m_ahead,
234 buff_m1,
235 a12t, cs_A,
236 b12t, cs_B,
237 A22, rs_A, cs_A );
238
239 // FLA_Axpy_external( psi11, b12t, a12t );
241 m_ahead,
242 &psi11,
243 b12t, cs_B,
244 a12t, cs_A );
245
246 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
247 // B22, a12t );
251 m_ahead,
252 B22, rs_B, cs_B,
253 a12t, cs_A );
254
255 /*------------------------------------------------------------*/
256
257 }
258
259 return FLA_SUCCESS;
260}

References bl1_daxpyv(), bl1_dher2(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var5().

◆ FLA_Eig_gest_iu_ops_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
104{
105 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
106 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
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* y01 = buff_y + (0 )*inc_y;
118
119 float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
120 float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
121 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
122
123 int m_behind = i;
124
125 /*------------------------------------------------------------*/
126
127 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
128 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
131 m_behind,
132 buff_1,
133 A00, rs_A, cs_A,
134 b01, rs_B,
135 buff_0,
136 y01, inc_y );
137
138 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
139 // B00, a01 );
143 m_behind,
144 B00, rs_B, cs_B,
145 a01, rs_A );
146
147 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
149 m_behind,
150 buff_m1h,
151 y01, inc_y,
152 a01, rs_A );
153
154 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
156 m_behind,
157 buff_m1,
158 a01, rs_A,
159 b01, rs_B,
160 buff_1,
161 alpha11 );
162
163 // FLA_Inv_scal_external( beta11, alpha11 );
164 // FLA_Inv_scal_external( beta11, alpha11 );
167
168 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
170 m_behind,
171 buff_m1h,
172 y01, inc_y,
173 a01, rs_A );
174
175 // FLA_Inv_scal_external( beta11, a01 );
177 m_behind,
178 beta11,
179 a01, rs_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_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_invscalv.c:13
void bl1_strsv(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_trsv.c:13

References bl1_saxpyv(), bl1_sdot2s(), bl1_shemv(), bl1_sinvscalv(), bl1_strsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_ops_var2()

FLA_Error FLA_Eig_gest_iu_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 
)
104{
105 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
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* y01 = buff_y + (0 )*inc_y;
120
121 float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
122 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
123
124 int m_ahead = m_AB - i - 1;
125 int m_behind = i;
126
127 /*------------------------------------------------------------*/
128
129 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
130 // FLA_ONE_HALF, A00, b01, FLA_ZERO, y01_l );
133 m_behind,
134 buff_1h,
135 A00, rs_A, cs_A,
136 b01, rs_B,
137 buff_0,
138 y01, inc_y );
139
140 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
142 m_behind,
143 buff_m1,
144 y01, inc_y,
145 a01, rs_A );
146
147 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
149 m_behind,
150 buff_m1,
151 a01, rs_A,
152 b01, rs_B,
153 buff_1,
154 alpha11 );
155
156 // FLA_Inv_scal_external( beta11, alpha11 );
157 // FLA_Inv_scal_external( beta11, alpha11 );
160
161 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
162 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
165 m_behind,
166 m_ahead,
167 buff_m1,
168 A02, rs_A, cs_A,
169 b01, rs_B,
170 buff_1,
171 a12t, cs_A );
172
173 // FLA_Inv_scal_external( beta11, a12t );
175 m_ahead,
176 beta11,
177 a12t, cs_A );
178
179 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
181 m_behind,
182 buff_m1,
183 y01, inc_y,
184 a01, rs_A );
185
186 // FLA_Inv_scal_external( beta11, a01 );
188 m_behind,
189 beta11,
190 a01, rs_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_sinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var2().

◆ FLA_Eig_gest_iu_ops_var3()

FLA_Error FLA_Eig_gest_iu_ops_var3 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_Y,
int  rs_Y,
int  cs_Y,
float buff_B,
int  rs_B,
int  cs_B 
)
102{
103 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
106 int i;
107
108 for ( i = 0; i < m_AB; ++i )
109 {
110 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
111 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
112 float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
113 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
114
115 float* y01 = buff_Y + (i )*cs_Y + (0 )*rs_Y;
116 float* Y02 = buff_Y + (i+1)*cs_Y + (0 )*rs_Y;
117 float* y12t = buff_Y + (i+1)*cs_Y + (i )*rs_Y;
118
119 float* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
120 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
121 float* B02 = buff_B + (i+1)*cs_B + (0 )*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_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
131 m_behind,
132 buff_m1h,
133 y01, rs_Y,
134 a01, rs_A );
135
136 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
138 m_behind,
139 buff_m1,
140 a01, rs_A,
141 b01, rs_B,
142 buff_1,
143 alpha11 );
144
145 // FLA_Inv_scal_external( beta11, alpha11 );
146 // FLA_Inv_scal_external( beta11, alpha11 );
149
150 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
151 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
154 m_behind,
155 m_ahead,
156 buff_m1,
157 A02, rs_A, cs_A,
158 b01, rs_B,
159 buff_1,
160 a12t, cs_A );
161
162 // FLA_Inv_scal_external( beta11, a12t );
164 m_ahead,
165 beta11,
166 a12t, cs_A );
167
168 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
170 m_behind,
171 buff_m1h,
172 y01, rs_Y,
173 a01, rs_A );
174
175 // FLA_Inv_scal_external( beta11, a01 );
177 m_behind,
178 beta11,
179 a01, rs_A );
180
181 // FLA_Ger_external( FLA_ONE, a01, b12t, Y02 );
184 m_behind,
185 m_ahead,
186 buff_1,
187 a01, rs_A,
188 b12t, cs_B,
189 Y02, rs_Y, cs_Y );
190
191 // FLA_Copy_external( b12t, y12t );
192 // FLA_Scal_external( alpha11, y12t );
194 m_ahead,
195 b12t, cs_B,
196 y12t, cs_Y );
198 m_ahead,
199 alpha11,
200 y12t, cs_Y );
201
202 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
203 // FLA_ONE, B02, a01, FLA_ONE, y12t );
206 m_behind,
207 m_ahead,
208 buff_1,
209 B02, rs_B, cs_B,
210 a01, rs_A,
211 buff_1,
212 y12t, cs_Y );
213
214 /*------------------------------------------------------------*/
215
216 }
217
218 return FLA_SUCCESS;
219}
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition bl1_copyv.c:35
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_ger.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13

References bl1_saxpyv(), bl1_scopyv(), bl1_sdot2s(), bl1_sgemv(), bl1_sger(), bl1_sinvscalv(), bl1_sscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_iu_opt_var3().

◆ FLA_Eig_gest_iu_ops_var4()

FLA_Error FLA_Eig_gest_iu_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 
)
104{
107 int i;
108
109 for ( i = 0; i < m_AB; ++i )
110 {
111 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
112 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
113 float* A02 = buff_A + (i+1)*cs_A + (0 )*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* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
118 float* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
119
120 float psi11;
121
122 int m_ahead = m_AB - i - 1;
123 int m_behind = i;
124
125 /*------------------------------------------------------------*/
126
127 // FLA_Inv_scal_external( beta11, a01 );
129 m_behind,
130 beta11,
131 a01, rs_A );
132
133 // FLA_Ger_external( FLA_MINUS_ONE, a01, b12t, A02 );
136 m_behind,
137 m_ahead,
138 buff_m1,
139 a01, rs_A,
140 b12t, cs_B,
141 A02, rs_A, cs_A );
142
143 // FLA_Inv_scal_external( beta11, alpha11 );
144 // FLA_Inv_scal_external( beta11, alpha11 );
147
148 // FLA_Copy_external( alpha11, psi11 );
149 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
151
152 // FLA_Inv_scal_external( beta11, a12t );
154 m_ahead,
155 beta11,
156 a12t, cs_A );
157
158 // FLA_Axpy_external( psi11, b12t, a12t );
160 m_ahead,
161 &psi11,
162 b12t, cs_B,
163 a12t, cs_A );
164
165 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
166 // FLA_MINUS_ONE, a12t, b12t, A22 );
169 m_ahead,
170 buff_m1,
171 a12t, cs_A,
172 b12t, cs_B,
173 A22, rs_A, cs_A );
174
175 // FLA_Axpy_external( psi11, b12t, a12t );
177 m_ahead,
178 &psi11,
179 b12t, cs_B,
180 a12t, cs_A );
181
182 /*------------------------------------------------------------*/
183
184 }
185
186 return FLA_SUCCESS;
187}
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_sinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var4().

◆ FLA_Eig_gest_iu_ops_var5()

FLA_Error FLA_Eig_gest_iu_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 
)
104{
107 int i;
108
109 for ( i = 0; i < m_AB; ++i )
110 {
111 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
112 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
113 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
114
115 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
116 float* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
117 float* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
118
119 float psi11;
120
121 int m_ahead = m_AB - i - 1;
122
123 /*------------------------------------------------------------*/
124
125 // FLA_Inv_scal_external( beta11, alpha11 );
126 // FLA_Inv_scal_external( beta11, alpha11 );
129
130 // FLA_Copy_external( alpha11, psi11 );
131 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
133
134 // FLA_Inv_scal_external( beta11, a12t );
136 m_ahead,
137 beta11,
138 a12t, cs_A );
139
140 // FLA_Axpy_external( psi11, b12t, a12t );
142 m_ahead,
143 &psi11,
144 b12t, cs_B,
145 a12t, cs_A );
146
147 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
148 // FLA_MINUS_ONE, a12t, b12t, A22 );
151 m_ahead,
152 buff_m1,
153 a12t, cs_A,
154 b12t, cs_B,
155 A22, rs_A, cs_A );
156
157 // FLA_Axpy_external( psi11, b12t, a12t );
159 m_ahead,
160 &psi11,
161 b12t, cs_B,
162 a12t, cs_A );
163
164 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
165 // B22, a12t );
169 m_ahead,
170 B22, rs_B, cs_B,
171 a12t, cs_A );
172
173 /*------------------------------------------------------------*/
174
175 }
176
177 return FLA_SUCCESS;
178}

References bl1_saxpyv(), bl1_sher2(), bl1_sinvscalv(), bl1_strsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var5().

◆ FLA_Eig_gest_iu_opt_var1()

FLA_Error FLA_Eig_gest_iu_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 yL, yR;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33
35
36 switch ( datatype )
37 {
38 case FLA_FLOAT:
39 {
40 float* buff_A = FLA_FLOAT_PTR( A );
41 float* buff_y = FLA_FLOAT_PTR( yL );
42 float* buff_B = FLA_FLOAT_PTR( B );
43
47 buff_B, rs_B, cs_B );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_y = FLA_DOUBLE_PTR( yL );
56 double* buff_B = FLA_DOUBLE_PTR( B );
57
61 buff_B, rs_B, cs_B );
62
63 break;
64 }
65
66 case FLA_COMPLEX:
67 {
71
75 buff_B, rs_B, cs_B );
76
77 break;
78 }
79
81 {
85
89 buff_B, rs_B, cs_B );
90
91 break;
92 }
93 }
94
95 return FLA_SUCCESS;
96}
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:190
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:100
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:280
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var1.c:370
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_iu_opc_var1(), FLA_Eig_gest_iu_opd_var1(), FLA_Eig_gest_iu_ops_var1(), FLA_Eig_gest_iu_opz_var1(), 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_iu().

◆ FLA_Eig_gest_iu_opt_var2()

FLA_Error FLA_Eig_gest_iu_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 yL, yR;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33
35
36 switch ( datatype )
37 {
38 case FLA_FLOAT:
39 {
40 float* buff_A = FLA_FLOAT_PTR( A );
41 float* buff_y = FLA_FLOAT_PTR( yL );
42 float* buff_B = FLA_FLOAT_PTR( B );
43
47 buff_B, rs_B, cs_B );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_y = FLA_DOUBLE_PTR( yL );
56 double* buff_B = FLA_DOUBLE_PTR( B );
57
61 buff_B, rs_B, cs_B );
62
63 break;
64 }
65
66 case FLA_COMPLEX:
67 {
71
75 buff_B, rs_B, cs_B );
76
77 break;
78 }
79
81 {
85
89 buff_B, rs_B, cs_B );
90
91 break;
92 }
93 }
94
95 return FLA_SUCCESS;
96}
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var2.c:100
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var2.c:302
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var2.c:403
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var2.c:201

References FLA_Eig_gest_iu_opc_var2(), FLA_Eig_gest_iu_opd_var2(), FLA_Eig_gest_iu_ops_var2(), FLA_Eig_gest_iu_opz_var2(), 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_iu().

◆ FLA_Eig_gest_iu_opt_var3()

FLA_Error FLA_Eig_gest_iu_opt_var3 ( 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 rs_Y, cs_Y;
20
21 datatype = FLA_Obj_datatype( A );
22
24
27
30
33
34 switch ( datatype )
35 {
36 case FLA_FLOAT:
37 {
38 float* buff_A = FLA_FLOAT_PTR( A );
39 float* buff_Y = FLA_FLOAT_PTR( Y );
40 float* buff_B = FLA_FLOAT_PTR( B );
41
45 buff_B, rs_B, cs_B );
46
47 break;
48 }
49
50 case FLA_DOUBLE:
51 {
52 double* buff_A = FLA_DOUBLE_PTR( A );
53 double* buff_Y = FLA_DOUBLE_PTR( Y );
54 double* buff_B = FLA_DOUBLE_PTR( B );
55
59 buff_B, rs_B, cs_B );
60
61 break;
62 }
63
64 case FLA_COMPLEX:
65 {
69
73 buff_B, rs_B, cs_B );
74
75 break;
76 }
77
79 {
83
87 buff_B, rs_B, cs_B );
88
89 break;
90 }
91 }
92
93 return FLA_SUCCESS;
94}
FLA_Error FLA_Eig_gest_iu_opd_var3(int m_AB, double *buff_A, int rs_A, int cs_A, double *buff_Y, int rs_Y, int cs_Y, double *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_iu_opt_var3.c:223
FLA_Error FLA_Eig_gest_iu_ops_var3(int m_AB, float *buff_A, int rs_A, int cs_A, float *buff_Y, int rs_Y, int cs_Y, float *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_iu_opt_var3.c:98
FLA_Error FLA_Eig_gest_iu_opc_var3(int m_AB, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_Y, int rs_Y, int cs_Y, scomplex *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_iu_opt_var3.c:348
FLA_Error FLA_Eig_gest_iu_opz_var3(int m_AB, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_Y, int rs_Y, int cs_Y, dcomplex *buff_B, int rs_B, int cs_B)
Definition FLA_Eig_gest_iu_opt_var3.c:473

References FLA_Eig_gest_iu_opc_var3(), FLA_Eig_gest_iu_opd_var3(), FLA_Eig_gest_iu_ops_var3(), FLA_Eig_gest_iu_opz_var3(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_opt_var4()

FLA_Error FLA_Eig_gest_iu_opt_var4 ( 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 yL, yR;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33
35
36 switch ( datatype )
37 {
38 case FLA_FLOAT:
39 {
40 float* buff_A = FLA_FLOAT_PTR( A );
41 float* buff_y = FLA_FLOAT_PTR( yL );
42 float* buff_B = FLA_FLOAT_PTR( B );
43
47 buff_B, rs_B, cs_B );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_y = FLA_DOUBLE_PTR( yL );
56 double* buff_B = FLA_DOUBLE_PTR( B );
57
61 buff_B, rs_B, cs_B );
62
63 break;
64 }
65
66 case FLA_COMPLEX:
67 {
71
75 buff_B, rs_B, cs_B );
76
77 break;
78 }
79
81 {
85
89 buff_B, rs_B, cs_B );
90
91 break;
92 }
93 }
94
95 return FLA_SUCCESS;
96}
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var4.c:282
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var4.c:373
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var4.c:191
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var4.c:100

References FLA_Eig_gest_iu_opc_var4(), FLA_Eig_gest_iu_opd_var4(), FLA_Eig_gest_iu_ops_var4(), FLA_Eig_gest_iu_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_iu().

◆ FLA_Eig_gest_iu_opt_var5()

FLA_Error FLA_Eig_gest_iu_opt_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Datatype datatype;
16 int m_AB;
17 int rs_A, cs_A;
18 int rs_B, cs_B;
19 int inc_y;
20 FLA_Obj yL, yR;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33
35
36 switch ( datatype )
37 {
38 case FLA_FLOAT:
39 {
40 float* buff_A = FLA_FLOAT_PTR( A );
41 float* buff_y = FLA_FLOAT_PTR( yL );
42 float* buff_B = FLA_FLOAT_PTR( B );
43
47 buff_B, rs_B, cs_B );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_y = FLA_DOUBLE_PTR( yL );
56 double* buff_B = FLA_DOUBLE_PTR( B );
57
61 buff_B, rs_B, cs_B );
62
63 break;
64 }
65
66 case FLA_COMPLEX:
67 {
71
75 buff_B, rs_B, cs_B );
76
77 break;
78 }
79
81 {
85
89 buff_B, rs_B, cs_B );
90
91 break;
92 }
93 }
94
95 return FLA_SUCCESS;
96}
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var5.c:346
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var5.c:182
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var5.c:100
FLA_Error FLA_Eig_gest_iu_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_iu_opt_var5.c:264

References FLA_Eig_gest_iu_opc_var5(), FLA_Eig_gest_iu_opd_var5(), FLA_Eig_gest_iu_ops_var5(), FLA_Eig_gest_iu_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_iu().

◆ FLA_Eig_gest_iu_opz_var1()

FLA_Error FLA_Eig_gest_iu_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 
)
374{
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
387 dcomplex* y01 = buff_y + (0 )*inc_y;
388
389 dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
390 dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
391 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
392
393 int m_behind = i;
394
395 /*------------------------------------------------------------*/
396
397 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
398 // FLA_ONE, A00, b01, FLA_ZERO, y01_l );
401 m_behind,
402 buff_1,
403 A00, rs_A, cs_A,
404 b01, rs_B,
405 buff_0,
406 y01, inc_y );
407
408 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
409 // B00, a01 );
413 m_behind,
414 B00, rs_B, cs_B,
415 a01, rs_A );
416
417 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
419 m_behind,
420 buff_m1h,
421 y01, inc_y,
422 a01, rs_A );
423
424 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
426 m_behind,
427 buff_m1,
428 a01, rs_A,
429 b01, rs_B,
430 buff_1,
431 alpha11 );
432
433 // FLA_Inv_scal_external( beta11, alpha11 );
434 // FLA_Inv_scal_external( beta11, alpha11 );
437
438 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01_l, a01 );
440 m_behind,
441 buff_m1h,
442 y01, inc_y,
443 a01, rs_A );
444
445 // FLA_Inv_scal_external( beta11, a01 );
447 m_behind,
448 beta11,
449 a01, rs_A );
450
451 /*------------------------------------------------------------*/
452
453 }
454
455 return FLA_SUCCESS;
456}
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
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_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_invscalv.c:78
void bl1_ztrsv(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_trsv.c:177

References bl1_zaxpyv(), bl1_zdot2s(), bl1_zhemv(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var1().

◆ FLA_Eig_gest_iu_opz_var2()

FLA_Error FLA_Eig_gest_iu_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 
)
407{
412 int i;
413
414 for ( i = 0; i < m_AB; ++i )
415 {
416 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
417 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
418 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
419 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
420 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
421
422 dcomplex* y01 = buff_y + (0 )*inc_y;
423
424 dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
425 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
426
427 int m_ahead = m_AB - i - 1;
428 int m_behind = i;
429
430 /*------------------------------------------------------------*/
431
432 // FLA_Hemvc_external( FLA_UPPER_TRIANGULAR, FLA_NO_CONJUGATE,
433 // FLA_ONE_HALF, A00, b01, FLA_ZERO, y01_l );
436 m_behind,
437 buff_1h,
438 A00, rs_A, cs_A,
439 b01, rs_B,
440 buff_0,
441 y01, inc_y );
442
443 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
445 m_behind,
446 buff_m1,
447 y01, inc_y,
448 a01, rs_A );
449
450 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
452 m_behind,
453 buff_m1,
454 a01, rs_A,
455 b01, rs_B,
456 buff_1,
457 alpha11 );
458
459 // FLA_Inv_scal_external( beta11, alpha11 );
460 // FLA_Inv_scal_external( beta11, alpha11 );
463
464 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
465 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
468 m_behind,
469 m_ahead,
470 buff_m1,
471 A02, rs_A, cs_A,
472 b01, rs_B,
473 buff_1,
474 a12t, cs_A );
475
476 // FLA_Inv_scal_external( beta11, a12t );
478 m_ahead,
479 beta11,
480 a12t, cs_A );
481
482 // FLA_Axpy_external( FLA_MINUS_ONE, y01_l, a01 );
484 m_behind,
485 buff_m1,
486 y01, inc_y,
487 a01, rs_A );
488
489 // FLA_Inv_scal_external( beta11, a01 );
491 m_behind,
492 beta11,
493 a01, rs_A );
494
495 /*------------------------------------------------------------*/
496
497 }
498
499 return FLA_SUCCESS;
500}
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_zinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu_opt_var2().

◆ FLA_Eig_gest_iu_opz_var3()

FLA_Error FLA_Eig_gest_iu_opz_var3 ( int  m_AB,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_Y,
int  rs_Y,
int  cs_Y,
dcomplex buff_B,
int  rs_B,
int  cs_B 
)
477{
481 int i;
482
483 for ( i = 0; i < m_AB; ++i )
484 {
485 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
486 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
487 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
488 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
489
490 dcomplex* y01 = buff_Y + (i )*cs_Y + (0 )*rs_Y;
491 dcomplex* Y02 = buff_Y + (i+1)*cs_Y + (0 )*rs_Y;
492 dcomplex* y12t = buff_Y + (i+1)*cs_Y + (i )*rs_Y;
493
494 dcomplex* b01 = buff_B + (i )*cs_B + (0 )*rs_B;
495 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
496 dcomplex* B02 = buff_B + (i+1)*cs_B + (0 )*rs_B;
497 dcomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
498
499 int m_ahead = m_AB - i - 1;
500 int m_behind = i;
501
502 /*------------------------------------------------------------*/
503
504 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
506 m_behind,
507 buff_m1h,
508 y01, rs_Y,
509 a01, rs_A );
510
511 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, b01, FLA_ONE, alpha11 );
513 m_behind,
514 buff_m1,
515 a01, rs_A,
516 b01, rs_B,
517 buff_1,
518 alpha11 );
519
520 // FLA_Inv_scal_external( beta11, alpha11 );
521 // FLA_Inv_scal_external( beta11, alpha11 );
524
525 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
526 // FLA_MINUS_ONE, A02, b01, FLA_ONE, a12t );
529 m_behind,
530 m_ahead,
531 buff_m1,
532 A02, rs_A, cs_A,
533 b01, rs_B,
534 buff_1,
535 a12t, cs_A );
536
537 // FLA_Inv_scal_external( beta11, a12t );
539 m_ahead,
540 beta11,
541 a12t, cs_A );
542
543 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y01, a01 );
545 m_behind,
546 buff_m1h,
547 y01, rs_Y,
548 a01, rs_A );
549
550 // FLA_Inv_scal_external( beta11, a01 );
552 m_behind,
553 beta11,
554 a01, rs_A );
555
556 // FLA_Ger_external( FLA_ONE, a01, b12t, Y02 );
559 m_behind,
560 m_ahead,
561 buff_1,
562 a01, rs_A,
563 b12t, cs_B,
564 Y02, rs_Y, cs_Y );
565
566 // FLA_Copy_external( b12t, y12t );
567 // FLA_Scal_external( alpha11, y12t );
569 m_ahead,
570 b12t, cs_B,
571 y12t, cs_Y );
573 m_ahead,
574 alpha11,
575 y12t, cs_Y );
576
577 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
578 // FLA_ONE, B02, a01, FLA_ONE, y12t );
581 m_behind,
582 m_ahead,
583 buff_1,
584 B02, rs_B, cs_B,
585 a01, rs_A,
586 buff_1,
587 y12t, cs_Y );
588
589 /*------------------------------------------------------------*/
590
591 }
592
593 return FLA_SUCCESS;
594}
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_ger.c:194
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72

References bl1_zaxpyv(), bl1_zcopyv(), bl1_zdot2s(), bl1_zgemv(), bl1_zger(), bl1_zinvscalv(), bl1_zscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_iu_opt_var3().

◆ FLA_Eig_gest_iu_opz_var4()

FLA_Error FLA_Eig_gest_iu_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 
)
377{
380 int i;
381
382 for ( i = 0; i < m_AB; ++i )
383 {
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 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
389
390 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
391 dcomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
392
394
395 int m_ahead = m_AB - i - 1;
396 int m_behind = i;
397
398 /*------------------------------------------------------------*/
399
400 // FLA_Inv_scal_external( beta11, a01 );
402 m_behind,
403 beta11,
404 a01, rs_A );
405
406 // FLA_Ger_external( FLA_MINUS_ONE, a01, b12t, A02 );
409 m_behind,
410 m_ahead,
411 buff_m1,
412 a01, rs_A,
413 b12t, cs_B,
414 A02, rs_A, cs_A );
415
416 // FLA_Inv_scal_external( beta11, alpha11 );
417 // FLA_Inv_scal_external( beta11, alpha11 );
420
421 // FLA_Copy_external( alpha11, psi11 );
422 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
424
425 // FLA_Inv_scal_external( beta11, a12t );
427 m_ahead,
428 beta11,
429 a12t, cs_A );
430
431 // FLA_Axpy_external( psi11, b12t, a12t );
433 m_ahead,
434 &psi11,
435 b12t, cs_B,
436 a12t, cs_A );
437
438 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
439 // FLA_MINUS_ONE, a12t, b12t, A22 );
442 m_ahead,
443 buff_m1,
444 a12t, cs_A,
445 b12t, cs_B,
446 A22, rs_A, cs_A );
447
448 // FLA_Axpy_external( psi11, b12t, a12t );
450 m_ahead,
451 &psi11,
452 b12t, cs_B,
453 a12t, cs_A );
454
455 /*------------------------------------------------------------*/
456
457 }
458
459 return FLA_SUCCESS;
460}
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_zinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var4().

◆ FLA_Eig_gest_iu_opz_var5()

FLA_Error FLA_Eig_gest_iu_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 
)
350{
353 int i;
354
355 for ( i = 0; i < m_AB; ++i )
356 {
357 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
358 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
359 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
360
361 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
362 dcomplex* b12t = buff_B + (i+1)*cs_B + (i )*rs_B;
363 dcomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
364
366
367 int m_ahead = m_AB - i - 1;
368
369 /*------------------------------------------------------------*/
370
371 // FLA_Inv_scal_external( beta11, alpha11 );
372 // FLA_Inv_scal_external( beta11, alpha11 );
375
376 // FLA_Copy_external( alpha11, psi11 );
377 // FLA_Scal_external( FLA_MINUS_ONE_HALF, psi11 );
379
380 // FLA_Inv_scal_external( beta11, a12t );
382 m_ahead,
383 beta11,
384 a12t, cs_A );
385
386 // FLA_Axpy_external( psi11, b12t, a12t );
388 m_ahead,
389 &psi11,
390 b12t, cs_B,
391 a12t, cs_A );
392
393 // FLA_Her2c_external( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE,
394 // FLA_MINUS_ONE, a12t, b12t, A22 );
397 m_ahead,
398 buff_m1,
399 a12t, cs_A,
400 b12t, cs_B,
401 A22, rs_A, cs_A );
402
403 // FLA_Axpy_external( psi11, b12t, a12t );
405 m_ahead,
406 &psi11,
407 b12t, cs_B,
408 a12t, cs_A );
409
410 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
411 // B22, a12t );
415 m_ahead,
416 B22, rs_B, cs_B,
417 a12t, cs_A );
418
419 /*------------------------------------------------------------*/
420
421 }
422
423 return FLA_SUCCESS;
424}

References bl1_zaxpyv(), bl1_zher2(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_iu_opt_var5().

◆ FLA_Eig_gest_iu_unb_var1()

FLA_Error FLA_Eig_gest_iu_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
23 FLA_Obj yT, y01,
24 yB, psi11,
25 y21;
26
28
29 FLA_Part_2x2( A, &ATL, &ATR,
30 &ABL, &ABR, 0, 0, FLA_TL );
31
32 FLA_Part_2x2( B, &BTL, &BTR,
33 &BBL, &BBR, 0, 0, FLA_TL );
34
35 FLA_Part_2x1( Y, &yT,
36 &yB, 0, FLA_TOP );
37
38 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
39
40 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
41 /* ************* */ /* ************************** */
42 &a10t, /**/ &alpha11, &a12t,
43 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
44 1, 1, FLA_BR );
45
46 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
47 /* ************* */ /* ************************* */
48 &b10t, /**/ &beta11, &b12t,
49 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
50 1, 1, FLA_BR );
51
53 /* ** */ /* ***** */
54 &psi11,
55 yB, &y21, 1, FLA_BOTTOM );
56
57 /*------------------------------------------------------------*/
58
60
61 // y01 = A00 * b01;
64
65 // a01 = inv( triu( B00 )' ) * a01;
67 B00, a01 );
68
69 // a01 = a01 - 1/2 * y01;
71
72 // alpha11 = alpha11 - a01' * b01 - b01' * a01;
74
75 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
76 // = inv(beta11) * alpha11 * inv(beta11);
79
80 // a01 = a01 - 1/2 * y01;
82
83 // a01 = a01 * inv(beta11);
85
86 /*------------------------------------------------------------*/
87
88 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
89 a10t, alpha11, /**/ a12t,
90 /* ************** */ /* ************************ */
91 &ABL, /**/ &ABR, A20, a21, /**/ A22,
92 FLA_TL );
93
94 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
95 b10t, beta11, /**/ b12t,
96 /* ************** */ /* *********************** */
97 &BBL, /**/ &BBR, B20, b21, /**/ B22,
98 FLA_TL );
99
101 psi11,
102 /* ** */ /* ***** */
103 &yB, y21, FLA_TOP );
104 }
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Inv_scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_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_Trsv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition FLA_Trsv_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_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Hemvc_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Trsv_external(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_unb_var2()

FLA_Error FLA_Eig_gest_iu_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
23 FLA_Obj yT, y01,
24 yB, psi11,
25 y21;
26
28
29 FLA_Part_2x2( A, &ATL, &ATR,
30 &ABL, &ABR, 0, 0, FLA_TL );
31
32 FLA_Part_2x2( B, &BTL, &BTR,
33 &BBL, &BBR, 0, 0, FLA_TL );
34
35 FLA_Part_2x1( Y, &yT,
36 &yB, 0, FLA_TOP );
37
38 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
39
40 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
41 /* ************* */ /* ************************** */
42 &a10t, /**/ &alpha11, &a12t,
43 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
44 1, 1, FLA_BR );
45
46 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
47 /* ************* */ /* ************************* */
48 &b10t, /**/ &beta11, &b12t,
49 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
50 1, 1, FLA_BR );
51
53 /* ** */ /* ***** */
54 &psi11,
55 yB, &y21, 1, FLA_BOTTOM );
56
57 /*------------------------------------------------------------*/
58
60
61 // y01 = 1/2 * A00 * b01;
64
65 // a01 = a01 - y01;
67
68 // alpha11 = alpha11 - a01' * b01 - b01' * a01;
70
71 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
72 // = inv(beta11) * alpha11 * inv(beta11);
75
76 // a12t = a12t - b01' * A02;
77 // a12t^T = a12t^T - A02^T * conj(b01);
80
81 // a12t = inv(conj(beta11)) * a12t;
82 // a12t = inv(beta11) * a12t;
84
85 // a01 = a01 - y01;
87
88 // a01 = a01 * inv(beta11);
90
91 /*------------------------------------------------------------*/
92
93 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
94 a10t, alpha11, /**/ a12t,
95 /* ************** */ /* ************************ */
96 &ABL, /**/ &ABR, A20, a21, /**/ A22,
97 FLA_TL );
98
99 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
100 b10t, beta11, /**/ b12t,
101 /* ************** */ /* *********************** */
102 &BBL, /**/ &BBR, B20, b21, /**/ B22,
103 FLA_TL );
104
106 psi11,
107 /* ** */ /* ***** */
108 &yB, y21, FLA_TOP );
109 }
110
111 return FLA_SUCCESS;
112}
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_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Gemvc_external(), FLA_Hemvc_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, 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_ZERO, and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_unb_var3()

FLA_Error FLA_Eig_gest_iu_unb_var3 ( 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 YBL, YBR, y10t, psi11, y12t,
25 Y20, y21, Y22;
26
27 FLA_Part_2x2( A, &ATL, &ATR,
28 &ABL, &ABR, 0, 0, FLA_TL );
29
30 FLA_Part_2x2( B, &BTL, &BTR,
31 &BBL, &BBR, 0, 0, FLA_TL );
32
33 FLA_Part_2x2( Y, &YTL, &YTR,
34 &YBL, &YBR, 0, 0, FLA_TL );
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_2x2_to_3x3( YTL, /**/ YTR, &Y00, /**/ &y01, &Y02,
51 /* ************* */ /* ************************ */
52 &y10t, /**/ &psi11, &y12t,
53 YBL, /**/ YBR, &Y20, /**/ &y21, &Y22,
54 1, 1, FLA_BR );
55
56 /*------------------------------------------------------------*/
57
58 // a01 = a01 - 1/2 * y01;
60
61 // alpha11 = alpha11 - a01' * b01 - b01' * a01;
63
64 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
65 // = inv(beta11) * alpha11 * inv(beta11);
68
69 // a12t = a12t - b01' * A02;
70 // a12t^T = a12t^T - A02^T * conj(b01);
73
74 // a12t = inv(conj(beta11)) * a12t;
75 // a12t = inv(beta11) * a12t;
77
78 // a01 = a01 - 1/2 * y01;
80
81 // a01 = a01 * inv(beta11);
83
84 // Y02 = Y02 + a01 * b12t;
86
87 // y12t = alpha11 * b12t;
90
91 // y12t = y12t + a01' * B02;
92 // y12t^T = y12t^T + B02^T * conj(a01);
95
96 /*------------------------------------------------------------*/
97
98 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
99 a10t, alpha11, /**/ a12t,
100 /* ************** */ /* ************************ */
101 &ABL, /**/ &ABR, A20, a21, /**/ A22,
102 FLA_TL );
103
104 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
105 b10t, beta11, /**/ b12t,
106 /* ************** */ /* *********************** */
107 &BBL, /**/ &BBR, B20, b21, /**/ B22,
108 FLA_TL );
109
110 FLA_Cont_with_3x3_to_2x2( &YTL, /**/ &YTR, Y00, y01, /**/ Y02,
111 y10t, psi11, /**/ y12t,
112 /* ************** */ /* ********************** */
113 &YBL, /**/ &YBR, Y20, y21, /**/ Y22,
114 FLA_TL );
115 }
116
117 return FLA_SUCCESS;
118}
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Scal_external.c:13
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

References FLA_Axpy_external(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Dot2cs_external(), FLA_Gemvc_external(), FLA_Ger_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_unb_var4()

FLA_Error FLA_Eig_gest_iu_unb_var4 ( 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
23 //FLA_Obj yL, yR, y10t, psi11, y12t;
24
25 //FLA_Obj y12t_t,
26 // y12t_b;
27
29 y21, Y22;
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_1x2( Y, &yL, &yR, 0, FLA_LEFT );
38
40 &y21, &Y22, 1, 1, FLA_TL );
41
42 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
43
44 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
45 /* ************* */ /* ************************** */
46 &a10t, /**/ &alpha11, &a12t,
47 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
48 1, 1, FLA_BR );
49
50 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
51 /* ************* */ /* ************************* */
52 &b10t, /**/ &beta11, &b12t,
53 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
54 1, 1, FLA_BR );
55
56 //FLA_Repart_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
57 // 1, FLA_RIGHT );
58
59 /*------------------------------------------------------------*/
60
61 //FLA_Part_2x1( y12t, &y12t_t,
62 // &y12t_b, 1, FLA_TOP );
63
64 // a01 = a01 * inv(beta11);
66
67 // A02 = A02 - a01 * b12t;
69
70 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
71 // = inv(beta11) * alpha11 * inv(beta11);
74
75 //// y12t = alpha11 * b12t;
76 //FLA_Copy_external( b12t, y12t_t );
77 //FLA_Scal_external( alpha11, y12t_t );
78 // psi11 = - 1/2 * alpha11;
81
82 // a12t = inv(conj(beta11)) * a12t;
83 // = inv(beta11) * a12t;
85
86 //// a12t = a12t - 1/2 * y12t;
87 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y12t_t, a12t );
88 // a12t = a12t - 1/2 * alpha11 * b12t;
90
91 // A22 = A22 - a12t' * b12t - b12t' * a12t;
94
95 //// a12t = a12t - 1/2 * y12t;
96 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y12t_t, a12t );
97 // a12t = a12t - 1/2 * alpha11 * b12t;
99
100 /*------------------------------------------------------------*/
101
102 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
103 a10t, alpha11, /**/ a12t,
104 /* ************** */ /* ************************ */
105 &ABL, /**/ &ABR, A20, a21, /**/ A22,
106 FLA_TL );
107
108 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
109 b10t, beta11, /**/ b12t,
110 /* ************** */ /* *********************** */
111 &BBL, /**/ &BBR, B20, b21, /**/ B22,
112 FLA_TL );
113
114 //FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
115 // FLA_LEFT );
116 }
117
118 return FLA_SUCCESS;
119}
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_Inv_scal_external(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and i.

Referenced by FLA_Eig_gest_iu().

◆ FLA_Eig_gest_iu_unb_var5()

FLA_Error FLA_Eig_gest_iu_unb_var5 ( 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
23 //FLA_Obj yL, yR, y10t, psi11, y12t;
24
25 //FLA_Obj y12t_t,
26 // y12t_b;
27
29 y21, Y22;
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_1x2( Y, &yL, &yR, 0, FLA_LEFT );
38
40 &y21, &Y22, 1, 1, FLA_TL );
41
42 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
43
44 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
45 /* ************* */ /* ************************** */
46 &a10t, /**/ &alpha11, &a12t,
47 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
48 1, 1, FLA_BR );
49
50 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
51 /* ************* */ /* ************************* */
52 &b10t, /**/ &beta11, &b12t,
53 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
54 1, 1, FLA_BR );
55
56 //FLA_Repart_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
57 // 1, FLA_RIGHT );
58
59 /*------------------------------------------------------------*/
60
61 //FLA_Part_2x1( y12t, &y12t_t,
62 // &y12t_b, 1, FLA_TOP );
63
64 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
65 // = inv(beta11) * alpha11 * inv(beta11);
68
69 //// y12t = alpha11 * b12t;
70 //FLA_Copy_external( b12t, y12t_t );
71 //FLA_Scal_external( alpha11, y12t_t );
72 // psi11 = - 1/2 * alpha11;
75
76 // a12t = inv(conj(beta11)) * a12t;
77 // = inv(beta11) * a12t;
79
80 //// a12t = a12t - 1/2 * y12t;
81 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y12t_t, a12t );
82 // a12t = a12t - 1/2 * alpha11 * b12t;
84
85 // A22 = A22 - a12t' * b12t - b12t' * a12t;
88
89 //// a12t = a12t - 1/2 * y12t;
90 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y12t_t, a12t );
91 // a12t = a12t - 1/2 * alpha11 * b12t;
93
94 // a12t = a12t * inv( tril( B22 ) );
95 // a12t^T = inv( triu( B22 )^T ) * a12t^T;
97 B22, a12t );
98
99 /*------------------------------------------------------------*/
100
101 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
102 a10t, alpha11, /**/ a12t,
103 /* ************** */ /* ************************ */
104 &ABL, /**/ &ABR, A20, a21, /**/ A22,
105 FLA_TL );
106
107 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
108 b10t, beta11, /**/ b12t,
109 /* ************** */ /* *********************** */
110 &BBL, /**/ &BBR, B20, b21, /**/ B22,
111 FLA_TL );
112
113 //FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
114 // FLA_LEFT );
115 }
116
117 return FLA_SUCCESS;
118}

References FLA_Axpy_external(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Her2c_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trsv_external(), and i.

Referenced by FLA_Eig_gest_iu().