libflame revision_anchor
Functions
FLA_Eig_gest_nl.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Eig_gest_nl_blk_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_blk_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_blk_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_blk_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_blk_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 
FLA_Error FLA_Eig_gest_nl_unb_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_unb_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_unb_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_unb_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_unb_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_opt_var1 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_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_nl_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_nl_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_nl_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_nl_opt_var2 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_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_nl_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_nl_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_nl_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_nl_opt_var3 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_ops_var3 (int m_AB, float *buff_A, int rs_A, int cs_A, float *buff_y, int inc_y, float *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_nl_opd_var3 (int m_AB, double *buff_A, int rs_A, int cs_A, double *buff_y, int inc_y, double *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_nl_opc_var3 (int m_AB, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_y, int inc_y, scomplex *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_nl_opz_var3 (int m_AB, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_y, int inc_y, dcomplex *buff_B, int rs_B, int cs_B)
 
FLA_Error FLA_Eig_gest_nl_opt_var4 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_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_nl_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_nl_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_nl_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_nl_opt_var5 (FLA_Obj A, FLA_Obj Y, FLA_Obj B)
 
FLA_Error FLA_Eig_gest_nl_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_nl_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_nl_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_nl_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_nl_blk_var1()

FLA_Error FLA_Eig_gest_nl_blk_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
14{
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
20 BBL, BBR, B10, B11, B12,
21 B20, B21, B22;
22
23 FLA_Obj YT, Y01,
24 YB, Y11,
25 Y21;
26
28
29 dim_t b;
30
31 FLA_Part_2x2( A, &ATL, &ATR,
32 &ABL, &ABR, 0, 0, FLA_TL );
33
34 FLA_Part_2x2( B, &BTL, &BTR,
35 &BBL, &BBR, 0, 0, FLA_TL );
36
37 FLA_Part_2x1( Y, &YT,
38 &YB, 0, FLA_TOP );
39
40 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41
43
44 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45 /* ************* */ /* ******************** */
46 &A10, /**/ &A11, &A12,
47 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48 b, b, FLA_BR );
49
50 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51 /* ************* */ /* ******************** */
52 &B10, /**/ &B11, &B12,
53 BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54 b, b, FLA_BR );
55
57 /* ** */ /* *** */
58 &Y11,
59 YB, &Y21, b, FLA_BOTTOM );
60
61 /*------------------------------------------------------------*/
62
64
65 // Y21 = A22 * B21;
68 FLA_Cntl_sub_hemm( cntl ) );
69
70 // A21 = A21 * tril( B11 );
73 FLA_ONE, B11, A21,
74 FLA_Cntl_sub_trmm1( cntl ) );
75
76 // A21 = A21 + 1/2 * Y21;
78 FLA_Cntl_sub_axpy1( cntl ) );
79
80 // A11 = tril( B11 )' * A11 * tril( B11 );
82 A11, Y11, B11,
83 FLA_Cntl_sub_eig_gest( cntl ) );
84
85 // A11 = A11 + A21' * B21 + B21' * A21;
88 FLA_Cntl_sub_her2k( cntl ) );
89
90 // A21 = A21 + 1/2 * Y21;
92 FLA_Cntl_sub_axpy2( cntl ) );
93
94 // A21 = tril( B22 )' * A21;
97 FLA_ONE, B22, A21,
98 FLA_Cntl_sub_trmm2( cntl ) );
99
100 /*------------------------------------------------------------*/
101
102 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
103 A10, A11, /**/ A12,
104 /* ************** */ /* ****************** */
105 &ABL, /**/ &ABR, A20, A21, /**/ A22,
106 FLA_TL );
107
108 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
109 B10, B11, /**/ B12,
110 /* ************** */ /* ****************** */
111 &BBL, /**/ &BBR, B20, B21, /**/ B22,
112 FLA_TL );
113
115 Y11,
116 /* ** */ /* *** */
117 &YB, Y21, FLA_TOP );
118 }
119
120 return FLA_SUCCESS;
121}
FLA_Error FLA_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition FLA_Axpy_internal.c:16
FLA_Error FLA_Eig_gest_internal(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition FLA_Eig_gest_internal.c:17
FLA_Error FLA_Hemm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_hemm_t *cntl)
Definition FLA_Hemm_internal.c:16
FLA_Error FLA_Her2k_internal(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_her2k_t *cntl)
Definition FLA_Her2k_internal.c:16
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition FLA_Trmm_internal.c:16
FLA_Obj FLA_ONE_HALF
Definition FLA_Init.c:19
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition FLA_View.c:304
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:17
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:428
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:226
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:142
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition FLA_Blocksize.c:234
unsigned long dim_t
Definition FLA_type_defs.h:71
int i
Definition bl1_axmyv2.c:145
Definition FLA_type_defs.h:159

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_blk_var2()

FLA_Error FLA_Eig_gest_nl_blk_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
14{
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
20 BBL, BBR, B10, B11, B12,
21 B20, B21, B22;
22
23 FLA_Obj YT, Y01,
24 YB, Y11,
25 Y21;
26
28
29 dim_t b;
30
31 FLA_Part_2x2( A, &ATL, &ATR,
32 &ABL, &ABR, 0, 0, FLA_TL );
33
34 FLA_Part_2x2( B, &BTL, &BTR,
35 &BBL, &BBR, 0, 0, FLA_TL );
36
37 FLA_Part_2x1( Y, &YT,
38 &YB, 0, FLA_TOP );
39
40 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41
43
44 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45 /* ************* */ /* ******************** */
46 &A10, /**/ &A11, &A12,
47 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48 b, b, FLA_BR );
49
50 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51 /* ************* */ /* ******************** */
52 &B10, /**/ &B11, &B12,
53 BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54 b, b, FLA_BR );
55
57 /* ** */ /* *** */
58 &Y11,
59 YB, &Y21, b, FLA_BOTTOM );
60
61 /*------------------------------------------------------------*/
62
64
65 // A10 = tril( B11 )' * A10;
68 FLA_ONE, B11, A10,
69 FLA_Cntl_sub_trmm1( cntl ) );
70
71 // A10 = A10 + B21' * A20;
74 FLA_Cntl_sub_gemm1( cntl ) );
75
76 // Y21 = A22 * B21;
79 FLA_Cntl_sub_hemm( cntl ) );
80
81 // A21 = A21 * tril( B11 );
84 FLA_ONE, B11, A21,
85 FLA_Cntl_sub_trmm2( cntl ) );
86
87 // A21 = A21 + 1/2 * Y21;
89 FLA_Cntl_sub_axpy1( cntl ) );
90
91 // A11 = tril( B11 )' * A11 * tril( B11 );
93 A11, Y11, B11,
94 FLA_Cntl_sub_eig_gest( cntl ) );
95
96 // A11 = A11 + A21' * B21 + B21' * A21;
99 FLA_Cntl_sub_her2k( cntl ) );
100
101 // A21 = A21 + 1/2 * Y21;
103 FLA_Cntl_sub_axpy2( cntl ) );
104
105 /*------------------------------------------------------------*/
106
107 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
108 A10, A11, /**/ A12,
109 /* ************** */ /* ****************** */
110 &ABL, /**/ &ABR, A20, A21, /**/ A22,
111 FLA_TL );
112
113 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
114 B10, B11, /**/ B12,
115 /* ************** */ /* ****************** */
116 &BBL, /**/ &BBR, B20, B21, /**/ B22,
117 FLA_TL );
118
120 Y11,
121 /* ** */ /* *** */
122 &YB, Y21, FLA_TOP );
123 }
124
125 return FLA_SUCCESS;
126}
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition FLA_Gemm_internal.c:16

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_blk_var3()

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

