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 
)

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

Referenced by FLA_Eig_gest_nl().

14 {
15  FLA_Obj ATL, ATR, A00, A01, A02,
16  ABL, ABR, A10, A11, A12,
17  A20, A21, A22;
18 
19  FLA_Obj BTL, BTR, B00, B01, B02,
20  BBL, BBR, B10, B11, B12,
21  B20, B21, B22;
22 
23  FLA_Obj YT, Y01,
24  YB, Y11,
25  Y21;
26 
27  FLA_Obj Y21_l, Y21_r;
28 
29  dim_t b;
30 
31  FLA_Part_2x2( A, &ATL, &ATR,
32  &ABL, &ABR, 0, 0, FLA_TL );
33 
34  FLA_Part_2x2( B, &BTL, &BTR,
35  &BBL, &BBR, 0, 0, FLA_TL );
36 
37  FLA_Part_2x1( Y, &YT,
38  &YB, 0, FLA_TOP );
39 
40  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
41 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_2x1_to_3x1( YT, &Y01,
57  /* ** */ /* *** */
58  &Y11,
59  YB, &Y21, b, FLA_BOTTOM );
60 
61  /*------------------------------------------------------------*/
62 
63  FLA_Part_1x2( Y21, &Y21_l, &Y21_r, b, FLA_LEFT );
64 
65  // Y21 = A22 * B21;
66  FLA_Hemm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
67  FLA_ONE, A22, B21, FLA_ZERO, Y21_l,
68  FLA_Cntl_sub_hemm( cntl ) );
69 
70  // A21 = A21 * tril( B11 );
71  FLA_Trmm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR,
72  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
73  FLA_ONE, B11, A21,
74  FLA_Cntl_sub_trmm1( cntl ) );
75 
76  // A21 = A21 + 1/2 * Y21;
77  FLA_Axpy_internal( FLA_ONE_HALF, Y21_l, A21,
78  FLA_Cntl_sub_axpy1( cntl ) );
79 
80  // A11 = tril( B11 )' * A11 * tril( B11 );
81  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_LOWER_TRIANGULAR,
82  A11, Y11, B11,
83  FLA_Cntl_sub_eig_gest( cntl ) );
84 
85  // A11 = A11 + A21' * B21 + B21' * A21;
86  FLA_Her2k_internal( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE,
87  FLA_ONE, A21, B21, FLA_ONE, A11,
88  FLA_Cntl_sub_her2k( cntl ) );
89 
90  // A21 = A21 + 1/2 * Y21;
91  FLA_Axpy_internal( FLA_ONE_HALF, Y21_l, A21,
92  FLA_Cntl_sub_axpy2( cntl ) );
93 
94  // A21 = tril( B22 )' * A21;
95  FLA_Trmm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
96  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
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 
114  FLA_Cont_with_3x1_to_2x1( &YT, Y01,
115  Y11,
116  /* ** */ /* *** */
117  &YB, Y21, FLA_TOP );
118  }
119 
120  return FLA_SUCCESS;
121 }
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
unsigned long dim_t
Definition: FLA_type_defs.h:71
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
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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_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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: FLA_type_defs.h:158
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_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
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_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
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_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal.c:16
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

Referenced by FLA_Eig_gest_nl().

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

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

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

Referenced by FLA_Eig_gest_nl().

