libflame revision_anchor
Functions
FLA_Eig_gest_il.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Eig_gest_il_blk_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_blk_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_blk_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_blk_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_blk_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_il_unb_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_unb_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_unb_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_unb_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_unb_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_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_il_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_il_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_il_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_il_opt_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_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_il_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_il_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_il_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_il_opt_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_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_il_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_il_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_il_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_il_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_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_il_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_il_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_il_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_il_opt_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_il_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_il_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_il_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_il_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_il_blk_var1()

FLA_Error FLA_Eig_gest_il_blk_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YL, YR, Y10, Y11, Y12;
26
28 Y10_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 &Y10_b, b, FLA_TOP );
63
64 // Y10 = B10 * A00;
67 FLA_Cntl_sub_hemm( cntl ) );
68
69 // A10 = A10 * inv( tril( B00 )' );
72 FLA_ONE, B00, A10,
73 FLA_Cntl_sub_trsm1( cntl ) );
74
75 // A10 = A10 - 1/2 * Y10;
77 FLA_Cntl_sub_axpy1( cntl ) );
78
79 // A11 = A11 - A10 * B10' - B10 * A10';
82 FLA_Cntl_sub_her2k( cntl ) );
83
84 // A11 = inv( tril( B11 ) ) * A11 * inv( tril( B11 )' );
86 A11, Y11, B11,
87 FLA_Cntl_sub_eig_gest( cntl ) );
88
89 // A10 = A10 - 1/2 * Y10;
91 FLA_Cntl_sub_axpy2( cntl ) );
92
93 // A10 = inv( tril( B11 ) ) * A10;
96 FLA_ONE, B11, A10,
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}
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_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:475
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:142
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:267
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition FLA_Blocksize.c:234
unsigned long dim_t
Definition FLA_type_defs.h:71
int i
Definition bl1_axmyv2.c:145
Definition FLA_type_defs.h:159

References FLA_Axpy_internal(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_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_il().

◆ FLA_Eig_gest_il_blk_var2()

FLA_Error FLA_Eig_gest_il_blk_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YL, YR, Y10, Y11, Y12;
26
28 Y10_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 &Y10_b, b, FLA_TOP );
63
64 // Y10 = 1/2 * B10 * A00;
67 FLA_Cntl_sub_hemm( cntl ) );
68
69 // A10 = A10 - Y10;
71 FLA_Cntl_sub_axpy1( cntl ) );
72
73 // A11 = A11 - A10 * B10' - B10 * A10';
76 FLA_Cntl_sub_her2k( cntl ) );
77
78 // A11 = inv( tril( B11 ) ) * A11 * inv( tril( B11 )' );
80 A11, Y11, B11,
81 FLA_Cntl_sub_eig_gest( cntl ) );
82
83 // A21 = A21 - A20 * B10';
86 FLA_Cntl_sub_gemm1( cntl ) );
87
88 // A21 = A21 * inv( tril( B11 )' );
91 FLA_ONE, B11, A21,
92 FLA_Cntl_sub_trsm1( cntl ) );
93
94 // A10 = A10 - Y10;
96 FLA_Cntl_sub_axpy2( cntl ) );
97
98 // A10 = inv( tril( B11 ) ) * A10;
101 FLA_ONE, B11, A10,
102 FLA_Cntl_sub_trsm2( cntl ) );
103
104 /*------------------------------------------------------------*/
105
106 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
107 A10, A11, /**/ A12,
108 /* ************** */ /* ****************** */
109 &ABL, /**/ &ABR, A20, A21, /**/ A22,
110 FLA_TL );
111
112 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
113 B10, B11, /**/ B12,
114 /* ************** */ /* ****************** */
115 &BBL, /**/ &BBR, B20, B21, /**/ B22,
116 FLA_TL );
117
118 FLA_Cont_with_1x3_to_1x2( &YL, /**/ &YR, Y10, Y11, /**/ Y12,
119 FLA_LEFT );
120 }
121
122 return FLA_SUCCESS;
123}
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_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_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_blk_var3()

FLA_Error FLA_Eig_gest_il_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 // A10 = A10 - 1/2 * Y10;
66 FLA_Cntl_sub_axpy1( cntl ) );
67
68 // A11 = A11 - A10 * B10' - B10 * A10';
71 FLA_Cntl_sub_her2k( cntl ) );
72
73 // A11 = inv( tril( B11 ) ) * A11 * inv( tril( B11 )' );
75 A11, Y11, B11,
76 FLA_Cntl_sub_eig_gest( cntl ) );
77
78 // A21 = A21 - A20 * B10';
81 FLA_Cntl_sub_gemm1( cntl ) );
82
83 // A21 = A21 * inv( tril( B11 )' );
86 FLA_ONE, B11, A21,
87 FLA_Cntl_sub_trsm1( cntl ) );
88
89 // A10 = A10 - 1/2 * Y10;
91 FLA_Cntl_sub_axpy2( cntl ) );
92
93 // A10 = inv( tril( B11 ) ) * A10;
96 FLA_ONE, B11, A10,
97 FLA_Cntl_sub_trsm2( cntl ) );
98
99 // Y20 = Y20 + B21 * A10;
102 FLA_Cntl_sub_gemm2( cntl ) );
103
104 // Y21 = B21 * A11;
107 FLA_Cntl_sub_hemm( cntl ) );
108
109 // Y21 = Y21 + B20 * A10';
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_il().

◆ FLA_Eig_gest_il_blk_var4()

FLA_Error FLA_Eig_gest_il_blk_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
14{
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
20 BBL, BBR, B10, B11, B12,
21 B20, B21, B22;
22
23 FLA_Obj YT, Y01,
24 YB, Y11,
25 Y21;
26
28
29 dim_t b;
30
31 FLA_Part_2x2( A, &ATL, &ATR,
32 &ABL, &ABR, 0, 0, FLA_TL );
33
34 FLA_Part_2x2( B, &BTL, &BTR,
35 &BBL, &BBR, 0, 0, FLA_TL );
36
37 FLA_Part_2x1( Y, &YT,
38 &YB, 0, FLA_TOP );
39
40 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41
43
44 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45 /* ************* */ /* ******************** */
46 &A10, /**/ &A11, &A12,
47 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48 b, b, FLA_BR );
49
50 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51 /* ************* */ /* ******************** */
52 &B10, /**/ &B11, &B12,
53 BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54 b, b, FLA_BR );
55
56
58 /* ** */ /* *** */
59 &Y11,
60 YB, &Y21, b, FLA_BOTTOM );
61
62 /*------------------------------------------------------------*/
63
65
66 // A10 = inv( tril( B11 ) ) * A10;
69 FLA_ONE, B11, A10,
70 FLA_Cntl_sub_trsm1( cntl ) );
71
72 // A20 = A20 - B21 * A10;
75 FLA_Cntl_sub_gemm1( cntl ) );
76
77 // A11 = inv( tril( B11 ) ) * A11 * inv( tril( B11 )' );
79 A11, Y11, B11,
80 FLA_Cntl_sub_eig_gest( cntl ) );
81
82 // Y21 = B21 * A11;
85 FLA_Cntl_sub_hemm( cntl ) );
86
87 // A21 = A21 * inv( tril( B11 )' );
90 FLA_ONE, B11, A21,
91 FLA_Cntl_sub_trsm2( cntl ) );
92
93 // A21 = A21 - 1/2 * Y21;
95 FLA_Cntl_sub_axpy1( cntl ) );
96
97 // A22 = A22 - A21 * B21' - B21 * A21';
100 FLA_Cntl_sub_her2k( cntl ) );
101
102 // A21 = A21 - 1/2 * Y21;
104 FLA_Cntl_sub_axpy2( cntl ) );
105
106 /*------------------------------------------------------------*/
107
108 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
109 A10, A11, /**/ A12,
110 /* ************** */ /* ****************** */
111 &ABL, /**/ &ABR, A20, A21, /**/ A22,
112 FLA_TL );
113
114 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
115 B10, B11, /**/ B12,
116 /* ************** */ /* ****************** */
117 &BBL, /**/ &BBR, B20, B21, /**/ B22,
118 FLA_TL );
119
121 Y11,
122 /* ** */ /* *** */
123 &YB, Y21, FLA_TOP );
124 }
125
126 return FLA_SUCCESS;
127}
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:428
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:226