◆ FLA_Eig_gest_nl_blk_var4()

FLA_Error FLA_Eig_gest_nl_blk_var4 ( 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 = A11 * B10;
67 FLA_Cntl_sub_hemm( cntl ) );
68
69 // A10 = A10 + 1/2 * Y10;
71 FLA_Cntl_sub_axpy1( cntl ) );
72
73 // A00 = A00 + A10' * B10 + B10' * A10;
76 FLA_Cntl_sub_her2k( cntl ) );
77
78 // A10 = A10 + 1/2 * Y10;
80 FLA_Cntl_sub_axpy2( cntl ) );
81
82 // A10 = tril( B11 )' * A10;
85 FLA_ONE, B11, A10,
86 FLA_Cntl_sub_trmm1( cntl ) );
87
88 // A11 = tril( B11 )' * A11 * tril( B11 );
90 A11, Y11, B11,
91 FLA_Cntl_sub_eig_gest( cntl ) );
92
93 // A20 = A20 + A21 * B10;
96 FLA_Cntl_sub_gemm1( cntl ) );
97
98 // A21 = A21 * tril( B11 );
101 FLA_ONE, B11, A21,
102 FLA_Cntl_sub_trmm2( 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_Cont_with_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:475
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:267

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_blk_var5()

FLA_Error FLA_Eig_gest_nl_blk_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
22 BBL, BBR, B10, B11, B12,
23 B20, B21, B22;
24
25 FLA_Obj YL, YR, Y10, Y11, Y12;
26
28 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 = A11 * B10;
67 FLA_Cntl_sub_hemm( cntl ) );
68
69 // A10 = A10 * tril( B00 );
72 FLA_ONE, B00, A10,
73 FLA_Cntl_sub_trmm1( cntl ) );
74
75 // A10 = A10 + 1/2 * Y10;
77 FLA_Cntl_sub_axpy1( cntl ) );
78
79 // A00 = A00 + A10' * B10 + B10' * A10;
82 FLA_Cntl_sub_her2k( cntl ) );
83
84 // A10 = A10 + 1/2 * Y10;
86 FLA_Cntl_sub_axpy2( cntl ) );
87
88 // A10 = tril( B11 )' * A10;
91 FLA_ONE, B11, A10,
92 FLA_Cntl_sub_trmm2( cntl ) );
93
94 // A11 = tril( B11 )' * A11 * tril( B11 );
96 A11, Y11, B11,
97 FLA_Cntl_sub_eig_gest( cntl ) );
98
99 /*------------------------------------------------------------*/
100
101 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
102 A10, A11, /**/ A12,
103 /* ************** */ /* ****************** */
104 &ABL, /**/ &ABR, A20, A21, /**/ A22,
105 FLA_TL );
106
107 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, B01, /**/ B02,
108 B10, B11, /**/ B12,
109 /* ************** */ /* ****************** */
110 &BBL, /**/ &BBR, B20, B21, /**/ B22,
111 FLA_TL );
112
113 FLA_Cont_with_1x3_to_1x2( &YL, /**/ &YR, Y10, Y11, /**/ Y12,
114 FLA_LEFT );
115 }
116
117 return FLA_SUCCESS;
118}

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_opc_var1()