16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  FLA_Obj BTL, BTR, B00, B01, B02,
22  BBL, BBR, B10, B11, B12,
23  B20, B21, B22;
24 
25  FLA_Obj YL, YR, Y10, Y11, Y12;
26 
27  FLA_Obj Y10_t,
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 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_1x2_to_1x3( YL, /**/ YR, &Y10, /**/ &Y11, &Y12,
57  b, FLA_RIGHT );
58 
59  /*------------------------------------------------------------*/
60 
61  FLA_Part_2x1( Y10, &Y10_t,
62  &Y10_b, b, FLA_TOP );
63 
64  // Y10 = A11 * B10;
65  FLA_Hemm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
66  FLA_ONE, A11, B10, FLA_ZERO, Y10_t,
67  FLA_Cntl_sub_hemm( cntl ) );
68 
69  // A10 = A10 + 1/2 * Y10;
70  FLA_Axpy_internal( FLA_ONE_HALF, Y10_t, A10,
71  FLA_Cntl_sub_axpy1( cntl ) );
72 
73  // A00 = A00 + A10' * B10 + B10' * A10;
74  FLA_Her2k_internal( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE,
75  FLA_ONE, A10, B10, FLA_ONE, A00,
76  FLA_Cntl_sub_her2k( cntl ) );
77 
78  // A10 = A10 + 1/2 * Y10;
79  FLA_Axpy_internal( FLA_ONE_HALF, Y10_t, A10,
80  FLA_Cntl_sub_axpy2( cntl ) );
81 
82  // A10 = tril( B11 )' * A10;
83  FLA_Trmm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
84  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
85  FLA_ONE, B11, A10,
86  FLA_Cntl_sub_trmm1( cntl ) );
87 
88  // A11 = tril( B11 )' * A11 * tril( B11 );
89  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_LOWER_TRIANGULAR,
90  A11, Y11, B11,
91  FLA_Cntl_sub_eig_gest( cntl ) );
92 
93  // A20 = A20 + A21 * B10;
94  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE,
95  FLA_ONE, A21, B10, FLA_ONE, A20,
96  FLA_Cntl_sub_gemm1( cntl ) );
97 
98  // A21 = A21 * tril( B11 );
99  FLA_Trmm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR,
100  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
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_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
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
unsigned long dim_t
Definition: FLA_type_defs.h:71
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
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: FLA_type_defs.h:158
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_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_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
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_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
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_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal.c:16
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

Referenced by FLA_Eig_gest_nl().

16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  FLA_Obj BTL, BTR, B00, B01, B02,
22  BBL, BBR, B10, B11, B12,
23  B20, B21, B22;
24 
25  FLA_Obj YL, YR, Y10, Y11, Y12;
26 
27  FLA_Obj Y10_t,
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 
42  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
43 
44  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
45  /* ************* */ /* ******************** */
46  &A10, /**/ &A11, &A12,
47  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
48  b, b, FLA_BR );
49 
50  FLA_Repart_2x2_to_3x3( BTL, /**/ BTR, &B00, /**/ &B01, &B02,
51  /* ************* */ /* ******************** */
52  &B10, /**/ &B11, &B12,
53  BBL, /**/ BBR, &B20, /**/ &B21, &B22,
54  b, b, FLA_BR );
55 
56  FLA_Repart_1x2_to_1x3( YL, /**/ YR, &Y10, /**/ &Y11, &Y12,
57  b, FLA_RIGHT );
58 
59  /*------------------------------------------------------------*/
60 
61  FLA_Part_2x1( Y10, &Y10_t,
62  &Y10_b, b, FLA_TOP );
63 
64  // Y10 = A11 * B10;
65  FLA_Hemm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
66  FLA_ONE, A11, B10, FLA_ZERO, Y10_t,
67  FLA_Cntl_sub_hemm( cntl ) );
68 
69  // A10 = A10 * tril( B00 );
70  FLA_Trmm_internal( FLA_RIGHT, FLA_LOWER_TRIANGULAR,
71  FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
72  FLA_ONE, B00, A10,
73  FLA_Cntl_sub_trmm1( cntl ) );
74 
75  // A10 = A10 + 1/2 * Y10;
76  FLA_Axpy_internal( FLA_ONE_HALF, Y10_t, A10,
77  FLA_Cntl_sub_axpy1( cntl ) );
78 
79  // A00 = A00 + A10' * B10 + B10' * A10;
80  FLA_Her2k_internal( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE,
81  FLA_ONE, A10, B10, FLA_ONE, A00,
82  FLA_Cntl_sub_her2k( cntl ) );
83 
84  // A10 = A10 + 1/2 * Y10;
85  FLA_Axpy_internal( FLA_ONE_HALF, Y10_t, A10,
86  FLA_Cntl_sub_axpy2( cntl ) );
87 
88  // A10 = tril( B11 )' * A10;
89  FLA_Trmm_internal( FLA_LEFT, FLA_LOWER_TRIANGULAR,
90  FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
91  FLA_ONE, B11, A10,
92  FLA_Cntl_sub_trmm2( cntl ) );
93 
94  // A11 = tril( B11 )' * A11 * tril( B11 );
95  FLA_Eig_gest_internal( FLA_NO_INVERSE, FLA_LOWER_TRIANGULAR,
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 }
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
unsigned long dim_t
Definition: FLA_type_defs.h:71
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
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: FLA_type_defs.h:158
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_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_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
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_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
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_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal.c:16
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