References FLA_Axpy_internal(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Eig_gest_internal(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_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_il().

◆ FLA_Eig_gest_il_blk_var5()

FLA_Error FLA_Eig_gest_il_blk_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YT, Y01,
26 YB, Y11,
27 Y21;
28
30
31 dim_t b;
32
33 FLA_Part_2x2( A, &ATL, &ATR,
34 &ABL, &ABR, 0, 0, FLA_TL );
35
36 FLA_Part_2x2( B, &BTL, &BTR,
37 &BBL, &BBR, 0, 0, FLA_TL );
38
39 FLA_Part_2x1( Y, &YT,
40 &YB, 0, FLA_TOP );
41
42 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
43
45
46 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
47 /* ************* */ /* ******************** */
48 &A10, /**/ &A11, &A12,
49 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
50 b, b, FLA_BR );
51
52 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
53 /* ************* */ /* ******************** */
54 &B10, /**/ &B11, &B12,
55 BBL, /**/ BBR, &B20, /**/ &B21, &B22,
56 b, b, FLA_BR );
57
59 /* ** */ /* *** */
60 &Y11,
61 YB, &Y21, b, FLA_BOTTOM );
62
63 /*------------------------------------------------------------*/
64
66
67 // A11 = inv( tril( B11 ) ) * A11 * inv( tril( B11 )' );
69 A11, Y11, B11,
70 FLA_Cntl_sub_eig_gest( cntl ) );
71
72 // Y21 = B21 * A11;
75 FLA_Cntl_sub_hemm( cntl ) );
76
77 // A21 = A21 * inv( tril( B11 )' );
80 FLA_ONE, B11, A21,
81 FLA_Cntl_sub_trsm1( cntl ) );
82
83 // A21 = A21 - 1/2 * Y21;
85 FLA_Cntl_sub_axpy1( cntl ) );
86
87 // A22 = A22 - A21 * B21' - B21 * A21';
90 FLA_Cntl_sub_her2k( cntl ) );
91
92 // A21 = A21 - 1/2 * Y21;
94 FLA_Cntl_sub_axpy2( cntl ) );
95
96 // A21 = inv( tril( B22 ) ) * A21;
99 FLA_ONE, B22, A21,
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}

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

◆ FLA_Eig_gest_il_opc_var1()

FLA_Error FLA_Eig_gest_il_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 
)
285{
290 int i;
291
292 for ( i = 0; i < m_AB; ++i )
293 {
294 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
295 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
296 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
297
298 scomplex* y10t = buff_y + (0 )*inc_y;
299
300 scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
301 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
302 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
303
304 int m_behind = i;
305
306 /*------------------------------------------------------------*/
307
308 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
309 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
312 m_behind,
313 buff_1,
314 A00, rs_A, cs_A,
315 b10t, cs_B,
316 buff_0,
317 y10t, inc_y );
318
319 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
320 // B00, a10t );
324 m_behind,
325 B00, rs_B, cs_B,
326 a10t, cs_A );
327
328 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
330 m_behind,
331 buff_m1h,
332 y10t, inc_y,
333 a10t, cs_A );
334
335 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
337 m_behind,
338 buff_m1,
339 a10t, cs_A,
340 b10t, cs_B,
341 buff_1,
342 alpha11 );
343
344 // FLA_Inv_scal_external( beta11, alpha11 );
345 // FLA_Inv_scal_external( beta11, alpha11 );
348
349 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
351 m_behind,
352 buff_m1h,
353 y10t, inc_y,
354 a10t, cs_A );
355
356 // FLA_Inv_scal_external( beta11, a10t );
358 m_behind,
359 beta11,
360 a10t, cs_A );
361
362 /*------------------------------------------------------------*/
363
364 }
365
366 return FLA_SUCCESS;
367}
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_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_NO_TRANSPOSE
Definition blis_type_defs.h:56
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_caxpyv(), bl1_cdot2s(), bl1_chemv(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_opc_var2()

FLA_Error FLA_Eig_gest_il_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 
)
307{
312 int i;
313
314 for ( i = 0; i < m_AB; ++i )
315 {
316 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
317 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
318 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
319 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
320 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
321
322 scomplex* y10t = buff_y + (0 )*inc_y;
323
324 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
325 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
326
327 int m_ahead = m_AB - i - 1;
328 int m_behind = i;
329
330 /*------------------------------------------------------------*/
331
332 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
333 // FLA_ONE_HALF, A00, b10t, FLA_ZERO, y10t_t );
336 m_behind,
337 buff_1h,
338 A00, rs_A, cs_A,
339 b10t, cs_B,
340 buff_0,
341 y10t, inc_y );
342
343 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
345 m_behind,
346 buff_m1,
347 y10t, inc_y,
348 a10t, cs_A );
349
350 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
352 m_behind,
353 buff_m1,
354 a10t, cs_A,
355 b10t, cs_B,
356 buff_1,
357 alpha11 );
358
359 // FLA_Inv_scal_external( beta11, alpha11 );
360 // FLA_Inv_scal_external( beta11, alpha11 );
363
364 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
365 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
368 m_ahead,
369 m_behind,
370 buff_m1,
371 A20, rs_A, cs_A,
372 b10t, cs_B,
373 buff_1,
374 a21, rs_A );
375
376 // FLA_Inv_scal_external( beta11, a21 );
378 m_ahead,
379 beta11,
380 a21, rs_A );
381
382 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
384 m_behind,
385 buff_m1,
386 y10t, inc_y,
387 a10t, cs_A );
388
389 // FLA_Inv_scal_external( beta11, a10t );
391 m_behind,
392 beta11,
393 a10t, cs_A );
394
395 /*------------------------------------------------------------*/
396
397 }
398
399 return FLA_SUCCESS;
400}
void bl1_cgemv(trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_gemv.c:125
@ BLIS1_NO_TRANSPOSE
Definition blis_type_defs.h:54

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

Referenced by FLA_Eig_gest_il_opt_var2().

◆ FLA_Eig_gest_il_opc_var3()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
361 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
362 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
363 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
364
365 scomplex* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
366 scomplex* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
367 scomplex* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
368
369 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
370 scomplex* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
371 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
372 scomplex* b21 = buff_B + (i )*cs_B + (i+1)*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, y10t, a10t );
381 m_behind,
382 buff_m1h,
383 y10t, cs_Y,
384 a10t, cs_A );
385
386 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
388 m_behind,
389 buff_m1,
390 a10t, cs_A,
391 b10t, cs_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_NO_TRANSPOSE, FLA_CONJUGATE,
401 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
404 m_ahead,
405 m_behind,
406 buff_m1,
407 A20, rs_A, cs_A,
408 b10t, cs_B,
409 buff_1,
410 a21, rs_A );
411
412 // FLA_Inv_scal_external( beta11, a21 );
414 m_ahead,
415 beta11,
416 a21, rs_A );
417
418 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
420 m_behind,
421 buff_m1h,
422 y10t, cs_Y,
423 a10t, cs_A );
424
425 // FLA_Inv_scal_external( beta11, a10t );
427 m_behind,
428 beta11,
429 a10t, cs_A );
430
431 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
434 m_ahead,
435 m_behind,
436 buff_1,
437 b21, rs_B,
438 a10t, cs_A,
439 Y20, rs_Y, cs_Y );
440
441 // FLA_Copy_external( b21, y21 );
442 // FLA_Scal_external( alpha11, y21 );
444 m_ahead,
445 b21, rs_B,
446 y21, rs_Y );
448 m_ahead,
449 alpha11,
450 y21, rs_Y );
451
452 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
453 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
456 m_ahead,
457 m_behind,
458 buff_1,
459 B20, rs_B, cs_B,
460 a10t, cs_A,
461 buff_1,
462 y21, rs_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_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_il_opt_var3().