FLA_Error FLA_Eig_gest_nl_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 
)
282{
286 int i;
287
288 for ( i = 0; i < m_AB; ++i )
289 {
290 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
291 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
292 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
293
294 scomplex* y21 = buff_y + (i+1)*inc_y;
295
296 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
297 scomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
298 scomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
299
300 int m_ahead = m_AB - i - 1;
301
302 /*------------------------------------------------------------*/
303
304 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
305 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
308 m_ahead,
309 buff_1,
310 A22, rs_A, cs_A,
311 b21, rs_B,
312 buff_0,
313 y21, inc_y );
314
315 // FLA_Scal_external( beta11, a21 );
317 m_ahead,
318 beta11,
319 a21, rs_A );
320
321 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
323 m_ahead,
324 buff_1h,
325 y21, inc_y,
326 a21, rs_A );
327
328 // FLA_Scal_external( beta11, alpha11 );
329 // FLA_Scal_external( beta11, alpha11 );
332
333 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
335 m_ahead,
336 buff_1,
337 a21, rs_A,
338 b21, rs_B,
339 buff_1,
340 alpha11 );
341
342 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
344 m_ahead,
345 buff_1h,
346 y21, inc_y,
347 a21, rs_A );
348
349 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
350 // B22, a21 );
354 m_ahead,
355 B22, rs_B, cs_B,
356 a21, rs_A );
357
358 /*------------------------------------------------------------*/
359
360 }
361
362 return FLA_SUCCESS;
363}
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_axpyv.c:29
void bl1_cdot2s(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition bl1_dot2s.c:39
void bl1_chemv(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_hemv.c:35
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_scalv.c:46
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trmv.c:99
@ BLIS1_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_caxpyv(), bl1_cdot2s(), bl1_chemv(), bl1_cscalv(), bl1_ctrmv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl_opt_var1().

◆ FLA_Eig_gest_nl_opc_var2()

FLA_Error FLA_Eig_gest_nl_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 
)
304{
308 int i;
309
310 for ( i = 0; i < m_AB; ++i )
311 {
312 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
313 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
314 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
315 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
316 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
317
318 scomplex* y21 = buff_y + (i+1)*inc_y;
319
320 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
321 scomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
322
323 int m_ahead = m_AB - i - 1;
324 int m_behind = i;
325
326 /*------------------------------------------------------------*/
327
328 // FLA_Scal_external( beta11, a10t );
330 m_behind,
331 beta11,
332 a10t, cs_A );
333
334 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
335 // FLA_ONE, A20, b21, FLA_ONE, a10t );
338 m_ahead,
339 m_behind,
340 buff_1,
341 A20, rs_A, cs_A,
342 b21, rs_B,
343 buff_1,
344 a10t, cs_A );
345
346 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
347 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
350 m_ahead,
351 buff_1,
352 A22, rs_A, cs_A,
353 b21, rs_B,
354 buff_0,
355 y21, inc_y );
356
357 // FLA_Scal_external( beta11, a21 );
359 m_ahead,
360 beta11,
361 a21, rs_A );
362
363 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
365 m_ahead,
366 buff_1h,
367 y21, inc_y,
368 a21, rs_A );
369
370 // FLA_Scal_external( beta11, alpha11 );
371 // FLA_Scal_external( beta11, alpha11 );
374
375 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
377 m_ahead,
378 buff_1,
379 a21, rs_A,
380 b21, rs_B,
381 buff_1,
382 alpha11 );
383
384 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
386 m_ahead,
387 buff_1h,
388 y21, inc_y,
389 a21, rs_A );
390
391 /*------------------------------------------------------------*/
392
393 }
394
395 return FLA_SUCCESS;
396}
void bl1_cgemv(trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_gemv.c:125
@ BLIS1_TRANSPOSE
Definition blis_type_defs.h:55

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

Referenced by FLA_Eig_gest_nl_opt_var2().

◆ FLA_Eig_gest_nl_opc_var3()

FLA_Error FLA_Eig_gest_nl_opc_var3 ( int  m_AB,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_y,
int  inc_y,
scomplex buff_B,
int  rs_B,
int  cs_B 
)

◆ FLA_Eig_gest_nl_opc_var4()

FLA_Error FLA_Eig_gest_nl_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 
)
287{
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* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
297 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
298 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
299
300 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
301 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
302
304
305 int m_ahead = m_AB - i - 1;
306 int m_behind = i;
307
308 /*------------------------------------------------------------*/
309
310 // FLA_Copy_external( alpha11, psi11 );
311 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
313
314 // FLA_Axpy_external( psi11, b10t, a10t );
316 m_behind,
317 &psi11,
318 b10t, cs_B,
319 a10t, cs_A );
320
321 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
322 // FLA_ONE, a10t, b10t, A00 );
325 m_behind,
326 buff_1,
327 a10t, cs_A,
328 b10t, cs_B,
329 A00, rs_A, cs_A );
330
331 // FLA_Axpy_external( psi11, b10t, a10t );
333 m_behind,
334 &psi11,
335 b10t, cs_B,
336 a10t, cs_A );
337
338 // FLA_Scal_external( beta11, a10t );
340 m_behind,
341 beta11,
342 a10t, cs_A );
343
344 // FLA_Scal_external( beta11, alpha11 );
345 // FLA_Scal_external( beta11, alpha11 );
348
349 // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
352 m_ahead,
353 m_behind,
354 buff_1,
355 a21, rs_A,
356 b10t, cs_B,
357 A20, rs_A, cs_A );
358
359 // FLA_Scal_external( beta11, a21 );
361 m_ahead,
362 beta11,
363 a21, rs_A );
364
365 /*------------------------------------------------------------*/
366
367 }
368
369 return FLA_SUCCESS;
370}
void bl1_cger(conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition bl1_ger.c:111
void bl1_cher2(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:33

References bl1_caxpyv(), bl1_cger(), bl1_cher2(), bl1_cscalv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var4().

◆ FLA_Eig_gest_nl_opc_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
269{
272 int i;
273
274 for ( i = 0; i < m_AB; ++i )
275 {
276 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
277 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
278 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
279
280 scomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
281 scomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
282 scomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
283
285
286 int m_behind = i;
287
288 /*------------------------------------------------------------*/
289
290 // FLA_Copy_external( alpha11, psi11 );
291 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
293
294 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
295 // B00, a10t );
299 m_behind,
300 B00, rs_B, cs_B,
301 a10t, cs_A );
302
303 // FLA_Axpy_external( psi11, b10t, a10t );
305 m_behind,
306 &psi11,
307 b10t, cs_B,
308 a10t, cs_A );
309
310 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
311 // FLA_ONE, a10t, b10t, A00 );
314 m_behind,
315 buff_1,
316 a10t, cs_A,
317 b10t, cs_B,
318 A00, rs_A, cs_A );
319
320 // FLA_Axpy_external( psi11, b10t, a10t );
322 m_behind,
323 &psi11,
324 b10t, cs_B,
325 a10t, cs_A );
326
327 // FLA_Scal_external( beta11, a10t );
329 m_behind,
330 beta11,
331 a10t, cs_A );
332
333 // FLA_Scal_external( beta11, alpha11 );
334 // FLA_Scal_external( beta11, alpha11 );
337
338 /*------------------------------------------------------------*/
339
340 }
341
342 return FLA_SUCCESS;
343}

References bl1_caxpyv(), bl1_cher2(), bl1_cscalv(), bl1_ctrmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_opd_var1()