282 {
283  scomplex* buff_0 = FLA_COMPLEX_PTR( FLA_ZERO );
284  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
285  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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 );
330  bl1_cscals( beta11, alpha11 );
331  bl1_cscals( 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_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:132
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
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

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

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

304 {
305  scomplex* buff_0 = FLA_COMPLEX_PTR( FLA_ZERO );
306  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
307  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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 );
372  bl1_cscals( beta11, alpha11 );
373  bl1_cscals( 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_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:55
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
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:132
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
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

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

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

287 {
288  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
289  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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 
303  scomplex psi11;
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 );
312  bl1_cmult3( buff_1h, alpha11, &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 );
346  bl1_cscals( beta11, alpha11 );
347  bl1_cscals( 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_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: blis_type_defs.h:132
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

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

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

269 {
270  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
271  scomplex* buff_1h = FLA_COMPLEX_PTR( FLA_ONE_HALF );
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 
284  scomplex psi11;
285 
286  int m_behind = i;
287 
288  /*------------------------------------------------------------*/
289 
290  // FLA_Copy_external( alpha11, psi11 );
291  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
292  bl1_cmult3( buff_1h, alpha11, &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 );
335  bl1_cscals( beta11, alpha11 );
336  bl1_cscals( beta11, alpha11 );
337 
338  /*------------------------------------------------------------*/
339 
340  }
341 
342  return FLA_SUCCESS;
343 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
void bl1_caxpyv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_axpyv.c:29
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: blis_type_defs.h:132
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
Definition: blis_type_defs.h:62

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

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

193 {
194  double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
195  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
196  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
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 );
241  bl1_dscals( beta11, alpha11 );
242  bl1_dscals( 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_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
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
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
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:62
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

204 {
205  double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
206  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
207  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
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 );
272  bl1_dscals( beta11, alpha11 );
273  bl1_dscals( 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_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_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
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

196 {
197  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
198  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
199  int i;
200 
201  for ( i = 0; i < m_AB; ++i )
202  {
203  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
204  double* 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 );
221  bl1_dmult3( buff_1h, alpha11, &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 );
255  bl1_dscals( beta11, alpha11 );
256  bl1_dscals( 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 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21

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

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

187 {
188  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
189  double* buff_1h = FLA_DOUBLE_PTR( FLA_ONE_HALF );
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 );
210  bl1_dmult3( buff_1h, alpha11, &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 );
253  bl1_dscals( beta11, alpha11 );
254  bl1_dscals( beta11, alpha11 );
255 
256  /*------------------------------------------------------------*/
257 
258  }
259 
260  return FLA_SUCCESS;
261 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:62
void bl1_daxpyv(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy)
Definition: bl1_axpyv.c:21

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

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

104 {
105  float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
106  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
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 );
152  bl1_sscals( beta11, alpha11 );
153  bl1_sscals( 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 }
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_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
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

104 {
105  float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
106  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
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 );
172  bl1_sscals( beta11, alpha11 );
173  bl1_sscals( 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 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
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_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

105 {
106  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
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 );
130  bl1_smult3( buff_1h, alpha11, &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 );
164  bl1_sscals( beta11, alpha11 );
165  bl1_sscals( 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 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_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
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

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

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

105 {
106  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
107  float* buff_1h = FLA_FLOAT_PTR( FLA_ONE_HALF );
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 );
128  bl1_smult3( buff_1h, alpha11, &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 );
171  bl1_sscals( beta11, alpha11 );
172  bl1_sscals( beta11, alpha11 );
173 
174  /*------------------------------------------------------------*/
175 
176  }
177 
178  return FLA_SUCCESS;
179 }
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_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
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
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:62

◆ FLA_Eig_gest_nl_opt_var1()

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

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(), and FLA_Part_1x2().

Referenced by FLA_Eig_gest_nl().

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 
24  m_AB = FLA_Obj_length( A );
25 
26  rs_A = FLA_Obj_row_stride( A );
27  cs_A = FLA_Obj_col_stride( A );
28 
29  rs_B = FLA_Obj_row_stride( B );
30  cs_B = FLA_Obj_col_stride( B );
31 
32  FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33 
34  inc_y = FLA_Obj_vector_inc( yL );
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 
45  buff_A, rs_A, cs_A,
46  buff_y, inc_y,
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 
59  buff_A, rs_A, cs_A,
60  buff_y, inc_y,
61  buff_B, rs_B, cs_B );
62 
63  break;
64  }
65 
66  case FLA_COMPLEX:
67  {
68  scomplex* buff_A = FLA_COMPLEX_PTR( A );
69  scomplex* buff_y = FLA_COMPLEX_PTR( yL );
70  scomplex* buff_B = FLA_COMPLEX_PTR( B );
71 
73  buff_A, rs_A, cs_A,
74  buff_y, inc_y,
75  buff_B, rs_B, cs_B );
76 
77  break;
78  }
79 
80  case FLA_DOUBLE_COMPLEX:
81  {
82  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
83  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yL );
84  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
85 
87  buff_A, rs_A, cs_A,
88  buff_y, inc_y,
89  buff_B, rs_B, cs_B );
90 
91  break;
92  }
93  }
94 
95  return FLA_SUCCESS;
96 }
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
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
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: FLA_type_defs.h:158
Definition: blis_type_defs.h:132
int FLA_Datatype
Definition: FLA_type_defs.h:49
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
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_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
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Eig_gest_nl_opt_var2()

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

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(), and FLA_Part_1x2().