◆ FLA_Eig_gest_il_opc_var4()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
294 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
295 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
296 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a10t );
311 m_behind,
312 beta11,
313 a10t, cs_A );
314
315 // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
318 m_ahead,
319 m_behind,
320 buff_m1,
321 b21, rs_B,
322 a10t, cs_A,
323 A20, 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, a21 );
336 m_ahead,
337 beta11,
338 a21, rs_A );
339
340 // FLA_Axpy_external( psi11, b21, a21 );
342 m_ahead,
343 &psi11,
344 b21, rs_B,
345 a21, rs_A );
346
347 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
348 // FLA_MINUS_ONE, a21, b21, A22 );
351 m_ahead,
352 buff_m1,
353 a21, rs_A,
354 b21, rs_B,
355 A22, rs_A, cs_A );
356
357 // FLA_Axpy_external( psi11, b21, a21 );
359 m_ahead,
360 &psi11,
361 b21, rs_B,
362 a21, rs_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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_opc_var5()

FLA_Error FLA_Eig_gest_il_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* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a21 );
300 m_ahead,
301 beta11,
302 a21, rs_A );
303
304 // FLA_Axpy_external( psi11, b21, a21 );
306 m_ahead,
307 &psi11,
308 b21, rs_B,
309 a21, rs_A );
310
311 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
312 // FLA_MINUS_ONE, a21, b21, A22 );
315 m_ahead,
316 buff_m1,
317 a21, rs_A,
318 b21, rs_B,
319 A22, rs_A, cs_A );
320
321 // FLA_Axpy_external( psi11, b21, a21 );
323 m_ahead,
324 &psi11,
325 b21, rs_B,
326 a21, rs_A );
327
328 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
329 // B22, a21 );
333 m_ahead,
334 B22, rs_B, cs_B,
335 a21, rs_A );
336
337 /*------------------------------------------------------------*/
338
339 }
340
341 return FLA_SUCCESS;
342}

References bl1_caxpyv(), bl1_cher2(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_opd_var1()

FLA_Error FLA_Eig_gest_il_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 
)
195{
196 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
197 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
200 int i;
201
202 for ( i = 0; i < m_AB; ++i )
203 {
204 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
205 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
206 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
207
208 double* y10t = buff_y + (0 )*inc_y;
209
210 double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
211 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
212 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
213
214 int m_behind = i;
215
216 /*------------------------------------------------------------*/
217
218 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
219 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
222 m_behind,
223 buff_1,
224 A00, rs_A, cs_A,
225 b10t, cs_B,
226 buff_0,
227 y10t, inc_y );
228
229 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
230 // B00, a10t );
234 m_behind,
235 B00, rs_B, cs_B,
236 a10t, cs_A );
237
238 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
240 m_behind,
241 buff_m1h,
242 y10t, inc_y,
243 a10t, cs_A );
244
245 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
247 m_behind,
248 buff_m1,
249 a10t, cs_A,
250 b10t, cs_B,
251 buff_1,
252 alpha11 );
253
254 // FLA_Inv_scal_external( beta11, alpha11 );
255 // FLA_Inv_scal_external( beta11, alpha11 );
258
259 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
261 m_behind,
262 buff_m1h,
263 y10t, inc_y,
264 a10t, cs_A );
265
266 // FLA_Inv_scal_external( beta11, a10t );
268 m_behind,
269 beta11,
270 a10t, cs_A );
271
272 /*------------------------------------------------------------*/
273
274 }
275
276 return FLA_SUCCESS;
277}
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_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_opd_var2()

FLA_Error FLA_Eig_gest_il_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 
)
206{
207 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
209 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
211 int i;
212
213 for ( i = 0; i < m_AB; ++i )
214 {
215 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
216 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
217 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
218 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
219 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
220
221 double* y10t = buff_y + (0 )*inc_y;
222
223 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
224 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
225
226 int m_ahead = m_AB - i - 1;
227 int m_behind = i;
228
229 /*------------------------------------------------------------*/
230
231 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
232 // FLA_ONE_HALF, A00, b10t, FLA_ZERO, y10t_t );
235 m_behind,
236 buff_1h,
237 A00, rs_A, cs_A,
238 b10t, cs_B,
239 buff_0,
240 y10t, inc_y );
241
242 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
244 m_behind,
245 buff_m1,
246 y10t, inc_y,
247 a10t, cs_A );
248
249 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
251 m_behind,
252 buff_m1,
253 a10t, cs_A,
254 b10t, cs_B,
255 buff_1,
256 alpha11 );
257
258 // FLA_Inv_scal_external( beta11, alpha11 );
259 // FLA_Inv_scal_external( beta11, alpha11 );
262
263 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
264 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
267 m_ahead,
268 m_behind,
269 buff_m1,
270 A20, rs_A, cs_A,
271 b10t, cs_B,
272 buff_1,
273 a21, rs_A );
274
275 // FLA_Inv_scal_external( beta11, a21 );
277 m_ahead,
278 beta11,
279 a21, rs_A );
280
281 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
283 m_behind,
284 buff_m1,
285 y10t, inc_y,
286 a10t, cs_A );
287
288 // FLA_Inv_scal_external( beta11, a10t );
290 m_behind,
291 beta11,
292 a10t, cs_A );
293
294 /*------------------------------------------------------------*/
295
296 }
297
298 return FLA_SUCCESS;
299}
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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var2().