FLA_Error FLA_Eig_gest_nl_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 
)
193{
194 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
195 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
197 int i;
198
199 for ( i = 0; i < m_AB; ++i )
200 {
201 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
202 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
203 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
204
205 double* y21 = buff_y + (i+1)*inc_y;
206
207 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
208 double* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
209 double* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
210
211 int m_ahead = m_AB - i - 1;
212
213 /*------------------------------------------------------------*/
214
215 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
216 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
219 m_ahead,
220 buff_1,
221 A22, rs_A, cs_A,
222 b21, rs_B,
223 buff_0,
224 y21, inc_y );
225
226 // FLA_Scal_external( beta11, a21 );
228 m_ahead,
229 beta11,
230 a21, rs_A );
231
232 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
234 m_ahead,
235 buff_1h,
236 y21, inc_y,
237 a21, rs_A );
238
239 // FLA_Scal_external( beta11, alpha11 );
240 // FLA_Scal_external( beta11, alpha11 );
243
244 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
246 m_ahead,
247 buff_1,
248 a21, rs_A,
249 b21, rs_B,
250 buff_1,
251 alpha11 );
252
253 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
255 m_ahead,
256 buff_1h,
257 y21, inc_y,
258 a21, rs_A );
259
260 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
261 // B22, a21 );
265 m_ahead,
266 B22, rs_B, cs_B,
267 a21, rs_A );
268
269 /*------------------------------------------------------------*/
270
271 }
272
273 return FLA_SUCCESS;
274}
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition bl1_axpyv.c:21
void bl1_ddot2s(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition bl1_dot2s.c:26
void bl1_dhemv(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_hemv.c:24
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trmv.c:56

References bl1_daxpyv(), bl1_ddot2s(), bl1_dhemv(), bl1_dscalv(), bl1_dtrmv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl_opt_var1().

◆ FLA_Eig_gest_nl_opd_var2()

FLA_Error FLA_Eig_gest_nl_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 
)
204{
205 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
206 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
208 int i;
209
210 for ( i = 0; i < m_AB; ++i )
211 {
212 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
213 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
214 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
215 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
216 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
217
218 double* y21 = buff_y + (i+1)*inc_y;
219
220 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
221 double* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
222
223 int m_ahead = m_AB - i - 1;
224 int m_behind = i;
225
226 /*------------------------------------------------------------*/
227
228 // FLA_Scal_external( beta11, a10t );
230 m_behind,
231 beta11,
232 a10t, cs_A );
233
234 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
235 // FLA_ONE, A20, b21, FLA_ONE, a10t );
238 m_ahead,
239 m_behind,
240 buff_1,
241 A20, rs_A, cs_A,
242 b21, rs_B,
243 buff_1,
244 a10t, cs_A );
245
246 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
247 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
250 m_ahead,
251 buff_1,
252 A22, rs_A, cs_A,
253 b21, rs_B,
254 buff_0,
255 y21, inc_y );
256
257 // FLA_Scal_external( beta11, a21 );
259 m_ahead,
260 beta11,
261 a21, rs_A );
262
263 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
265 m_ahead,
266 buff_1h,
267 y21, inc_y,
268 a21, rs_A );
269
270 // FLA_Scal_external( beta11, alpha11 );
271 // FLA_Scal_external( beta11, alpha11 );
274
275 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
277 m_ahead,
278 buff_1,
279 a21, rs_A,
280 b21, rs_B,
281 buff_1,
282 alpha11 );
283
284 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
286 m_ahead,
287 buff_1h,
288 y21, inc_y,
289 a21, rs_A );
290
291 /*------------------------------------------------------------*/
292
293 }
294
295 return FLA_SUCCESS;
296}
void bl1_dgemv(trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_gemv.c:69

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

Referenced by FLA_Eig_gest_nl_opt_var2().

◆ FLA_Eig_gest_nl_opd_var3()

FLA_Error FLA_Eig_gest_nl_opd_var3 ( int  m_AB,
double buff_A,
int  rs_A,
int  cs_A,
double buff_y,
int  inc_y,
double buff_B,
int  rs_B,
int  cs_B 
)

◆ FLA_Eig_gest_nl_opd_var4()

FLA_Error FLA_Eig_gest_nl_opd_var4 ( int  m_AB,
double buff_A,
int  rs_A,
int  cs_A,
double buff_y,
int  inc_y,
double buff_B,
int  rs_B,
int  cs_B 
)
196{
197 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
199 int i;
200
201 for ( i = 0; i < m_AB; ++i )
202 {
203 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
204 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
205 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
206 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
207 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
208
209 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
210 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
211
212 double psi11;
213
214 int m_ahead = m_AB - i - 1;
215 int m_behind = i;
216
217 /*------------------------------------------------------------*/
218
219 // FLA_Copy_external( alpha11, psi11 );
220 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
222
223 // FLA_Axpy_external( psi11, b10t, a10t );
225 m_behind,
226 &psi11,
227 b10t, cs_B,
228 a10t, cs_A );
229
230 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
231 // FLA_ONE, a10t, b10t, A00 );
234 m_behind,
235 buff_1,
236 a10t, cs_A,
237 b10t, cs_B,
238 A00, rs_A, cs_A );
239
240 // FLA_Axpy_external( psi11, b10t, a10t );
242 m_behind,
243 &psi11,
244 b10t, cs_B,
245 a10t, cs_A );
246
247 // FLA_Scal_external( beta11, a10t );
249 m_behind,
250 beta11,
251 a10t, cs_A );
252
253 // FLA_Scal_external( beta11, alpha11 );
254 // FLA_Scal_external( beta11, alpha11 );
257
258 // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
261 m_ahead,
262 m_behind,
263 buff_1,
264 a21, rs_A,
265 b10t, cs_B,
266 A20, rs_A, cs_A );
267
268 // FLA_Scal_external( beta11, a21 );
270 m_ahead,
271 beta11,
272 a21, rs_A );
273
274 /*------------------------------------------------------------*/
275
276 }
277
278 return FLA_SUCCESS;
279}
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_ger.c:62
void bl1_dher2(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_her2.c:23

References bl1_daxpyv(), bl1_dger(), bl1_dher2(), bl1_dscalv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var4().

◆ FLA_Eig_gest_nl_opd_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
187{
188 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
190 int i;
191
192 for ( i = 0; i < m_AB; ++i )
193 {
194 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
195 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
196 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
197
198 double* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
199 double* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
200 double* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
201
202 double psi11;
203
204 int m_behind = i;
205
206 /*------------------------------------------------------------*/
207
208 // FLA_Copy_external( alpha11, psi11 );
209 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
211
212 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
213 // B00, a10t );
217 m_behind,
218 B00, rs_B, cs_B,
219 a10t, cs_A );
220
221 // FLA_Axpy_external( psi11, b10t, a10t );
223 m_behind,
224 &psi11,
225 b10t, cs_B,
226 a10t, cs_A );
227
228 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
229 // FLA_ONE, a10t, b10t, A00 );
232 m_behind,
233 buff_1,
234 a10t, cs_A,
235 b10t, cs_B,
236 A00, rs_A, cs_A );
237
238 // FLA_Axpy_external( psi11, b10t, a10t );
240 m_behind,
241 &psi11,
242 b10t, cs_B,
243 a10t, cs_A );
244
245 // FLA_Scal_external( beta11, a10t );
247 m_behind,
248 beta11,
249 a10t, cs_A );
250
251 // FLA_Scal_external( beta11, alpha11 );
252 // FLA_Scal_external( beta11, alpha11 );
255
256 /*------------------------------------------------------------*/
257
258 }
259
260 return FLA_SUCCESS;
261}

References bl1_daxpyv(), bl1_dher2(), bl1_dscalv(), bl1_dtrmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_ops_var1()