Referenced by FLA_Eig_gest_nl().

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 
24  m_AB = FLA_Obj_length( A );
25 
26  rs_A = FLA_Obj_row_stride( A );
27  cs_A = FLA_Obj_col_stride( A );
28 
29  rs_B = FLA_Obj_row_stride( B );
30  cs_B = FLA_Obj_col_stride( B );
31 
32  FLA_Part_1x2( Y, &yL, &yR, 1, FLA_LEFT );
33 
34  inc_y = FLA_Obj_vector_inc( yL );
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 
45  buff_A, rs_A, cs_A,
46  buff_y, inc_y,
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 
59  buff_A, rs_A, cs_A,
60  buff_y, inc_y,
61  buff_B, rs_B, cs_B );
62 
63  break;
64  }
65 
66  case FLA_COMPLEX:
67  {
68  scomplex* buff_A = FLA_COMPLEX_PTR( A );
69  scomplex* buff_y = FLA_COMPLEX_PTR( yL );
70  scomplex* buff_B = FLA_COMPLEX_PTR( B );
71 
73  buff_A, rs_A, cs_A,
74  buff_y, inc_y,
75  buff_B, rs_B, cs_B );
76 
77  break;
78  }
79 
80  case FLA_DOUBLE_COMPLEX:
81  {
82  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
83  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yL );
84  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
85 
87  buff_A, rs_A, cs_A,
88  buff_y, inc_y,
89  buff_B, rs_B, cs_B );
90 
91  break;
92  }
93  }
94 
95  return FLA_SUCCESS;
96 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: FLA_type_defs.h:158
Definition: blis_type_defs.h:132
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_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
int FLA_Datatype
Definition: FLA_type_defs.h:49
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
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
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137
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_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 
)

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(), and FLA_Part_2x1().