◆ FLA_Eig_gest_il_opd_var3()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
236 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
237 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
238 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
239
240 double* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
241 double* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
242 double* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
243
244 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
245 double* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
246 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
247 double* b21 = buff_B + (i )*cs_B + (i+1)*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, y10t, a10t );
256 m_behind,
257 buff_m1h,
258 y10t, cs_Y,
259 a10t, cs_A );
260
261 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
263 m_behind,
264 buff_m1,
265 a10t, cs_A,
266 b10t, cs_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_NO_TRANSPOSE, FLA_CONJUGATE,
276 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
279 m_ahead,
280 m_behind,
281 buff_m1,
282 A20, rs_A, cs_A,
283 b10t, cs_B,
284 buff_1,
285 a21, rs_A );
286
287 // FLA_Inv_scal_external( beta11, a21 );
289 m_ahead,
290 beta11,
291 a21, rs_A );
292
293 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
295 m_behind,
296 buff_m1h,
297 y10t, cs_Y,
298 a10t, cs_A );
299
300 // FLA_Inv_scal_external( beta11, a10t );
302 m_behind,
303 beta11,
304 a10t, cs_A );
305
306 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
309 m_ahead,
310 m_behind,
311 buff_1,
312 b21, rs_B,
313 a10t, cs_A,
314 Y20, rs_Y, cs_Y );
315
316 // FLA_Copy_external( b21, y21 );
317 // FLA_Scal_external( alpha11, y21 );
319 m_ahead,
320 b21, rs_B,
321 y21, rs_Y );
323 m_ahead,
324 alpha11,
325 y21, rs_Y );
326
327 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
328 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
331 m_ahead,
332 m_behind,
333 buff_1,
334 B20, rs_B, cs_B,
335 a10t, cs_A,
336 buff_1,
337 y21, rs_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_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_il_opt_var3().

◆ FLA_Eig_gest_il_opd_var4()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
203 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
204 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
205 double* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a10t );
220 m_behind,
221 beta11,
222 a10t, cs_A );
223
224 // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
227 m_ahead,
228 m_behind,
229 buff_m1,
230 b21, rs_B,
231 a10t, cs_A,
232 A20, 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, a21 );
245 m_ahead,
246 beta11,
247 a21, rs_A );
248
249 // FLA_Axpy_external( psi11, b21, a21 );
251 m_ahead,
252 &psi11,
253 b21, rs_B,
254 a21, rs_A );
255
256 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
257 // FLA_MINUS_ONE, a21, b21, A22 );
260 m_ahead,
261 buff_m1,
262 a21, rs_A,
263 b21, rs_B,
264 A22, rs_A, cs_A );
265
266 // FLA_Axpy_external( psi11, b21, a21 );
268 m_ahead,
269 &psi11,
270 b21, rs_B,
271 a21, rs_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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_opd_var5()

FLA_Error FLA_Eig_gest_il_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* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a21 );
218 m_ahead,
219 beta11,
220 a21, rs_A );
221
222 // FLA_Axpy_external( psi11, b21, a21 );
224 m_ahead,
225 &psi11,
226 b21, rs_B,
227 a21, rs_A );
228
229 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
230 // FLA_MINUS_ONE, a21, b21, A22 );
233 m_ahead,
234 buff_m1,
235 a21, rs_A,
236 b21, rs_B,
237 A22, rs_A, cs_A );
238
239 // FLA_Axpy_external( psi11, b21, a21 );
241 m_ahead,
242 &psi11,
243 b21, rs_B,
244 a21, rs_A );
245
246 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
247 // B22, a21 );
251 m_ahead,
252 B22, rs_B, cs_B,
253 a21, rs_A );
254
255 /*------------------------------------------------------------*/
256
257 }
258
259 return FLA_SUCCESS;
260}

References bl1_daxpyv(), bl1_dher2(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_ops_var1()

FLA_Error FLA_Eig_gest_il_ops_var1 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)
105{
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
110 int i;
111
112 for ( i = 0; i < m_AB; ++i )
113 {
114 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
115 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
116 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
117
118 float* y10t = buff_y + (0 )*inc_y;
119
120 float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
121 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
122 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
123
124 int m_behind = i;
125
126 /*------------------------------------------------------------*/
127
128 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
129 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
132 m_behind,
133 buff_1,
134 A00, rs_A, cs_A,
135 b10t, cs_B,
136 buff_0,
137 y10t, inc_y );
138
139 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
140 // B00, a10t );
144 m_behind,
145 B00, rs_B, cs_B,
146 a10t, cs_A );
147
148 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
150 m_behind,
151 buff_m1h,
152 y10t, inc_y,
153 a10t, cs_A );
154
155 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
157 m_behind,
158 buff_m1,
159 a10t, cs_A,
160 b10t, cs_B,
161 buff_1,
162 alpha11 );
163
164 // FLA_Inv_scal_external( beta11, alpha11 );
165 // FLA_Inv_scal_external( beta11, alpha11 );
168
169 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
171 m_behind,
172 buff_m1h,
173 y10t, inc_y,
174 a10t, cs_A );
175
176 // FLA_Inv_scal_external( beta11, a10t );
178 m_behind,
179 beta11,
180 a10t, cs_A );
181
182 /*------------------------------------------------------------*/
183
184 }
185
186 return FLA_SUCCESS;
187}
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_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_ops_var2()

FLA_Error FLA_Eig_gest_il_ops_var2 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)
105{
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
110 int i;
111
112 for ( i = 0; i < m_AB; ++i )
113 {
114 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
115 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
116 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
117 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
118 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
119
120 float* y10t = buff_y + (0 )*inc_y;
121
122 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
123 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
124
125 int m_ahead = m_AB - i - 1;
126 int m_behind = i;
127
128 /*------------------------------------------------------------*/
129
130 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
131 // FLA_ONE_HALF, A00, b10t, FLA_ZERO, y10t_t );
134 m_behind,
135 buff_1h,
136 A00, rs_A, cs_A,
137 b10t, cs_B,
138 buff_0,
139 y10t, inc_y );
140
141 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
143 m_behind,
144 buff_m1,
145 y10t, inc_y,
146 a10t, cs_A );
147
148 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
150 m_behind,
151 buff_m1,
152 a10t, cs_A,
153 b10t, cs_B,
154 buff_1,
155 alpha11 );
156
157 // FLA_Inv_scal_external( beta11, alpha11 );
158 // FLA_Inv_scal_external( beta11, alpha11 );
161
162 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
163 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
166 m_ahead,
167 m_behind,
168 buff_m1,
169 A20, rs_A, cs_A,
170 b10t, cs_B,
171 buff_1,
172 a21, rs_A );
173
174 // FLA_Inv_scal_external( beta11, a21 );
176 m_ahead,
177 beta11,
178 a21, rs_A );
179
180 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
182 m_behind,
183 buff_m1,
184 y10t, inc_y,
185 a10t, cs_A );
186
187 // FLA_Inv_scal_external( beta11, a10t );
189 m_behind,
190 beta11,
191 a10t, cs_A );
192
193 /*------------------------------------------------------------*/
194
195 }
196
197 return FLA_SUCCESS;
198}
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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var2().