FLA_Error FLA_Eig_gest_nl_ops_var1 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)
104{
105 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108 int i;
109
110 for ( i = 0; i < m_AB; ++i )
111 {
112 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
113 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
114 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
115
116 float* y21 = buff_y + (i+1)*inc_y;
117
118 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
119 float* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
120 float* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
121
122 int m_ahead = m_AB - i - 1;
123
124 /*------------------------------------------------------------*/
125
126 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
127 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
130 m_ahead,
131 buff_1,
132 A22, rs_A, cs_A,
133 b21, rs_B,
134 buff_0,
135 y21, inc_y );
136
137 // FLA_Scal_external( beta11, a21 );
139 m_ahead,
140 beta11,
141 a21, rs_A );
142
143 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
145 m_ahead,
146 buff_1h,
147 y21, inc_y,
148 a21, rs_A );
149
150 // FLA_Scal_external( beta11, alpha11 );
151 // FLA_Scal_external( beta11, alpha11 );
154
155 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
157 m_ahead,
158 buff_1,
159 a21, rs_A,
160 b21, rs_B,
161 buff_1,
162 alpha11 );
163
164 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
166 m_ahead,
167 buff_1h,
168 y21, inc_y,
169 a21, rs_A );
170
171 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
172 // B22, a21 );
176 m_ahead,
177 B22, rs_B, cs_B,
178 a21, rs_A );
179
180 /*------------------------------------------------------------*/
181
182 }
183
184 return FLA_SUCCESS;
185}
void bl1_saxpyv(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy)
Definition bl1_axpyv.c:13
void bl1_sdot2s(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition bl1_dot2s.c:13
void bl1_shemv(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_hemv.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trmv.c:13

References bl1_saxpyv(), bl1_sdot2s(), bl1_shemv(), bl1_sscalv(), bl1_strmv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl_opt_var1().

◆ FLA_Eig_gest_nl_ops_var2()

FLA_Error FLA_Eig_gest_nl_ops_var2 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)
104{
105 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108 int i;
109
110 for ( i = 0; i < m_AB; ++i )
111 {
112 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
113 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
114 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
115 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
116 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
117
118 float* y21 = buff_y + (i+1)*inc_y;
119
120 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
121 float* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
122
123 int m_ahead = m_AB - i - 1;
124 int m_behind = i;
125
126 /*------------------------------------------------------------*/
127
128 // FLA_Scal_external( beta11, a10t );
130 m_behind,
131 beta11,
132 a10t, cs_A );
133
134 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
135 // FLA_ONE, A20, b21, FLA_ONE, a10t );
138 m_ahead,
139 m_behind,
140 buff_1,
141 A20, rs_A, cs_A,
142 b21, rs_B,
143 buff_1,
144 a10t, cs_A );
145
146 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
147 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
150 m_ahead,
151 buff_1,
152 A22, rs_A, cs_A,
153 b21, rs_B,
154 buff_0,
155 y21, inc_y );
156
157 // FLA_Scal_external( beta11, a21 );
159 m_ahead,
160 beta11,
161 a21, rs_A );
162
163 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
165 m_ahead,
166 buff_1h,
167 y21, inc_y,
168 a21, rs_A );
169
170 // FLA_Scal_external( beta11, alpha11 );
171 // FLA_Scal_external( beta11, alpha11 );
174
175 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
177 m_ahead,
178 buff_1,
179 a21, rs_A,
180 b21, rs_B,
181 buff_1,
182 alpha11 );
183
184 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
186 m_ahead,
187 buff_1h,
188 y21, inc_y,
189 a21, rs_A );
190
191 /*------------------------------------------------------------*/
192
193 }
194
195 return FLA_SUCCESS;
196}
void bl1_sgemv(trans1_t transa, conj1_t conjx, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_gemv.c:13

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

Referenced by FLA_Eig_gest_nl_opt_var2().

◆ FLA_Eig_gest_nl_ops_var3()

FLA_Error FLA_Eig_gest_nl_ops_var3 ( int  m_AB,
float buff_A,
int  rs_A,
int  cs_A,
float buff_y,
int  inc_y,
float buff_B,
int  rs_B,
int  cs_B 
)

◆ FLA_Eig_gest_nl_ops_var4()

FLA_Error FLA_Eig_gest_nl_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 
)
105{
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108 int i;
109
110 for ( i = 0; i < m_AB; ++i )
111 {
112 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
113 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
114 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
115 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
116 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
117
118 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
119 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
120
121 float psi11;
122
123 int m_ahead = m_AB - i - 1;
124 int m_behind = i;
125
126 /*------------------------------------------------------------*/
127
128 // FLA_Copy_external( alpha11, psi11 );
129 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
131
132 // FLA_Axpy_external( psi11, b10t, a10t );
134 m_behind,
135 &psi11,
136 b10t, cs_B,
137 a10t, cs_A );
138
139 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
140 // FLA_ONE, a10t, b10t, A00 );
143 m_behind,
144 buff_1,
145 a10t, cs_A,
146 b10t, cs_B,
147 A00, rs_A, cs_A );
148
149 // FLA_Axpy_external( psi11, b10t, a10t );
151 m_behind,
152 &psi11,
153 b10t, cs_B,
154 a10t, cs_A );
155
156 // FLA_Scal_external( beta11, a10t );
158 m_behind,
159 beta11,
160 a10t, cs_A );
161
162 // FLA_Scal_external( beta11, alpha11 );
163 // FLA_Scal_external( beta11, alpha11 );
166
167 // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
170 m_ahead,
171 m_behind,
172 buff_1,
173 a21, rs_A,
174 b10t, cs_B,
175 A20, rs_A, cs_A );
176
177 // FLA_Scal_external( beta11, a21 );
179 m_ahead,
180 beta11,
181 a21, rs_A );
182
183 /*------------------------------------------------------------*/
184
185 }
186
187 return FLA_SUCCESS;
188}
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_ger.c:13
void bl1_sher2(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_her2.c:13

References bl1_saxpyv(), bl1_sger(), bl1_sher2(), bl1_sscalv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var4().

◆ FLA_Eig_gest_nl_ops_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
105{
106 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
108 int i;
109
110 for ( i = 0; i < m_AB; ++i )
111 {
112 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
113 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
114 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
115
116 float* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
117 float* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
118 float* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
119
120 float psi11;
121
122 int m_behind = i;
123
124 /*------------------------------------------------------------*/
125
126 // FLA_Copy_external( alpha11, psi11 );
127 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
129
130 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
131 // B00, a10t );
135 m_behind,
136 B00, rs_B, cs_B,
137 a10t, cs_A );
138
139 // FLA_Axpy_external( psi11, b10t, a10t );
141 m_behind,
142 &psi11,
143 b10t, cs_B,
144 a10t, cs_A );
145
146 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
147 // FLA_ONE, a10t, b10t, A00 );
150 m_behind,
151 buff_1,
152 a10t, cs_A,
153 b10t, cs_B,
154 A00, rs_A, cs_A );
155
156 // FLA_Axpy_external( psi11, b10t, a10t );
158 m_behind,
159 &psi11,
160 b10t, cs_B,
161 a10t, cs_A );
162
163 // FLA_Scal_external( beta11, a10t );
165 m_behind,
166 beta11,
167 a10t, cs_A );
168
169 // FLA_Scal_external( beta11, alpha11 );
170 // FLA_Scal_external( beta11, alpha11 );
173
174 /*------------------------------------------------------------*/
175
176 }
177
178 return FLA_SUCCESS;
179}

References bl1_saxpyv(), bl1_sher2(), bl1_sscalv(), bl1_strmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_opt_var1()

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_opt_var2()

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