Referenced by FLA_Eig_gest_nl().

14 {
15  FLA_Datatype datatype;
16  int m_AB;
17  int rs_A, cs_A;
18  int rs_B, cs_B;
19  int inc_y;
20  FLA_Obj yT, yB;
21 
22  datatype = FLA_Obj_datatype( A );
23 
24  m_AB = FLA_Obj_length( A );
25 
26  rs_A = FLA_Obj_row_stride( A );
27  cs_A = FLA_Obj_col_stride( A );
28 
29  rs_B = FLA_Obj_row_stride( B );
30  cs_B = FLA_Obj_col_stride( B );
31 
32  FLA_Part_2x1( Y, &yT,
33  &yB, 1, FLA_TOP );
34 
35  inc_y = FLA_Obj_vector_inc( yT );
36 
37  switch ( datatype )
38  {
39  case FLA_FLOAT:
40  {
41  float* buff_A = FLA_FLOAT_PTR( A );
42  float* buff_y = FLA_FLOAT_PTR( yT );
43  float* buff_B = FLA_FLOAT_PTR( B );
44 
46  buff_A, rs_A, cs_A,
47  buff_y, inc_y,
48  buff_B, rs_B, cs_B );
49 
50  break;
51  }
52 
53  case FLA_DOUBLE:
54  {
55  double* buff_A = FLA_DOUBLE_PTR( A );
56  double* buff_y = FLA_DOUBLE_PTR( yT );
57  double* buff_B = FLA_DOUBLE_PTR( B );
58 
60  buff_A, rs_A, cs_A,
61  buff_y, inc_y,
62  buff_B, rs_B, cs_B );
63 
64  break;
65  }
66 
67  case FLA_COMPLEX:
68  {
69  scomplex* buff_A = FLA_COMPLEX_PTR( A );
70  scomplex* buff_y = FLA_COMPLEX_PTR( yT );
71  scomplex* buff_B = FLA_COMPLEX_PTR( B );
72 
74  buff_A, rs_A, cs_A,
75  buff_y, inc_y,
76  buff_B, rs_B, cs_B );
77 
78  break;
79  }
80 
81  case FLA_DOUBLE_COMPLEX:
82  {
83  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
84  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yT );
85  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
86 
88  buff_A, rs_A, cs_A,
89  buff_y, inc_y,
90  buff_B, rs_B, cs_B );
91 
92  break;
93  }
94  }
95 
96  return FLA_SUCCESS;
97 }
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
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
Definition: FLA_type_defs.h:158
Definition: blis_type_defs.h:132
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_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
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
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition: FLA_Query.c:145
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137
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

◆ FLA_Eig_gest_nl_opt_var5()

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

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(), and FLA_Part_2x1().

Referenced by FLA_Eig_gest_nl().