◆ FLA_Eig_gest_il_ops_var3()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
111 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
112 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
113 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
114
115 float* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
116 float* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
117 float* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
118
119 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
120 float* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
121 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
122 float* b21 = buff_B + (i )*cs_B + (i+1)*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, y10t, a10t );
131 m_behind,
132 buff_m1h,
133 y10t, cs_Y,
134 a10t, cs_A );
135
136 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
138 m_behind,
139 buff_m1,
140 a10t, cs_A,
141 b10t, cs_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_NO_TRANSPOSE, FLA_CONJUGATE,
151 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
154 m_ahead,
155 m_behind,
156 buff_m1,
157 A20, rs_A, cs_A,
158 b10t, cs_B,
159 buff_1,
160 a21, rs_A );
161
162 // FLA_Inv_scal_external( beta11, a21 );
164 m_ahead,
165 beta11,
166 a21, rs_A );
167
168 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
170 m_behind,
171 buff_m1h,
172 y10t, cs_Y,
173 a10t, cs_A );
174
175 // FLA_Inv_scal_external( beta11, a10t );
177 m_behind,
178 beta11,
179 a10t, cs_A );
180
181 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
184 m_ahead,
185 m_behind,
186 buff_1,
187 b21, rs_B,
188 a10t, cs_A,
189 Y20, rs_Y, cs_Y );
190
191 // FLA_Copy_external( b21, y21 );
192 // FLA_Scal_external( alpha11, y21 );
194 m_ahead,
195 b21, rs_B,
196 y21, rs_Y );
198 m_ahead,
199 alpha11,
200 y21, rs_Y );
201
202 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
203 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
206 m_ahead,
207 m_behind,
208 buff_1,
209 B20, rs_B, cs_B,
210 a10t, cs_A,
211 buff_1,
212 y21, rs_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_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_il_opt_var3().

◆ FLA_Eig_gest_il_ops_var4()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
112 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
113 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
114 float* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a10t );
129 m_behind,
130 beta11,
131 a10t, cs_A );
132
133 // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
136 m_ahead,
137 m_behind,
138 buff_m1,
139 b21, rs_B,
140 a10t, cs_A,
141 A20, 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, a21 );
154 m_ahead,
155 beta11,
156 a21, rs_A );
157
158 // FLA_Axpy_external( psi11, b21, a21 );
160 m_ahead,
161 &psi11,
162 b21, rs_B,
163 a21, rs_A );
164
165 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
166 // FLA_MINUS_ONE, a21, b21, A22 );
169 m_ahead,
170 buff_m1,
171 a21, rs_A,
172 b21, rs_B,
173 A22, rs_A, cs_A );
174
175 // FLA_Axpy_external( psi11, b21, a21 );
177 m_ahead,
178 &psi11,
179 b21, rs_B,
180 a21, rs_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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_ops_var5()

FLA_Error FLA_Eig_gest_il_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* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a21 );
136 m_ahead,
137 beta11,
138 a21, rs_A );
139
140 // FLA_Axpy_external( psi11, b21, a21 );
142 m_ahead,
143 &psi11,
144 b21, rs_B,
145 a21, rs_A );
146
147 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
148 // FLA_MINUS_ONE, a21, b21, A22 );
151 m_ahead,
152 buff_m1,
153 a21, rs_A,
154 b21, rs_B,
155 A22, rs_A, cs_A );
156
157 // FLA_Axpy_external( psi11, b21, a21 );
159 m_ahead,
160 &psi11,
161 b21, rs_B,
162 a21, rs_A );
163
164 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
165 // B22, a21 );
169 m_ahead,
170 B22, rs_B, cs_B,
171 a21, rs_A );
172
173 /*------------------------------------------------------------*/
174
175 }
176
177 return FLA_SUCCESS;
178}

References bl1_saxpyv(), bl1_sher2(), bl1_sinvscalv(), bl1_strsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_opt_var1()

FLA_Error FLA_Eig_gest_il_opt_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Datatype datatype;
16 int m_AB;
17 int rs_A, cs_A;
18 int rs_B, cs_B;
19 int inc_y;
20 FLA_Obj yT, yB;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_2x1( Y, &yT,
33 &yB, 1, FLA_TOP );
34
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_y = FLA_FLOAT_PTR( yT );
43 float* buff_B = FLA_FLOAT_PTR( B );
44
48 buff_B, rs_B, cs_B );
49
50 break;
51 }
52
53 case FLA_DOUBLE:
54 {
55 double* buff_A = FLA_DOUBLE_PTR( A );
56 double* buff_y = FLA_DOUBLE_PTR( yT );
57 double* buff_B = FLA_DOUBLE_PTR( B );
58
62 buff_B, rs_B, cs_B );
63
64 break;
65 }
66
67 case FLA_COMPLEX:
68 {
72
76 buff_B, rs_B, cs_B );
77
78 break;
79 }
80
82 {
86
90 buff_B, rs_B, cs_B );
91
92 break;
93 }
94 }
95
96 return FLA_SUCCESS;
97}
FLA_Error FLA_Eig_gest_il_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_il_opt_var1.c:281
FLA_Error FLA_Eig_gest_il_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_il_opt_var1.c:191
FLA_Error FLA_Eig_gest_il_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_il_opt_var1.c:371
FLA_Error FLA_Eig_gest_il_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_il_opt_var1.c:101
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition FLA_Query.c:145
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
Definition blis_type_defs.h:138

References FLA_Eig_gest_il_opc_var1(), FLA_Eig_gest_il_opd_var1(), FLA_Eig_gest_il_ops_var1(), FLA_Eig_gest_il_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Part_2x1(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_opt_var2()

FLA_Error FLA_Eig_gest_il_opt_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Datatype datatype;
16 int m_AB;
17 int rs_A, cs_A;
18 int rs_B, cs_B;
19 int inc_y;
20 FLA_Obj yT, yB;
21
22 datatype = FLA_Obj_datatype( A );
23
25
28
31
32 FLA_Part_2x1( Y, &yT,
33 &yB, 1, FLA_TOP );
34
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_y = FLA_FLOAT_PTR( yT );
43 float* buff_B = FLA_FLOAT_PTR( B );
44
48 buff_B, rs_B, cs_B );
49
50 break;
51 }
52
53 case FLA_DOUBLE:
54 {
55 double* buff_A = FLA_DOUBLE_PTR( A );
56 double* buff_y = FLA_DOUBLE_PTR( yT );
57 double* buff_B = FLA_DOUBLE_PTR( B );
58
62 buff_B, rs_B, cs_B );
63
64 break;
65 }
66
67 case FLA_COMPLEX:
68 {
72
76 buff_B, rs_B, cs_B );
77
78 break;
79 }
80
82 {
86
90 buff_B, rs_B, cs_B );
91
92 break;
93 }
94 }
95
96 return FLA_SUCCESS;
97}
FLA_Error FLA_Eig_gest_il_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_il_opt_var2.c:303
FLA_Error FLA_Eig_gest_il_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_il_opt_var2.c:404
FLA_Error FLA_Eig_gest_il_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_il_opt_var2.c:202
FLA_Error FLA_Eig_gest_il_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_il_opt_var2.c:101