References FLA_Eig_gest_nl_opc_var2(), FLA_Eig_gest_nl_opd_var2(), FLA_Eig_gest_nl_ops_var2(), FLA_Eig_gest_nl_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Part_1x2(), and i.

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_opt_var3()

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

◆ FLA_Eig_gest_nl_opt_var4()

FLA_Error FLA_Eig_gest_nl_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 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_nl_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_nl_opt_var4.c:374
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:101
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:283
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var4.c:192

References FLA_Eig_gest_nl_opc_var4(), FLA_Eig_gest_nl_opd_var4(), FLA_Eig_gest_nl_ops_var4(), FLA_Eig_gest_nl_opz_var4(), 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_nl().

◆ FLA_Eig_gest_nl_opt_var5()

FLA_Error FLA_Eig_gest_nl_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 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_nl_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_nl_opt_var5.c:265
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:183
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:101
FLA_Error FLA_Eig_gest_nl_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_nl_opt_var5.c:347

References FLA_Eig_gest_nl_opc_var5(), FLA_Eig_gest_nl_opd_var5(), FLA_Eig_gest_nl_ops_var5(), FLA_Eig_gest_nl_opz_var5(), 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_nl().

◆ FLA_Eig_gest_nl_opz_var1()

FLA_Error FLA_Eig_gest_nl_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 
)
371{
375 int i;
376
377 for ( i = 0; i < m_AB; ++i )
378 {
379 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
380 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
381 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
382
383 dcomplex* y21 = buff_y + (i+1)*inc_y;
384
385 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
386 dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
387 dcomplex* B22 = buff_B + (i+1)*cs_B + (i+1)*rs_B;
388
389 int m_ahead = m_AB - i - 1;
390
391 /*------------------------------------------------------------*/
392
393 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
394 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
397 m_ahead,
398 buff_1,
399 A22, rs_A, cs_A,
400 b21, rs_B,
401 buff_0,
402 y21, inc_y );
403
404 // FLA_Scal_external( beta11, a21 );
406 m_ahead,
407 beta11,
408 a21, rs_A );
409
410 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
412 m_ahead,
413 buff_1h,
414 y21, inc_y,
415 a21, rs_A );
416
417 // FLA_Scal_external( beta11, alpha11 );
418 // FLA_Scal_external( beta11, alpha11 );
421
422 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
424 m_ahead,
425 buff_1,
426 a21, rs_A,
427 b21, rs_B,
428 buff_1,
429 alpha11 );
430
431 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
433 m_ahead,
434 buff_1h,
435 y21, inc_y,
436 a21, rs_A );
437
438 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
439 // B22, a21 );
443 m_ahead,
444 B22, rs_B, cs_B,
445 a21, rs_A );
446
447 /*------------------------------------------------------------*/
448
449 }
450
451 return FLA_SUCCESS;
452}
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_axpyv.c:60
void bl1_zdot2s(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition bl1_dot2s.c:70
bl1_zscals(beta, rho_yz)
void bl1_zhemv(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_hemv.c:134
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trmv.c:177

References bl1_zaxpyv(), bl1_zdot2s(), bl1_zhemv(), bl1_zscals(), bl1_zscalv(), bl1_ztrmv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, FLA_ONE, FLA_ONE_HALF, FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl_opt_var1().

◆ FLA_Eig_gest_nl_opz_var2()

FLA_Error FLA_Eig_gest_nl_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 
)
404{
408 int i;
409
410 for ( i = 0; i < m_AB; ++i )
411 {
412 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
413 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
414 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
415 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
416 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
417
418 dcomplex* y21 = buff_y + (i+1)*inc_y;
419
420 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
421 dcomplex* b21 = buff_B + (i )*cs_B + (i+1)*rs_B;
422
423 int m_ahead = m_AB - i - 1;
424 int m_behind = i;
425
426 /*------------------------------------------------------------*/
427
428 // FLA_Scal_external( beta11, a10t );
430 m_behind,
431 beta11,
432 a10t, cs_A );
433
434 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
435 // FLA_ONE, A20, b21, FLA_ONE, a10t );
438 m_ahead,
439 m_behind,
440 buff_1,
441 A20, rs_A, cs_A,
442 b21, rs_B,
443 buff_1,
444 a10t, cs_A );
445
446 // FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
447 // FLA_ONE, A22, b21, FLA_ZERO, y21_l );
450 m_ahead,
451 buff_1,
452 A22, rs_A, cs_A,
453 b21, rs_B,
454 buff_0,
455 y21, inc_y );
456
457 // FLA_Scal_external( beta11, a21 );
459 m_ahead,
460 beta11,
461 a21, rs_A );
462
463 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
465 m_ahead,
466 buff_1h,
467 y21, inc_y,
468 a21, rs_A );
469
470 // FLA_Scal_external( beta11, alpha11 );
471 // FLA_Scal_external( beta11, alpha11 );
474
475 // FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
477 m_ahead,
478 buff_1,
479 a21, rs_A,
480 b21, rs_B,
481 buff_1,
482 alpha11 );
483
484 // FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
486 m_ahead,
487 buff_1h,
488 y21, inc_y,
489 a21, rs_A );
490
491 /*------------------------------------------------------------*/
492
493 }
494
495 return FLA_SUCCESS;
496}
void bl1_zgemv(trans1_t transa, conj1_t conjx, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_gemv.c:255

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

Referenced by FLA_Eig_gest_nl_opt_var2().

◆ FLA_Eig_gest_nl_opz_var3()

FLA_Error FLA_Eig_gest_nl_opz_var3 ( int  m_AB,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_y,
int  inc_y,
dcomplex buff_B,
int  rs_B,
int  cs_B 
)

◆ FLA_Eig_gest_nl_opz_var4()

FLA_Error FLA_Eig_gest_nl_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 
)
378{
381 int i;
382
383 for ( i = 0; i < m_AB; ++i )
384 {
385 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
386 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
387 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
388 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
389 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
390
391 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
392 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
393
395
396 int m_ahead = m_AB - i - 1;
397 int m_behind = i;
398
399 /*------------------------------------------------------------*/
400
401 // FLA_Copy_external( alpha11, psi11 );
402 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
404
405 // FLA_Axpy_external( psi11, b10t, a10t );
407 m_behind,
408 &psi11,
409 b10t, cs_B,
410 a10t, cs_A );
411
412 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
413 // FLA_ONE, a10t, b10t, A00 );
416 m_behind,
417 buff_1,
418 a10t, cs_A,
419 b10t, cs_B,
420 A00, rs_A, cs_A );
421
422 // FLA_Axpy_external( psi11, b10t, a10t );
424 m_behind,
425 &psi11,
426 b10t, cs_B,
427 a10t, cs_A );
428
429 // FLA_Scal_external( beta11, a10t );
431 m_behind,
432 beta11,
433 a10t, cs_A );
434
435 // FLA_Scal_external( beta11, alpha11 );
436 // FLA_Scal_external( beta11, alpha11 );
439
440 // FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
443 m_ahead,
444 m_behind,
445 buff_1,
446 a21, rs_A,
447 b10t, cs_B,
448 A20, rs_A, cs_A );
449
450 // FLA_Scal_external( beta11, a21 );
452 m_ahead,
453 beta11,
454 a21, rs_A );
455
456 /*------------------------------------------------------------*/
457
458 }
459
460 return FLA_SUCCESS;
461}
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_ger.c:194
void bl1_zher2(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:121

References bl1_zaxpyv(), bl1_zger(), bl1_zher2(), bl1_zscals(), bl1_zscalv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var4().

◆ FLA_Eig_gest_nl_opz_var5()

FLA_Error FLA_Eig_gest_nl_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 
)
351{
354 int i;
355
356 for ( i = 0; i < m_AB; ++i )
357 {
358 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
359 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
360 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
361
362 dcomplex* B00 = buff_B + (0 )*cs_B + (0 )*rs_B;
363 dcomplex* b10t = buff_B + (0 )*cs_B + (i )*rs_B;
364 dcomplex* beta11 = buff_B + (i )*cs_B + (i )*rs_B;
365
367
368 int m_behind = i;
369
370 /*------------------------------------------------------------*/
371
372 // FLA_Copy_external( alpha11, psi11 );
373 // FLA_Scal_external( FLA_ONE_HALF, psi11 );
375
376 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
377 // B00, a10t );
381 m_behind,
382 B00, rs_B, cs_B,
383 a10t, cs_A );
384
385 // FLA_Axpy_external( psi11, b10t, a10t );
387 m_behind,
388 &psi11,
389 b10t, cs_B,
390 a10t, cs_A );
391
392 // FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
393 // FLA_ONE, a10t, b10t, A00 );
396 m_behind,
397 buff_1,
398 a10t, cs_A,
399 b10t, cs_B,
400 A00, rs_A, cs_A );
401
402 // FLA_Axpy_external( psi11, b10t, a10t );
404 m_behind,
405 &psi11,
406 b10t, cs_B,
407 a10t, cs_A );
408
409 // FLA_Scal_external( beta11, a10t );
411 m_behind,
412 beta11,
413 a10t, cs_A );
414
415 // FLA_Scal_external( beta11, alpha11 );
416 // FLA_Scal_external( beta11, alpha11 );
419
420 /*------------------------------------------------------------*/
421
422 }
423
424 return FLA_SUCCESS;
425}