14 {
15  FLA_Datatype datatype;
16  int m_AB;
17  int rs_A, cs_A;
18  int rs_B, cs_B;
19  int inc_y;
20  FLA_Obj yT, yB;
21 
22  datatype = FLA_Obj_datatype( A );
23 
24  m_AB = FLA_Obj_length( A );
25 
26  rs_A = FLA_Obj_row_stride( A );
27  cs_A = FLA_Obj_col_stride( A );
28 
29  rs_B = FLA_Obj_row_stride( B );
30  cs_B = FLA_Obj_col_stride( B );
31 
32  FLA_Part_2x1( Y, &yT,
33  &yB, 1, FLA_TOP );
34 
35  inc_y = FLA_Obj_vector_inc( yT );
36 
37  switch ( datatype )
38  {
39  case FLA_FLOAT:
40  {
41  float* buff_A = FLA_FLOAT_PTR( A );
42  float* buff_y = FLA_FLOAT_PTR( yT );
43  float* buff_B = FLA_FLOAT_PTR( B );
44 
46  buff_A, rs_A, cs_A,
47  buff_y, inc_y,
48  buff_B, rs_B, cs_B );
49 
50  break;
51  }
52 
53  case FLA_DOUBLE:
54  {
55  double* buff_A = FLA_DOUBLE_PTR( A );
56  double* buff_y = FLA_DOUBLE_PTR( yT );
57  double* buff_B = FLA_DOUBLE_PTR( B );
58 
60  buff_A, rs_A, cs_A,
61  buff_y, inc_y,
62  buff_B, rs_B, cs_B );
63 
64  break;
65  }
66 
67  case FLA_COMPLEX:
68  {
69  scomplex* buff_A = FLA_COMPLEX_PTR( A );
70  scomplex* buff_y = FLA_COMPLEX_PTR( yT );
71  scomplex* buff_B = FLA_COMPLEX_PTR( B );
72 
74  buff_A, rs_A, cs_A,
75  buff_y, inc_y,
76  buff_B, rs_B, cs_B );
77 
78  break;
79  }
80 
81  case FLA_DOUBLE_COMPLEX:
82  {
83  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
84  dcomplex* buff_y = FLA_DOUBLE_COMPLEX_PTR( yT );
85  dcomplex* buff_B = FLA_DOUBLE_COMPLEX_PTR( B );
86 
88  buff_A, rs_A, cs_A,
89  buff_y, inc_y,
90  buff_B, rs_B, cs_B );
91 
92  break;
93  }
94  }
95 
96  return FLA_SUCCESS;
97 }
FLA_Error FLA_Eig_gest_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
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: FLA_type_defs.h:158
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
Definition: blis_type_defs.h:132
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
int FLA_Datatype
Definition: FLA_type_defs.h:49
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
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
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
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
Definition: blis_type_defs.h:137

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

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

371 {
372  dcomplex* buff_0 = FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO );
373  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
374  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
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 );
419  bl1_zscals( beta11, alpha11 );
420  bl1_zscals( 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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
Definition: blis_type_defs.h:137
bl1_zscals(beta, rho_yz)
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60

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

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

404 {
405  dcomplex* buff_0 = FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO );
406  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
407  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
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 );
472  bl1_zscals( beta11, alpha11 );
473  bl1_zscals( 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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
int i
Definition: bl1_axmyv2.c:145
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
Definition: blis_type_defs.h:62
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
Definition: blis_type_defs.h:137
bl1_zscals(beta, rho_yz)
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60

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

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

378 {
379  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
380  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
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 
394  dcomplex psi11;
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 );
403  bl1_zmult3( buff_1h, alpha11, &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 );
437  bl1_zscals( beta11, alpha11 );
438  bl1_zscals( 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_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
int i
Definition: bl1_axmyv2.c:145
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
Definition: blis_type_defs.h:62
Definition: blis_type_defs.h:137
bl1_zscals(beta, rho_yz)
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60

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

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

351 {
352  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
353  dcomplex* buff_1h = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE_HALF );
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 
366  dcomplex psi11;
367 
368  int m_behind = i;
369 
370  /*------------------------------------------------------------*/
371 
372  // FLA_Copy_external( alpha11, psi11 );
373  // FLA_Scal_external( FLA_ONE_HALF, psi11 );
374  bl1_zmult3( buff_1h, alpha11, &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 );
417  bl1_zscals( beta11, alpha11 );
418  bl1_zscals( beta11, alpha11 );
419 
420  /*------------------------------------------------------------*/
421 
422  }
423 
424  return FLA_SUCCESS;
425 }
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
Definition: blis_type_defs.h:62
Definition: blis_type_defs.h:137
bl1_zscals(beta, rho_yz)
void bl1_zaxpyv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_axpyv.c:60

◆ FLA_Eig_gest_nl_unb_var1()

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

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

Referenced by FLA_Eig_gest_nl().