References FLA_Eig_gest_il_opc_var2(), FLA_Eig_gest_il_opd_var2(), FLA_Eig_gest_il_ops_var2(), FLA_Eig_gest_il_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Part_2x1(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_opt_var3()

FLA_Error FLA_Eig_gest_il_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_Y, cs_Y;
19 int rs_B, cs_B;
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_il_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_il_opt_var3.c:223
FLA_Error FLA_Eig_gest_il_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_il_opt_var3.c:98
FLA_Error FLA_Eig_gest_il_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_il_opt_var3.c:473
FLA_Error FLA_Eig_gest_il_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_il_opt_var3.c:348

References FLA_Eig_gest_il_opc_var3(), FLA_Eig_gest_il_opd_var3(), FLA_Eig_gest_il_ops_var3(), FLA_Eig_gest_il_opz_var3(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_opt_var4()

FLA_Error FLA_Eig_gest_il_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_il_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_il_opt_var4.c:373
FLA_Error FLA_Eig_gest_il_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_il_opt_var4.c:282
FLA_Error FLA_Eig_gest_il_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_il_opt_var4.c:100
FLA_Error FLA_Eig_gest_il_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_il_opt_var4.c:191

References FLA_Eig_gest_il_opc_var4(), FLA_Eig_gest_il_opd_var4(), FLA_Eig_gest_il_ops_var4(), FLA_Eig_gest_il_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_il().

◆ FLA_Eig_gest_il_opt_var5()

FLA_Error FLA_Eig_gest_il_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_il_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_il_opt_var5.c:100
FLA_Error FLA_Eig_gest_il_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_il_opt_var5.c:264
FLA_Error FLA_Eig_gest_il_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_il_opt_var5.c:182
FLA_Error FLA_Eig_gest_il_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_il_opt_var5.c:346

References FLA_Eig_gest_il_opc_var5(), FLA_Eig_gest_il_opd_var5(), FLA_Eig_gest_il_ops_var5(), FLA_Eig_gest_il_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_il().

◆ FLA_Eig_gest_il_opz_var1()

FLA_Error FLA_Eig_gest_il_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 
)
375{
380 int i;
381
382 for ( i = 0; i < m_AB; ++i )
383 {
384 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
385 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
386 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
387
388 dcomplex* y10t = buff_y + (0 )*inc_y;
389
390 dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
391 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
392 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
393
394 int m_behind = i;
395
396 /*------------------------------------------------------------*/
397
398 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
399 // FLA_ONE, A00, b10t, FLA_ZERO, y10t_t );
402 m_behind,
403 buff_1,
404 A00, rs_A, cs_A,
405 b10t, cs_B,
406 buff_0,
407 y10t, inc_y );
408
409 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
410 // B00, a10t );
414 m_behind,
415 B00, rs_B, cs_B,
416 a10t, cs_A );
417
418 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
420 m_behind,
421 buff_m1h,
422 y10t, inc_y,
423 a10t, cs_A );
424
425 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
427 m_behind,
428 buff_m1,
429 a10t, cs_A,
430 b10t, cs_B,
431 buff_1,
432 alpha11 );
433
434 // FLA_Inv_scal_external( beta11, alpha11 );
435 // FLA_Inv_scal_external( beta11, alpha11 );
438
439 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t_t, a10t );
441 m_behind,
442 buff_m1h,
443 y10t, inc_y,
444 a10t, cs_A );
445
446 // FLA_Inv_scal_external( beta11, a10t );
448 m_behind,
449 beta11,
450 a10t, cs_A );
451
452 /*------------------------------------------------------------*/
453
454 }
455
456 return FLA_SUCCESS;
457}
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_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var1().

◆ FLA_Eig_gest_il_opz_var2()

FLA_Error FLA_Eig_gest_il_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 
)
408{
413 int i;
414
415 for ( i = 0; i < m_AB; ++i )
416 {
417 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
418 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
419 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
420 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
421 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
422
423 dcomplex* y10t = buff_y + (0 )*inc_y;
424
425 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
426 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
427
428 int m_ahead = m_AB - i - 1;
429 int m_behind = i;
430
431 /*------------------------------------------------------------*/
432
433 // FLA_Hemvc_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
434 // FLA_ONE_HALF, A00, b10t, FLA_ZERO, y10t_t );
437 m_behind,
438 buff_1h,
439 A00, rs_A, cs_A,
440 b10t, cs_B,
441 buff_0,
442 y10t, inc_y );
443
444 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
446 m_behind,
447 buff_m1,
448 y10t, inc_y,
449 a10t, cs_A );
450
451 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
453 m_behind,
454 buff_m1,
455 a10t, cs_A,
456 b10t, cs_B,
457 buff_1,
458 alpha11 );
459
460 // FLA_Inv_scal_external( beta11, alpha11 );
461 // FLA_Inv_scal_external( beta11, alpha11 );
464
465 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
466 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
469 m_ahead,
470 m_behind,
471 buff_m1,
472 A20, rs_A, cs_A,
473 b10t, cs_B,
474 buff_1,
475 a21, rs_A );
476
477 // FLA_Inv_scal_external( beta11, a21 );
479 m_ahead,
480 beta11,
481 a21, rs_A );
482
483 // FLA_Axpy_external( FLA_MINUS_ONE, y10t_t, a10t );
485 m_behind,
486 buff_m1,
487 y10t, inc_y,
488 a10t, cs_A );
489
490 // FLA_Inv_scal_external( beta11, a10t );
492 m_behind,
493 beta11,
494 a10t, cs_A );
495
496 /*------------------------------------------------------------*/
497
498 }
499
500 return FLA_SUCCESS;
501}
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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il_opt_var2().