References bl1_zaxpyv(), bl1_zher2(), bl1_zscals(), bl1_zscalv(), bl1_ztrmv(), BLIS1_CONJUGATE, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_ONE, FLA_ONE_HALF, and i.

Referenced by FLA_Eig_gest_nl_opt_var5().

◆ FLA_Eig_gest_nl_unb_var1()

FLA_Error FLA_Eig_gest_nl_unb_var1 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj BTL, BTR, B00, b01, B02,
21 B20, b21, B22;
22
23 FLA_Obj yT, y01,
24 yB, psi11,
25 y21;
26
28
29 FLA_Part_2x2( A, &ATL, &ATR,
30 &ABL, &ABR, 0, 0, FLA_TL );
31
32 FLA_Part_2x2( B, &BTL, &BTR,
33 &BBL, &BBR, 0, 0, FLA_TL );
34
35 FLA_Part_2x1( Y, &yT,
36 &yB, 0, FLA_TOP );
37
38 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
39
40 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
41 /* ************* */ /* ************************** */
42 &a10t, /**/ &alpha11, &a12t,
43 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
44 1, 1, FLA_BR );
45
46 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
47 /* ************* */ /* ************************* */
48 &b10t, /**/ &beta11, &b12t,
49 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
50 1, 1, FLA_BR );
51
53 /* ** */ /* ***** */
54 &psi11,
55 yB, &y21, 1, FLA_BOTTOM );
56
57 /*------------------------------------------------------------*/
58
60
61 // y21 = A22 * b21;
64
65 // a21 = a21 * beta11;
67
68 // a21 = a21 + 1/2 * y21;
70
71 // alpha11 = conj(beta11) * alpha11 * beta11;
72 // = beta11 * alpha11 * beta11;
75
76 // alpha11 = alpha11 + a21' * b21 + b21' * a21;
78
79 // a21 = a21 + 1/2 * y21;
81
82 // a21 = tril( B22 )' * a21;
84 B22, a21 );
85
86 /*------------------------------------------------------------*/
87
88 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
89 a10t, alpha11, /**/ a12t,
90 /* ************** */ /* ************************ */
91 &ABL, /**/ &ABR, A20, a21, /**/ A22,
92 FLA_TL );
93
94 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
95 b10t, beta11, /**/ b12t,
96 /* ************** */ /* *********************** */
97 &BBL, /**/ &BBR, B20, b21, /**/ B22,
98 FLA_TL );
99
101 psi11,
102 /* ** */ /* ***** */
103 &yB, y21, FLA_TOP );
104 }
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Scal_external.c:13
FLA_Error FLA_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition FLA_Axpy_external.c:13
FLA_Error FLA_Dot2cs_external(FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj beta, FLA_Obj rho)
Definition FLA_Dot2cs_external.c:13
FLA_Error FLA_Hemv_external(FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition FLA_Hemv_external.c:13
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition FLA_Trmv_external.c:13

References FLA_Axpy_external(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Hemv_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trmv_external(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_unb_var2()

FLA_Error FLA_Eig_gest_nl_unb_var2 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj BTL, BTR, B00, b01, B02,
21 B20, b21, B22;
22
23 FLA_Obj yT, y01,
24 yB, psi11,
25 y21;
26
28
29 FLA_Part_2x2( A, &ATL, &ATR,
30 &ABL, &ABR, 0, 0, FLA_TL );
31
32 FLA_Part_2x2( B, &BTL, &BTR,
33 &BBL, &BBR, 0, 0, FLA_TL );
34
35 FLA_Part_2x1( Y, &yT,
36 &yB, 0, FLA_TOP );
37
38 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
39
40 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
41 /* ************* */ /* ************************** */
42 &a10t, /**/ &alpha11, &a12t,
43 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
44 1, 1, FLA_BR );
45
46 FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &b01, &B02,
47 /* ************* */ /* ************************* */
48 &b10t, /**/ &beta11, &b12t,
49 BBL, /**/ BBR, &B20, /**/ &b21, &B22,
50 1, 1, FLA_BR );
51
53 /* ** */ /* ***** */
54 &psi11,
55 yB, &y21, 1, FLA_BOTTOM );
56
57 /*------------------------------------------------------------*/
58
60
61 // a10t = beta11 * a10t;
63
64 // a10t = a10t + b21' * A20;
65 // a10t^T = a10t^T + A20^T * conj(b21);
68
69 // y21 = A22 * b21;
72
73 // a21 = a21 * beta11;
75
76 // a21 = a21 + 1/2 * y21;
78
79 // alpha11 = conj(beta11) * alpha11 * beta11;
80 // = beta11 * alpha11 * beta11;
83
84 // alpha11 = alpha11 + a21' * b21 + b21' * a21;
86
87 // a21 = a21 + 1/2 * y21;
89
90 /*------------------------------------------------------------*/
91
92 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
93 a10t, alpha11, /**/ a12t,
94 /* ************** */ /* ************************ */
95 &ABL, /**/ &ABR, A20, a21, /**/ A22,
96 FLA_TL );
97
98 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
99 b10t, beta11, /**/ b12t,
100 /* ************** */ /* *********************** */
101 &BBL, /**/ &BBR, B20, b21, /**/ B22,
102 FLA_TL );
103
105 psi11,
106 /* ** */ /* ***** */
107 &yB, y21, FLA_TOP );
108 }
109
110 return FLA_SUCCESS;
111}
FLA_Error FLA_Gemvc_external(FLA_Trans transa, FLA_Conj conjx, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition FLA_Gemvc_external.c:13

References FLA_Axpy_external(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Dot2cs_external(), FLA_Gemvc_external(), FLA_Hemv_external(), FLA_Obj_length(), FLA_ONE, FLA_ONE_HALF, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_ZERO, and i.

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_unb_var3()

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

◆ FLA_Eig_gest_nl_unb_var4()

FLA_Error FLA_Eig_gest_nl_unb_var4 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Obj BTL, BTR, B00, b01, B02,
23 B20, b21, B22;
24
25 //FLA_Obj yL, yR, y10t, psi11, y12t;
26
27 //FLA_Obj y10t_t,
28 // y10t_b;
29
31 y21, Y22;
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_1x2( Y, &yL, &yR, 0, FLA_LEFT );
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_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
59 // 1, FLA_RIGHT );
60
61 /*------------------------------------------------------------*/
62
63 //FLA_Part_2x1( y10t, &y10t_t,
64 // &y10t_b, 1, FLA_TOP );
65
66 //// y10t = alpha11 * b10t;
67 //FLA_Copy_external( b10t, y10t_t );
68 //FLA_Scal_external( alpha11, y10t_t );
69 // psi11 = 1/2 * alpha11;
72
73 //// a10t = a10t + 1/2 * y10t;
74 //FLA_Axpy_external( FLA_ONE_HALF, y10t_t, a10t );
75 // a10t = a10t + 1/2 * alpha11 * b10t;
77
78 // A00 = A00 + a10t' * b10t + b10t' * a10t;
80 FLA_ONE, a10t, b10t, A00 );
81
82 //// a10t = a10t + 1/2 * y10t;
83 //FLA_Axpy_external( FLA_ONE_HALF, y10t_t, a10t );
84 // a10t = a10t + 1/2 * alpha11 * b10t;
86
87 // a10t = conj(beta11) * a10t;
88 // = beta11 * a10t;
90
91 // alpha11 = conj(beta11) * alpha11 * beta11;
92 // = beta11 * alpha11 * beta11;
95
96 // A20 = A20 + a21 * b10t;
98
99 // a21 = a21 * beta11;
101
102 /*------------------------------------------------------------*/
103
104 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
105 a10t, alpha11, /**/ a12t,
106 /* ************** */ /* ************************ */
107 &ABL, /**/ &ABR, A20, a21, /**/ A22,
108 FLA_TL );
109
110 FLA_Cont_with_3x3_to_2x2( &BTL, /**/ &BTR, B00, b01, /**/ B02,
111 b10t, beta11, /**/ b12t,
112 /* ************** */ /* *********************** */
113 &BBL, /**/ &BBR, B20, b21, /**/ B22,
114 FLA_TL );
115
116 //FLA_Cont_with_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
117 // FLA_LEFT );
118 }
119
120 return FLA_SUCCESS;
121}
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition FLA_Copy_external.c:13
FLA_Error FLA_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition FLA_Ger_external.c:13
FLA_Error FLA_Her2c_external(FLA_Uplo uplo, FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition FLA_Her2c_external.c:13

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

Referenced by FLA_Eig_gest_nl().

◆ FLA_Eig_gest_nl_unb_var5()

FLA_Error FLA_Eig_gest_nl_unb_var5 ( FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B 
)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Obj BTL, BTR, B00, b01, B02,
23 B20, b21, B22;
24
25 //FLA_Obj yL, yR, y10t, psi11, y12t;
26
27 //FLA_Obj y10t_t,
28 // y10t_b;
29
31 y21, Y22;
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_1x2( Y, &yL, &yR, 0, FLA_LEFT );
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_1x2_to_1x3( yL, /**/ yR, &y10t, /**/ &psi11, &y12t,
59 // 1, FLA_RIGHT );
60
61 /*------------------------------------------------------------*/
62
63 //FLA_Part_2x1( y10t, &y10t_t,
64 // &y10t_b, 1, FLA_TOP );
65
66 //// y10t = alpha11 * b10t;
67 //FLA_Copy_external( b10t, y10t_t );
68 //FLA_Scal_external( alpha11, y10t_t );
69 // psi11 = 1/2 * alpha11;
72
73 // a10t = a10t * tril( B00 );
74 // a10t^T = tril( B00 )^T * a10t^T;
76 B00, a10t );
77
78 //// a10t = a10t + 1/2 * y10t;
79 //FLA_Axpy_external( FLA_ONE_HALF, y10t_t, a10t );
80 // a10t = a10t + 1/2 * alpha11 * b10t;
82
83 // A00 = A00 + a10t' * b10t + b10t' * a10t;
85 FLA_ONE, a10t, b10t, A00 );
86
87 //// a10t = a10t + 1/2 * y10t;
88 //FLA_Axpy_external( FLA_ONE_HALF, y10t_t, a10t );
89 // a10t = a10t + 1/2 * alpha11 * b10t;
91
92 // a10t = conj(beta11) * a10t;
93 // = beta11 * a10t;
95
96 // alpha11 = conj(beta11) * alpha11 * beta11;
97 // = beta11 * alpha11 * beta11;
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_1x3_to_1x2( &yL, /**/ &yR, y10t, psi11, /**/ y12t,
116 // FLA_LEFT );
117 }
118
119 return FLA_SUCCESS;
120}

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

Referenced by FLA_Eig_gest_nl().