14 {
15  FLA_Obj ATL, ATR, A00, a01, A02,
16  ABL, ABR, a10t, alpha11, a12t,
17  A20, a21, A22;
18 
19  FLA_Obj BTL, BTR, B00, b01, B02,
20  BBL, BBR, b10t, beta11, b12t,
21  B20, b21, B22;
22 
23  FLA_Obj yT, y01,
24  yB, psi11,
25  y21;
26 
27  FLA_Obj y21_l, y21_r;
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 
52  FLA_Repart_2x1_to_3x1( yT, &y01,
53  /* ** */ /* ***** */
54  &psi11,
55  yB, &y21, 1, FLA_BOTTOM );
56 
57  /*------------------------------------------------------------*/
58 
59  FLA_Part_1x2( y21, &y21_l, &y21_r, 1, FLA_LEFT );
60 
61  // y21 = A22 * b21;
62  FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
63  FLA_ONE, A22, b21, FLA_ZERO, y21_l );
64 
65  // a21 = a21 * beta11;
66  FLA_Scal_external( beta11, a21 );
67 
68  // a21 = a21 + 1/2 * y21;
69  FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
70 
71  // alpha11 = conj(beta11) * alpha11 * beta11;
72  // = beta11 * alpha11 * beta11;
73  FLA_Scal_external( beta11, alpha11 );
74  FLA_Scal_external( beta11, alpha11 );
75 
76  // alpha11 = alpha11 + a21' * b21 + b21' * a21;
77  FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
78 
79  // a21 = a21 + 1/2 * y21;
80  FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
81 
82  // a21 = tril( B22 )' * a21;
83  FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
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 
100  FLA_Cont_with_3x1_to_2x1( &yT, y01,
101  psi11,
102  /* ** */ /* ***** */
103  &yB, y21, FLA_TOP );
104  }
105 
106  return FLA_SUCCESS;
107 }
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_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
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_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_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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: FLA_type_defs.h:158
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
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
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_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

◆ FLA_Eig_gest_nl_unb_var2()

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

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

Referenced by FLA_Eig_gest_nl().

14 {
15  FLA_Obj ATL, ATR, A00, a01, A02,
16  ABL, ABR, a10t, alpha11, a12t,
17  A20, a21, A22;
18 
19  FLA_Obj BTL, BTR, B00, b01, B02,
20  BBL, BBR, b10t, beta11, b12t,
21  B20, b21, B22;
22 
23  FLA_Obj yT, y01,
24  yB, psi11,
25  y21;
26 
27  FLA_Obj y21_l, y21_r;
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 
52  FLA_Repart_2x1_to_3x1( yT, &y01,
53  /* ** */ /* ***** */
54  &psi11,
55  yB, &y21, 1, FLA_BOTTOM );
56 
57  /*------------------------------------------------------------*/
58 
59  FLA_Part_1x2( y21, &y21_l, &y21_r, 1, FLA_LEFT );
60 
61  // a10t = beta11 * a10t;
62  FLA_Scal_external( beta11, a10t );
63 
64  // a10t = a10t + b21' * A20;
65  // a10t^T = a10t^T + A20^T * conj(b21);
66  FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE,
67  FLA_ONE, A20, b21, FLA_ONE, a10t );
68 
69  // y21 = A22 * b21;
70  FLA_Hemv_external( FLA_LOWER_TRIANGULAR,
71  FLA_ONE, A22, b21, FLA_ZERO, y21_l );
72 
73  // a21 = a21 * beta11;
74  FLA_Scal_external( beta11, a21 );
75 
76  // a21 = a21 + 1/2 * y21;
77  FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
78 
79  // alpha11 = conj(beta11) * alpha11 * beta11;
80  // = beta11 * alpha11 * beta11;
81  FLA_Scal_external( beta11, alpha11 );
82  FLA_Scal_external( beta11, alpha11 );
83 
84  // alpha11 = alpha11 + a21' * b21 + b21' * a21;
85  FLA_Dot2cs_external( FLA_CONJUGATE, FLA_ONE, a21, b21, FLA_ONE, alpha11 );
86 
87  // a21 = a21 + 1/2 * y21;
88  FLA_Axpy_external( FLA_ONE_HALF, y21_l, a21 );
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 
104  FLA_Cont_with_3x1_to_2x1( &yT, y01,
105  psi11,
106  /* ** */ /* ***** */
107  &yB, y21, FLA_TOP );
108  }
109 
110  return FLA_SUCCESS;
111 }
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_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
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_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_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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: FLA_type_defs.h:158
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_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
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
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_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20

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

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