◆ FLA_Eig_gest_il_opz_var3()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
486 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
487 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
488 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
489
490 dcomplex* y10t = buff_Y + (0 )*cs_Y + (i )*rs_Y;
491 dcomplex* Y20 = buff_Y + (0 )*cs_Y + (i+1)*rs_Y;
492 dcomplex* y21 = buff_Y + (i )*cs_Y + (i+1)*rs_Y;
493
494 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
495 dcomplex* B20 = buff_B + (0 )*cs_B + (i+1)*rs_B;
496 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
497 dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*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, y10t, a10t );
506 m_behind,
507 buff_m1h,
508 y10t, cs_Y,
509 a10t, cs_A );
510
511 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a10t, b10t, FLA_ONE, alpha11 );
513 m_behind,
514 buff_m1,
515 a10t, cs_A,
516 b10t, cs_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_NO_TRANSPOSE, FLA_CONJUGATE,
526 // FLA_MINUS_ONE, A20, b10t, FLA_ONE, a21 );
529 m_ahead,
530 m_behind,
531 buff_m1,
532 A20, rs_A, cs_A,
533 b10t, cs_B,
534 buff_1,
535 a21, rs_A );
536
537 // FLA_Inv_scal_external( beta11, a21 );
539 m_ahead,
540 beta11,
541 a21, rs_A );
542
543 // FLA_Axpy_external( FLA_MINUS_ONE_HALF, y10t, a10t );
545 m_behind,
546 buff_m1h,
547 y10t, cs_Y,
548 a10t, cs_A );
549
550 // FLA_Inv_scal_external( beta11, a10t );
552 m_behind,
553 beta11,
554 a10t, cs_A );
555
556 // FLA_Ger_external( FLA_ONE, b21, a10t, Y20 );
559 m_ahead,
560 m_behind,
561 buff_1,
562 b21, rs_B,
563 a10t, cs_A,
564 Y20, rs_Y, cs_Y );
565
566 // FLA_Copy_external( b21, y21 );
567 // FLA_Scal_external( alpha11, y21 );
569 m_ahead,
570 b21, rs_B,
571 y21, rs_Y );
573 m_ahead,
574 alpha11,
575 y21, rs_Y );
576
577 // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE,
578 // FLA_ONE, B20, a10t, FLA_ONE, y21 );
581 m_ahead,
582 m_behind,
583 buff_1,
584 B20, rs_B, cs_B,
585 a10t, cs_A,
586 buff_1,
587 y21, rs_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_NO_TRANSPOSE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, FLA_ONE, and i.

Referenced by FLA_Eig_gest_il_opt_var3().

◆ FLA_Eig_gest_il_opz_var4()

FLA_Error FLA_Eig_gest_il_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
385 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
386 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
387 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a10t );
402 m_behind,
403 beta11,
404 a10t, cs_A );
405
406 // FLA_Ger_external( FLA_MINUS_ONE, b21, a10t, A20 );
409 m_ahead,
410 m_behind,
411 buff_m1,
412 b21, rs_B,
413 a10t, cs_A,
414 A20, 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, a21 );
427 m_ahead,
428 beta11,
429 a21, rs_A );
430
431 // FLA_Axpy_external( psi11, b21, a21 );
433 m_ahead,
434 &psi11,
435 b21, rs_B,
436 a21, rs_A );
437
438 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
439 // FLA_MINUS_ONE, a21, b21, A22 );
442 m_ahead,
443 buff_m1,
444 a21, rs_A,
445 b21, rs_B,
446 A22, rs_A, cs_A );
447
448 // FLA_Axpy_external( psi11, b21, a21 );
450 m_ahead,
451 &psi11,
452 b21, rs_B,
453 a21, rs_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_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var4().

◆ FLA_Eig_gest_il_opz_var5()

FLA_Error FLA_Eig_gest_il_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* a21 = buff_A + (i )*cs_A + (i+1)*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* b21 = buff_B + (i )*cs_B + (i+1)*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, a21 );
382 m_ahead,
383 beta11,
384 a21, rs_A );
385
386 // FLA_Axpy_external( psi11, b21, a21 );
388 m_ahead,
389 &psi11,
390 b21, rs_B,
391 a21, rs_A );
392
393 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_NO_CONJUGATE,
394 // FLA_MINUS_ONE, a21, b21, A22 );
397 m_ahead,
398 buff_m1,
399 a21, rs_A,
400 b21, rs_B,
401 A22, rs_A, cs_A );
402
403 // FLA_Axpy_external( psi11, b21, a21 );
405 m_ahead,
406 &psi11,
407 b21, rs_B,
408 a21, rs_A );
409
410 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
411 // B22, a21 );
415 m_ahead,
416 B22, rs_B, cs_B,
417 a21, rs_A );
418
419 /*------------------------------------------------------------*/
420
421 }
422
423 return FLA_SUCCESS;
424}

References bl1_zaxpyv(), bl1_zher2(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, FLA_MINUS_ONE, FLA_MINUS_ONE_HALF, and i.

Referenced by FLA_Eig_gest_il_opt_var5().

◆ FLA_Eig_gest_il_unb_var1()

FLA_Error FLA_Eig_gest_il_unb_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj BTL, BTR, B00, b01, B02,
21 B20, b21, B22;
22
24
26 y10t_b;
27
28 FLA_Part_2x2( A, &ATL, &ATR,
29 &ABL, &ABR, 0, 0, FLA_TL );
30
31 FLA_Part_2x2( B, &BTL, &BTR,
32 &BBL, &BBR, 0, 0, FLA_TL );
33
34 FLA_Part_1x2( Y, &yL, &yR, 0, FLA_LEFT );
35
36 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
37
38 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
39 /* ************* */ /* ************************** */
40 &a10t, /**/ &alpha11, &a12t,
41 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
42 1, 1, FLA_BR );
43
44 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
45 /* ************* */ /* ************************* */
46 &b10t, /**/ &beta11, &b12t,
47 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
48 1, 1, FLA_BR );
49
50 FLA_Repart_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
51 1, FLA_RIGHT );
52
53 /*------------------------------------------------------------*/
54
56 &y10t_b, 1, FLA_TOP );
57
58 // y10t = b10t * A00;
59 // y10t^T = A00^T * b10t^T;
60 // = conj(A00) * b10t^T;
63
64 // a10t = a10t * inv( tril( B00 )' );
65 // a10t^T = inv( conj(tril( B00 )) ) * a10t^T;
67 B00, a10t );
68
69 // a10t = a10t - 1/2 * y10t;
71
72 // alpha11 = alpha11 - a10t * b10t' - b10t * a10t';
74
75 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
76 // = inv(beta11) * alpha11 * inv(beta11);
79
80 // a10t = a10t - 1/2 * y10t;
82
83 // a10t = inv(beta11) * a10t;
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
100 FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
101 FLA_LEFT );
102 }
103
104 return FLA_SUCCESS;
105}
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_1x3_to_1x2(), 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_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_Trsv_external(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_unb_var2()

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

References FLA_Axpy_external(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Gemvc_external(), FLA_Hemvc_external(), FLA_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_1x2_to_1x3(), FLA_Repart_2x2_to_3x3(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_il().

◆ FLA_Eig_gest_il_unb_var3()

FLA_Error FLA_Eig_gest_il_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
23 FLA_Obj YTL, YTR, Y00, y01, Y02,
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 // a10t = a10t - 1/2 * y10t;
60
61 // alpha11 = alpha11 - a10t * b10t' - b10t * a10t';
63
64 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
65 // = inv(beta11) * alpha11 * inv(beta11);
68
69 // a21 = a21 - A20 * b10t';
72
73 // a21 = a21 * inv(conj(beta11));
74 // = a21 * inv(beta11);
76
77 // a10t = a10t - 1/2 * y10t;
79
80 // a10t = inv(beta11) * a10t;
82
83 // Y20 = Y20 + b21 * a10t;
85
86 // y21 = b21 * alpha11;
89
90 // y21 = y21 + B20 * a10t';
93
94 /*------------------------------------------------------------*/
95
96 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
97 a10t, alpha11, /**/ a12t,
98 /* ************** */ /* ************************ */
99 &ABL, /**/ &ABR, A20, a21, /**/ A22,
100 FLA_TL );
101
102 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
103 b10t, beta11, /**/ b12t,
104 /* ************** */ /* *********************** */
105 &BBL, /**/ &BBR, B20, b21, /**/ B22,
106 FLA_TL );
107
108 FLA_Cont_with_3x3_to_2x2( &YTL, /**/ &YTR, Y00, y01, /**/ Y02,
109 y10t, psi11, /**/ y12t,
110 /* ************** */ /* ********************** */
111 &YBL, /**/ &YBR, Y20, y21, /**/ Y22,
112 FLA_TL );
113 }
114
115 return FLA_SUCCESS;
116}
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_il().