Referenced by FLA_Eig_gest_nl().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Obj BTL, BTR, B00, b01, B02,
22  BBL, BBR, b10t, beta11, b12t,
23  B20, b21, B22;
24 
25  //FLA_Obj yL, yR, y10t, psi11, y12t;
26 
27  //FLA_Obj y10t_t,
28  // y10t_b;
29 
30  FLA_Obj psi11, y12t,
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 
41  FLA_Part_2x2( Y, &psi11, &y12t,
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;
70  FLA_Copy_external( alpha11, psi11 );
72 
73  //// a10t = a10t + 1/2 * y10t;
74  //FLA_Axpy_external( FLA_ONE_HALF, y10t_t, a10t );
75  // a10t = a10t + 1/2 * alpha11 * b10t;
76  FLA_Axpy_external( psi11, b10t, a10t );
77 
78  // A00 = A00 + a10t' * b10t + b10t' * a10t;
79  FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
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;
85  FLA_Axpy_external( psi11, b10t, a10t );
86 
87  // a10t = conj(beta11) * a10t;
88  // = beta11 * a10t;
89  FLA_Scal_external( beta11, a10t );
90 
91  // alpha11 = conj(beta11) * alpha11 * beta11;
92  // = beta11 * alpha11 * beta11;
93  FLA_Scal_external( beta11, alpha11 );
94  FLA_Scal_external( beta11, alpha11 );
95 
96  // A20 = A20 + a21 * b10t;
97  FLA_Ger_external( FLA_ONE, a21, b10t, A20 );
98 
99  // a21 = a21 * beta11;
100  FLA_Scal_external( beta11, a21 );
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_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition: FLA_Copy_external.c:13
Definition: FLA_type_defs.h:158
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_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition: FLA_Ger_external.c:13
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
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

◆ FLA_Eig_gest_nl_unb_var5()

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

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

Referenced by FLA_Eig_gest_nl().

16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Obj BTL, BTR, B00, b01, B02,
22  BBL, BBR, b10t, beta11, b12t,
23  B20, b21, B22;
24 
25  //FLA_Obj yL, yR, y10t, psi11, y12t;
26 
27  //FLA_Obj y10t_t,
28  // y10t_b;
29 
30  FLA_Obj psi11, y12t,
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 
41  FLA_Part_2x2( Y, &psi11, &y12t,
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;
70  FLA_Copy_external( alpha11, psi11 );
72 
73  // a10t = a10t * tril( B00 );
74  // a10t^T = tril( B00 )^T * a10t^T;
75  FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG,
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;
81  FLA_Axpy_external( psi11, b10t, a10t );
82 
83  // A00 = A00 + a10t' * b10t + b10t' * a10t;
84  FLA_Her2c_external( FLA_LOWER_TRIANGULAR, FLA_CONJUGATE,
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;
90  FLA_Axpy_external( psi11, b10t, a10t );
91 
92  // a10t = conj(beta11) * a10t;
93  // = beta11 * a10t;
94  FLA_Scal_external( beta11, a10t );
95 
96  // alpha11 = conj(beta11) * alpha11 * beta11;
97  // = beta11 * alpha11 * beta11;
98  FLA_Scal_external( beta11, alpha11 );
99  FLA_Scal_external( beta11, alpha11 );
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 }
FLA_Error FLA_Axpy_external(FLA_Obj alpha, FLA_Obj A, FLA_Obj B)
Definition: FLA_Axpy_external.c:13
FLA_Obj FLA_ONE_HALF
Definition: FLA_Init.c:19
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
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_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_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition: FLA_Copy_external.c:13
Definition: FLA_type_defs.h:158
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trmv_external.c:13
FLA_Error FLA_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
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
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