◆ FLA_Eig_gest_il_unb_var4()

FLA_Error FLA_Eig_gest_il_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 yT, y01,
24 // yB, psi11,
25 // y21;
26
27 //FLA_Obj y21_l, y21_r;
28
30 y21, Y22;
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_2x1( Y, &yT,
39 // &yB, 0, FLA_TOP );
40
42 &y21, &Y22, 1, 1, FLA_TL );
43
44 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
45
46 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
47 /* ************* */ /* ************************** */
48 &a10t, /**/ &alpha11, &a12t,
49 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
50 1, 1, FLA_BR );
51
52 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
53 /* ************* */ /* ************************* */
54 &b10t, /**/ &beta11, &b12t,
55 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
56 1, 1, FLA_BR );
57
58 //FLA_Repart_2x1_to_3x1( yT, &y01,
59 // /* ** */ /* ***** */
60 // &psi11,
61 // yB, &y21, 1, FLA_BOTTOM );
62
63 /*------------------------------------------------------------*/
64
65 //FLA_Part_1x2( y21, &y21_l, &y21_r, 1, FLA_LEFT );
66
67 // a10t = inv(beta11) * a10t;
69
70 // A20 = A20 - b21 * a10t;
72
73 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
74 // = inv(beta11) * alpha11 * inv(beta11);
77
78 //// y21 = b21 * alpha11;
79 //FLA_Copy_external( b21, y21_l );
80 //FLA_Scal_external( alpha11, y21_l );
81 // psi11 = - 1/2 * alpha11;
84
85 // a21 = a21 * inv(conj(beta11));
86 // = a21 * inv(beta11);
88
89 //// a21 = a21 - 1/2 * y21;
90 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y21_l, a21 );
91 // a21 = a21 - 1/2 * alpha11 * b21;
93
94 // A22 = A22 - a21 * b21' - b21 * a21';
97
98 //// a21 = a21 - 1/2 * y21;
99 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y21_l, a21 );
100 // a21 = a21 - 1/2 * alpha11 * b21;
102
103 /*------------------------------------------------------------*/
104
105 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
106 a10t, alpha11, /**/ a12t,
107 /* ************** */ /* ************************ */
108 &ABL, /**/ &ABR, A20, a21, /**/ A22,
109 FLA_TL );
110
111 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
112 b10t, beta11, /**/ b12t,
113 /* ************** */ /* *********************** */
114 &BBL, /**/ &BBR, B20, b21, /**/ B22,
115 FLA_TL );
116
117 //FLA_Cont_with_3x1_to_2x1( &yT, y01,
118 // psi11,
119 // /* ** */ /* ***** */
120 // &yB, y21, FLA_TOP );
121 }
122
123 return FLA_SUCCESS;
124}
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_il().

◆ FLA_Eig_gest_il_unb_var5()

FLA_Error FLA_Eig_gest_il_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 yT, y01,
24 // yB, psi11,
25 // y21;
26
27 //FLA_Obj y21_l, y21_r;
28
30 y21, Y22;
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_2x1( Y, &yT,
39 // &yB, 0, FLA_TOP );
40
42 &y21, &Y22, 1, 1, FLA_TL );
43
44 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
45
46 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
47 /* ************* */ /* ************************** */
48 &a10t, /**/ &alpha11, &a12t,
49 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
50 1, 1, FLA_BR );
51
52 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
53 /* ************* */ /* ************************* */
54 &b10t, /**/ &beta11, &b12t,
55 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
56 1, 1, FLA_BR );
57
58 //FLA_Repart_2x1_to_3x1( yT, &y01,
59 // /* ** */ /* ***** */
60 // &psi11,
61 // yB, &y21, 1, FLA_BOTTOM );
62
63 /*------------------------------------------------------------*/
64
65 //FLA_Part_1x2( y21, &y21_l, &y21_r, 1, FLA_LEFT );
66
67 // alpha11 = inv(beta11) * alpha11 * inv(conj(beta11));
68 // = inv(beta11) * alpha11 * inv(beta11);
71
72 //// y21 = b21 * alpha11;
73 //FLA_Copy_external( b21, y21_l );
74 //FLA_Scal_external( alpha11, y21_l );
75 // psi11 = - 1/2 * alpha11;
78
79 // a21 = a21 * inv(conj(beta11));
80 // = a21 * inv(beta11);
82
83 //// a21 = a21 - 1/2 * y21;
84 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y21_l, a21 );
85 // a21 = a21 - 1/2 * alpha11 * b21;
87
88 // A22 = A22 - a21 * b21' - b21 * a21';
91
92 //// a21 = a21 - 1/2 * y21;
93 //FLA_Axpy_external( FLA_MINUS_ONE_HALF, y21_l, a21 );
94 // a21 = a21 - 1/2 * alpha11 * b21;
96
97 // a21 = inv( tril( B22 ) ) * a21;
99 B22, a21 );
100
101 /*------------------------------------------------------------*/
102
103 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
104 a10t, alpha11, /**/ a12t,
105 /* ************** */ /* ************************ */
106 &ABL, /**/ &ABR, A20, a21, /**/ A22,
107 FLA_TL );
108
109 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
110 b10t, beta11, /**/ b12t,
111 /* ************** */ /* *********************** */
112 &BBL, /**/ &BBR, B20, b21, /**/ B22,
113 FLA_TL );
114
115 //FLA_Cont_with_3x1_to_2x1( &yT, y01,
116 // psi11,
117 // /* ** */ /* ***** */
118 // &yB, y21, FLA_TOP );
119 }
120
121 return FLA_SUCCESS;
122}

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