libflame revision_anchor
Functions
FLA_Lyap_h.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Lyap_h_unb_var1 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_unb_var2 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_unb_var3 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_unb_var4 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_blk_var1 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_h_blk_var2 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_h_blk_var3 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_h_blk_var4 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
 
FLA_Error FLA_Lyap_h_opt_var1 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_ops_var1 (int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opd_var1 (int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opc_var1 (int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opz_var1 (int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opt_var2 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_ops_var2 (int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opd_var2 (int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opc_var2 (int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opz_var2 (int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opt_var3 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_ops_var3 (int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opd_var3 (int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opc_var3 (int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opz_var3 (int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opt_var4 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_ops_var4 (int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opd_var4 (int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opc_var4 (int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_h_opz_var4 (int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
 

Function Documentation

◆ FLA_Lyap_h_blk_var1()

FLA_Error FLA_Lyap_h_blk_var1 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
14{
15 FLA_Obj ATL, ATR, A00, A01, A02,
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18 FLA_Obj CTL, CTR, C00, C01, C02,
19 CBL, CBR, C10, C11, C12,
20 C20, C21, C22;
21 dim_t b;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 FLA_Part_2x2( C, &CTL, &CTR,
27 &CBL, &CBR, 0, 0, FLA_TL );
28
29 while ( FLA_Obj_length( CBR ) > 0 ){
30
32
33 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
34 /* ************* */ /* ******************** */
35 &A10, /**/ &A11, &A12,
36 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
37 b, b, FLA_BR );
38
39 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &C01, &C02,
40 /* ************* */ /* ******************** */
41 &C10, /**/ &C11, &C12,
42 CBL, /**/ CBR, &C20, /**/ &C21, &C22,
43 b, b, FLA_BR );
44
45 /*------------------------------------------------------------*/
46
47 // C01 = isgn * C01 - C00 * A01;
48 // C01 = sylv( A00', A11, C01 );
51 FLA_Cntl_sub_hemm( cntl ) );
53 A00, A11, C01, scale,
54 FLA_Cntl_sub_sylv( cntl ) );
55
56 // C11 = isgn * C11 - A01' * C01 - C01' * A01;
57 // C11 = lyap_h( A11, C11 );
60 FLA_Cntl_sub_her2k( cntl ) );
62 FLA_Cntl_sub_lyap( cntl ) );
63
64 /*------------------------------------------------------------*/
65
66 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
67 A10, A11, /**/ A12,
68 /* ************** */ /* ****************** */
69 &ABL, /**/ &ABR, A20, A21, /**/ A22,
70 FLA_TL );
71
72 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, C01, /**/ C02,
73 C10, C11, /**/ C12,
74 /* ************** */ /* ****************** */
75 &CBL, /**/ &CBR, C20, C21, /**/ C22,
76 FLA_TL );
77 }
78
79 return FLA_SUCCESS;
80}
FLA_Error FLA_Hemm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_hemm_t *cntl)
Definition FLA_Hemm_internal.c:16
FLA_Error FLA_Her2k_internal(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_her2k_t *cntl)
Definition FLA_Her2k_internal.c:16
FLA_Error FLA_Lyap_internal(FLA_Trans trans, FLA_Obj isgn, FLA_Obj A, FLA_Obj C, FLA_Obj scale, fla_lyap_t *cntl)
Definition FLA_Lyap_internal.c:16
FLA_Error FLA_Sylv_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition FLA_Sylv_internal.c:16
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition FLA_View.c:304
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:17
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition FLA_View.c:142
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition FLA_Blocksize.c:234
unsigned long dim_t
Definition FLA_type_defs.h:71
int i
Definition bl1_axmyv2.c:145
Definition FLA_type_defs.h:159

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Lyap_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sylv_internal(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_blk_var2()

FLA_Error FLA_Lyap_h_blk_var2 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
14{
15 FLA_Obj ATL, ATR, A00, A01, A02,
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18 FLA_Obj CTL, CTR, C00, C01, C02,
19 CBL, CBR, C10, C11, C12,
20 C20, C21, C22;
21 dim_t b;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 FLA_Part_2x2( C, &CTL, &CTR,
27 &CBL, &CBR, 0, 0, FLA_TL );
28
29 while ( FLA_Obj_length( CBR ) > 0 ){
30
32
33 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
34 /* ************* */ /* ******************** */
35 &A10, /**/ &A11, &A12,
36 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
37 b, b, FLA_BR );
38
39 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &C01, &C02,
40 /* ************* */ /* ******************** */
41 &C10, /**/ &C11, &C12,
42 CBL, /**/ CBR, &C20, /**/ &C21, &C22,
43 b, b, FLA_BR );
44
45 /*------------------------------------------------------------*/
46
47 // C01 = sylv( A00', A11, C01 );
50 FLA_Cntl_sub_sylv( cntl ) );
51
52 // C11 = isgn * C11 - A01' * C01 - C01' * A01;
53 // C11 = lyap_h( A11, C11 );
56 FLA_Cntl_sub_her2k( cntl ) );
58 FLA_Cntl_sub_lyap( cntl ) );
59
60 // C02 = C02 - C01 * A12;
63 FLA_Cntl_sub_gemm1( cntl ) );
64
65 // C12 = isgn * C12 - C11 * A12;
66 // C12 = C12 - C01' * A02;
69 FLA_Cntl_sub_hemm( cntl ) );
72 FLA_Cntl_sub_gemm2( cntl ) );
73
74 /*------------------------------------------------------------*/
75
76 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
77 A10, A11, /**/ A12,
78 /* ************** */ /* ****************** */
79 &ABL, /**/ &ABR, A20, A21, /**/ A22,
80 FLA_TL );
81
82 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, C01, /**/ C02,
83 C10, C11, /**/ C12,
84 /* ************** */ /* ****************** */
85 &CBL, /**/ &CBR, C20, C21, /**/ C22,
86 FLA_TL );
87 }
88
89 return FLA_SUCCESS;
90}
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition FLA_Gemm_internal.c:16

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Lyap_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sylv_internal(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_blk_var3()

FLA_Error FLA_Lyap_h_blk_var3 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
14{
15 FLA_Obj ATL, ATR, A00, A01, A02,
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18 FLA_Obj CTL, CTR, C00, C01, C02,
19 CBL, CBR, C10, C11, C12,
20 C20, C21, C22;
21 dim_t b;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 FLA_Part_2x2( C, &CTL, &CTR,
27 &CBL, &CBR, 0, 0, FLA_TL );
28
29 while ( FLA_Obj_length( CBR ) > 0 ){
30
32
33 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
34 /* ************* */ /* ******************** */
35 &A10, /**/ &A11, &A12,
36 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
37 b, b, FLA_BR );
38
39 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &C01, &C02,
40 /* ************* */ /* ******************** */
41 &C10, /**/ &C11, &C12,
42 CBL, /**/ CBR, &C20, /**/ &C21, &C22,
43 b, b, FLA_BR );
44
45 /*------------------------------------------------------------*/
46
47 // C11 = isgn * C11 - A01' * C01 - C01' * A01;
48 // C11 = lyap_h( A11, C11 );
51 FLA_Cntl_sub_her2k( cntl ) );
53 FLA_Cntl_sub_lyap( cntl ) );
54
55 // C12 = isgn * C12 - A01' * C02 - C01' * A02;
58 FLA_Cntl_sub_gemm1( cntl ) );
61 FLA_Cntl_sub_gemm2( cntl ) );
62
63 // C12 = C12 - C11 * A12;
64 // C12 = sylv( A11', A22, C12 );
67 FLA_Cntl_sub_hemm( cntl ) );
70 FLA_Cntl_sub_sylv( cntl ) );
71
72 /*------------------------------------------------------------*/
73
74 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
75 A10, A11, /**/ A12,
76 /* ************** */ /* ****************** */
77 &ABL, /**/ &ABR, A20, A21, /**/ A22,
78 FLA_TL );
79
80 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, C01, /**/ C02,
81 C10, C11, /**/ C12,
82 /* ************** */ /* ****************** */
83 &CBL, /**/ &CBR, C20, C21, /**/ C22,
84 FLA_TL );
85 }
86
87 return FLA_SUCCESS;
88}

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Lyap_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sylv_internal(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_blk_var4()

FLA_Error FLA_Lyap_h_blk_var4 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C,
FLA_Obj  scale,
fla_lyap_t cntl 
)
14{
15 FLA_Obj ATL, ATR, A00, A01, A02,
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18 FLA_Obj CTL, CTR, C00, C01, C02,
19 CBL, CBR, C10, C11, C12,
20 C20, C21, C22;
21 dim_t b;
22
23 // C = isgn * C;
25 FLA_Cntl_sub_scal( cntl ) );
26
27 FLA_Part_2x2( A, &ATL, &ATR,
28 &ABL, &ABR, 0, 0, FLA_TL );
29
30 FLA_Part_2x2( C, &CTL, &CTR,
31 &CBL, &CBR, 0, 0, FLA_TL );
32
33 while ( FLA_Obj_length( CBR ) > 0 ){
34
36
37 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
38 /* ************* */ /* ******************** */
39 &A10, /**/ &A11, &A12,
40 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
41 b, b, FLA_BR );
42
43 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &C01, &C02,
44 /* ************* */ /* ******************** */
45 &C10, /**/ &C11, &C12,
46 CBL, /**/ CBR, &C20, /**/ &C21, &C22,
47 b, b, FLA_BR );
48
49 /*------------------------------------------------------------*/
50
51 // C11 = lyap_h( A11, C11 );
53 FLA_Cntl_sub_lyap( cntl ) );
54
55 // C12 = C12 - C11 * A12;
56 // C12 = sylv( A11', A22, C12 );
59 FLA_Cntl_sub_hemm( cntl ) );
62 FLA_Cntl_sub_sylv( cntl ) );
63
64 // C22 = C22 - A12' * C12 - C12' * A12;
67 FLA_Cntl_sub_her2k( cntl ) );
68
69 /*------------------------------------------------------------*/
70
71 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
72 A10, A11, /**/ A12,
73 /* ************** */ /* ****************** */
74 &ABL, /**/ &ABR, A20, A21, /**/ A22,
75 FLA_TL );
76
77 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, C01, /**/ C02,
78 C10, C11, /**/ C12,
79 /* ************** */ /* ****************** */
80 &CBL, /**/ &CBR, C20, C21, /**/ C22,
81 FLA_TL );
82 }
83
84 return FLA_SUCCESS;
85}
FLA_Error FLA_Scal_internal(FLA_Obj alpha, FLA_Obj A, fla_scal_t *cntl)
Definition FLA_Scal_internal.c:16

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Hemm_internal(), FLA_Her2k_internal(), FLA_Lyap_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_internal(), FLA_Sylv_internal(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_opc_var1()

FLA_Error FLA_Lyap_h_opc_var1 ( int  m_AC,
scomplex buff_sgn,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_W,
int  rs_W,
int  cs_W,
scomplex buff_C,
int  rs_C,
int  cs_C 
)
302{
305 int i;
306
308 m_AC,
309 m_AC,
310 buff_sgn,
311 buff_C, rs_C, cs_C );
312
313 for ( i = 0; i < m_AC; ++i )
314 {
315 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
316 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
317 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
318
319 scomplex* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
320 scomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
321 scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
322
323 scomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
324
326
327 int m_behind = i;
328
329 /*------------------------------------------------------------*/
330
331 // FLA_Hemv( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, C00, a01, FLA_ONE, c01 );
334 m_behind,
335 buff_m1,
336 C00, rs_C, cs_C,
337 a01, rs_A,
338 buff_1,
339 c01, rs_C );
340
341 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
342 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
343 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
346 m_behind,
347 m_behind,
348 A00, rs_A, cs_A,
349 W00, rs_W, cs_W );
350
352 0,
353 m_behind,
354 m_behind,
355 alpha11,
356 W00, rs_W, cs_W );
357
361 m_behind,
362 W00, rs_W, cs_W,
363 c01, rs_C );
364
365 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
367 m_behind,
368 buff_m1,
369 a01, rs_A,
370 c01, rs_C,
371 buff_1,
372 gamma11 );
373
374 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
375 // FLA_Mult_add( FLA_ONE, alpha11, omega );
376 // FLA_Inv_scal( omega, gamma11 );
380
381 /*------------------------------------------------------------*/
382
383 }
384
385 return FLA_SUCCESS;
386}
void bl1_ccopymrt(uplo1_t uplo, trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:223
void bl1_cdot2s(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition bl1_dot2s.c:39
void bl1_chemv(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_hemv.c:35
void bl1_cscalm(conj1_t conj, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs)
Definition bl1_scalm.c:169
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trsv.c:99
void bl1_cshiftdiag(conj1_t conj, int offset, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:97
@ BLIS1_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_NO_TRANSPOSE
Definition blis_type_defs.h:54
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_ccopymrt(), bl1_cdot2s(), bl1_chemv(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var1().

◆ FLA_Lyap_h_opc_var2()

FLA_Error FLA_Lyap_h_opc_var2 ( int  m_AC,
scomplex buff_sgn,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_W,
int  rs_W,
int  cs_W,
scomplex buff_C,
int  rs_C,
int  cs_C 
)
346{
349 int i;
350
352 m_AC,
353 m_AC,
354 buff_sgn,
355 buff_C, rs_C, cs_C );
356
357 for ( i = 0; i < m_AC; ++i )
358 {
359 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
360 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
361 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
362 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
363 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
364
365 scomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
366 scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
367 scomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
368 scomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
369
370 scomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
371
373
374 int m_behind = i;
375 int m_ahead = m_AC - i - 1;
376
377 /*------------------------------------------------------------*/
378
379 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
380 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
381 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
384 m_behind,
385 m_behind,
386 A00, rs_A, cs_A,
387 W00, rs_W, cs_W );
388
390 0,
391 m_behind,
392 m_behind,
393 alpha11,
394 W00, rs_W, cs_W );
395
399 m_behind,
400 W00, rs_W, cs_W,
401 c01, rs_C );
402
403 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
405 m_behind,
406 buff_m1,
407 a01, rs_A,
408 c01, rs_C,
409 buff_1,
410 gamma11 );
411
412 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
413 // FLA_Mult_add( FLA_ONE, alpha11, omega );
414 // FLA_Inv_scal( omega, gamma11 );
418
419 // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
422 m_behind,
423 m_ahead,
424 buff_m1,
425 c01, rs_C,
426 a12t, cs_A,
427 C02, rs_C, cs_C );
428
429 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
430 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
432 buff_m1,
433 gamma11,
434 a12t, cs_A,
435 buff_1,
436 c12t, cs_C );
437
440 m_behind,
441 m_ahead,
442 buff_m1,
443 A02, rs_A, cs_A,
444 c01, rs_C,
445 buff_1,
446 c12t, cs_C );
447
448 /*------------------------------------------------------------*/
449 }
450
451 return FLA_SUCCESS;
452}
void bl1_caxpysv(int n, scomplex *alpha0, scomplex *alpha1, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_axpysv.c:51
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
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
@ BLIS1_TRANSPOSE
Definition blis_type_defs.h:55

References bl1_caxpysv(), bl1_ccopymrt(), bl1_cdot2s(), bl1_cgemv(), bl1_cger(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

◆ FLA_Lyap_h_opc_var3()

FLA_Error FLA_Lyap_h_opc_var3 ( int  m_AC,
scomplex buff_sgn,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_W,
int  rs_W,
int  cs_W,
scomplex buff_C,
int  rs_C,
int  cs_C 
)
348{
351 int i;
352
354 m_AC,
355 m_AC,
356 buff_sgn,
357 buff_C, rs_C, cs_C );
358
359 for ( i = 0; i < m_AC; ++i )
360 {
361 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
362 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
363 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
364 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
365 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
366
367 scomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
368 scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
369 scomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
370 scomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
371
372 scomplex* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
373
375
376 int m_behind = i;
377 int m_ahead = m_AC - i - 1;
378
379 /*------------------------------------------------------------*/
380
381 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
383 m_behind,
384 buff_m1,
385 a01, rs_A,
386 c01, rs_C,
387 buff_1,
388 gamma11 );
389
390 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
391 // FLA_Mult_add( FLA_ONE, alpha11, omega );
392 // FLA_Inv_scal( omega, gamma11 );
396
397 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
398 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
399 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, C02, a01, FLA_ONE, c12t );
401 buff_m1,
402 gamma11,
403 a12t, cs_A,
404 buff_1,
405 c12t, cs_C );
406
409 m_behind,
410 m_ahead,
411 buff_m1,
412 A02, rs_A, cs_A,
413 c01, rs_C,
414 buff_1,
415 c12t, cs_C );
416
419 m_behind,
420 m_ahead,
421 buff_m1,
422 C02, rs_C, cs_C,
423 a01, rs_A,
424 buff_1,
425 c12t, cs_C );
426
427 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
428 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
429 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
432 m_ahead,
433 m_ahead,
434 A22, rs_A, cs_A,
435 W22, rs_W, cs_W );
436
438 0,
439 m_ahead,
440 m_ahead,
441 alpha11,
442 W22, rs_W, cs_W );
443
447 m_ahead,
448 W22, rs_W, cs_W,
449 c12t, cs_C );
450
451 /*------------------------------------------------------------*/
452 }
453
454 return FLA_SUCCESS;
455}

References bl1_caxpysv(), bl1_ccopymrt(), bl1_cdot2s(), bl1_cgemv(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var3().

◆ FLA_Lyap_h_opc_var4()

FLA_Error FLA_Lyap_h_opc_var4 ( int  m_AC,
scomplex buff_sgn,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_W,
int  rs_W,
int  cs_W,
scomplex buff_C,
int  rs_C,
int  cs_C 
)
296{
299 int i;
300
302 m_AC,
303 m_AC,
304 buff_sgn,
305 buff_C, rs_C, cs_C );
306
307 for ( i = 0; i < m_AC; ++i )
308 {
309 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
310 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
311 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
312
313 scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
314 scomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
315 scomplex* C22 = buff_C + (i+1)*cs_C + (i+1)*rs_C;
316
317 scomplex* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
318
320
321 int m_ahead = m_AC - i - 1;
322
323 /*------------------------------------------------------------*/
324
325 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
326 // FLA_Mult_add( FLA_ONE, alpha11, omega );
327 // FLA_Inv_scal( omega, gamma11 );
331
332 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
334 buff_m1,
335 gamma11,
336 a12t, cs_A,
337 buff_1,
338 c12t, cs_C );
339
340 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
341 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
342 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
345 m_ahead,
346 m_ahead,
347 A22, rs_A, cs_A,
348 W22, rs_W, cs_W );
349
351 0,
352 m_ahead,
353 m_ahead,
354 alpha11,
355 W22, rs_W, cs_W );
356
360 m_ahead,
361 W22, rs_W, cs_W,
362 c12t, cs_C );
363
364 // FLA_Her2c( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE, FLA_MINUS_ONE, a12t, c12t, C22 );
367 m_ahead,
368 buff_m1,
369 a12t, cs_A,
370 c12t, cs_C,
371 C22, rs_C, cs_C );
372
373 /*------------------------------------------------------------*/
374 }
375
376 return FLA_SUCCESS;
377}
void bl1_cher2(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:33

References bl1_caxpysv(), bl1_ccopymrt(), bl1_cher2(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var4().

◆ FLA_Lyap_h_opd_var1()

FLA_Error FLA_Lyap_h_opd_var1 ( int  m_AC,
double buff_sgn,
double buff_A,
int  rs_A,
int  cs_A,
double buff_W,
int  rs_W,
int  cs_W,
double buff_C,
int  rs_C,
int  cs_C 
)
209{
210 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
212 int i;
213
215 m_AC,
216 m_AC,
217 buff_sgn,
218 buff_C, rs_C, cs_C );
219
220 for ( i = 0; i < m_AC; ++i )
221 {
222 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
223 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
224 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
225
226 double* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
227 double* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
228 double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
229
230 double* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
231
232 double omega;
233
234 int m_behind = i;
235
236 /*------------------------------------------------------------*/
237
238 // FLA_Hemv( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, C00, a01, FLA_ONE, c01 );
241 m_behind,
242 buff_m1,
243 C00, rs_C, cs_C,
244 a01, rs_A,
245 buff_1,
246 c01, rs_C );
247
248 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
249 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
250 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
253 m_behind,
254 m_behind,
255 A00, rs_A, cs_A,
256 W00, rs_W, cs_W );
257
259 0,
260 m_behind,
261 m_behind,
262 alpha11,
263 W00, rs_W, cs_W );
264
268 m_behind,
269 W00, rs_W, cs_W,
270 c01, rs_C );
271
272 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
274 m_behind,
275 buff_m1,
276 a01, rs_A,
277 c01, rs_C,
278 buff_1,
279 gamma11 );
280
281 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
282 // FLA_Mult_add( FLA_ONE, alpha11, omega );
283 // FLA_Inv_scal( omega, gamma11 );
287
288 /*------------------------------------------------------------*/
289
290 }
291
292 return FLA_SUCCESS;
293}
void bl1_dcopymrt(uplo1_t uplo, trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:118
void bl1_ddot2s(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition bl1_dot2s.c:26
void bl1_dhemv(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_hemv.c:24
void bl1_dscalm(conj1_t conj, int m, int n, double *alpha, double *a, int a_rs, int a_cs)
Definition bl1_scalm.c:65
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56
void bl1_dshiftdiag(conj1_t conj, int offset, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:34

References bl1_dcopymrt(), bl1_ddot2s(), bl1_dhemv(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var1().

◆ FLA_Lyap_h_opd_var2()

FLA_Error FLA_Lyap_h_opd_var2 ( int  m_AC,
double buff_sgn,
double buff_A,
int  rs_A,
int  cs_A,
double buff_W,
int  rs_W,
int  cs_W,
double buff_C,
int  rs_C,
int  cs_C 
)
231{
232 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
234 int i;
235
237 m_AC,
238 m_AC,
239 buff_sgn,
240 buff_C, rs_C, cs_C );
241
242 for ( i = 0; i < m_AC; ++i )
243 {
244 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
245 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
246 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
247 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
248 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
249
250 double* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
251 double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
252 double* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
253 double* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
254
255 double* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
256
257 double omega;
258
259 int m_behind = i;
260 int m_ahead = m_AC - i - 1;
261
262 /*------------------------------------------------------------*/
263
264 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
265 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
266 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
269 m_behind,
270 m_behind,
271 A00, rs_A, cs_A,
272 W00, rs_W, cs_W );
273
275 0,
276 m_behind,
277 m_behind,
278 alpha11,
279 W00, rs_W, cs_W );
280
284 m_behind,
285 W00, rs_W, cs_W,
286 c01, rs_C );
287
288 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
290 m_behind,
291 buff_m1,
292 a01, rs_A,
293 c01, rs_C,
294 buff_1,
295 gamma11 );
296
297 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
298 // FLA_Mult_add( FLA_ONE, alpha11, omega );
299 // FLA_Inv_scal( omega, gamma11 );
303
304 // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
307 m_behind,
308 m_ahead,
309 buff_m1,
310 c01, rs_C,
311 a12t, cs_A,
312 C02, rs_C, cs_C );
313
314 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
315 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
317 buff_m1,
318 gamma11,
319 a12t, cs_A,
320 buff_1,
321 c12t, cs_C );
322
325 m_behind,
326 m_ahead,
327 buff_m1,
328 A02, rs_A, cs_A,
329 c01, rs_C,
330 buff_1,
331 c12t, cs_C );
332
333 /*------------------------------------------------------------*/
334 }
335
336 return FLA_SUCCESS;
337}
void bl1_daxpysv(int n, double *alpha0, double *alpha1, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_axpysv.c:32
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
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

References bl1_daxpysv(), bl1_dcopymrt(), bl1_ddot2s(), bl1_dgemv(), bl1_dger(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

◆ FLA_Lyap_h_opd_var3()

FLA_Error FLA_Lyap_h_opd_var3 ( int  m_AC,
double buff_sgn,
double buff_A,
int  rs_A,
int  cs_A,
double buff_W,
int  rs_W,
int  cs_W,
double buff_C,
int  rs_C,
int  cs_C 
)
232{
233 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
235 int i;
236
238 m_AC,
239 m_AC,
240 buff_sgn,
241 buff_C, rs_C, cs_C );
242
243 for ( i = 0; i < m_AC; ++i )
244 {
245 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
246 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
247 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
248 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
249 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
250
251 double* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
252 double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
253 double* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
254 double* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
255
256 double* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
257
258 double omega;
259
260 int m_behind = i;
261 int m_ahead = m_AC - i - 1;
262
263 /*------------------------------------------------------------*/
264
265 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
267 m_behind,
268 buff_m1,
269 a01, rs_A,
270 c01, rs_C,
271 buff_1,
272 gamma11 );
273
274 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
275 // FLA_Mult_add( FLA_ONE, alpha11, omega );
276 // FLA_Inv_scal( omega, gamma11 );
280
281 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
282 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
283 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, C02, a01, FLA_ONE, c12t );
285 buff_m1,
286 gamma11,
287 a12t, cs_A,
288 buff_1,
289 c12t, cs_C );
290
293 m_behind,
294 m_ahead,
295 buff_m1,
296 A02, rs_A, cs_A,
297 c01, rs_C,
298 buff_1,
299 c12t, cs_C );
300
303 m_behind,
304 m_ahead,
305 buff_m1,
306 C02, rs_C, cs_C,
307 a01, rs_A,
308 buff_1,
309 c12t, cs_C );
310
311 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
312 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
313 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
316 m_ahead,
317 m_ahead,
318 A22, rs_A, cs_A,
319 W22, rs_W, cs_W );
320
322 0,
323 m_ahead,
324 m_ahead,
325 alpha11,
326 W22, rs_W, cs_W );
327
331 m_ahead,
332 W22, rs_W, cs_W,
333 c12t, cs_C );
334
335 /*------------------------------------------------------------*/
336 }
337
338 return FLA_SUCCESS;
339}

References bl1_daxpysv(), bl1_dcopymrt(), bl1_ddot2s(), bl1_dgemv(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var3().

◆ FLA_Lyap_h_opd_var4()

FLA_Error FLA_Lyap_h_opd_var4 ( int  m_AC,
double buff_sgn,
double buff_A,
int  rs_A,
int  cs_A,
double buff_W,
int  rs_W,
int  cs_W,
double buff_C,
int  rs_C,
int  cs_C 
)
206{
207 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
209 int i;
210
212 m_AC,
213 m_AC,
214 buff_sgn,
215 buff_C, rs_C, cs_C );
216
217 for ( i = 0; i < m_AC; ++i )
218 {
219 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
220 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
221 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
222
223 double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
224 double* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
225 double* C22 = buff_C + (i+1)*cs_C + (i+1)*rs_C;
226
227 double* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
228
229 double omega;
230
231 int m_ahead = m_AC - i - 1;
232
233 /*------------------------------------------------------------*/
234
235 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
236 // FLA_Mult_add( FLA_ONE, alpha11, omega );
237 // FLA_Inv_scal( omega, gamma11 );
241
242 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
244 buff_m1,
245 gamma11,
246 a12t, cs_A,
247 buff_1,
248 c12t, cs_C );
249
250 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
251 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
252 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
255 m_ahead,
256 m_ahead,
257 A22, rs_A, cs_A,
258 W22, rs_W, cs_W );
259
261 0,
262 m_ahead,
263 m_ahead,
264 alpha11,
265 W22, rs_W, cs_W );
266
270 m_ahead,
271 W22, rs_W, cs_W,
272 c12t, cs_C );
273
274 // FLA_Her2c( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE, FLA_MINUS_ONE, a12t, c12t, C22 );
277 m_ahead,
278 buff_m1,
279 a12t, cs_A,
280 c12t, cs_C,
281 C22, rs_C, cs_C );
282
283 /*------------------------------------------------------------*/
284 }
285
286 return FLA_SUCCESS;
287}
void bl1_dher2(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_her2.c:23

References bl1_daxpysv(), bl1_dcopymrt(), bl1_dher2(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var4().

◆ FLA_Lyap_h_ops_var1()

FLA_Error FLA_Lyap_h_ops_var1 ( int  m_AC,
float buff_sgn,
float buff_A,
int  rs_A,
int  cs_A,
float buff_W,
int  rs_W,
int  cs_W,
float buff_C,
int  rs_C,
int  cs_C 
)
116{
117 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
119 int i;
120
122 m_AC,
123 m_AC,
124 buff_sgn,
125 buff_C, rs_C, cs_C );
126
127 for ( i = 0; i < m_AC; ++i )
128 {
129 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
130 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
131 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
132
133 float* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
134 float* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
135 float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
136
137 float* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
138
139 float omega;
140
141 int m_behind = i;
142
143 /*------------------------------------------------------------*/
144
145 // FLA_Hemv( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, C00, a01, FLA_ONE, c01 );
148 m_behind,
149 buff_m1,
150 C00, rs_C, cs_C,
151 a01, rs_A,
152 buff_1,
153 c01, rs_C );
154
155 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
156 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
157 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
160 m_behind,
161 m_behind,
162 A00, rs_A, cs_A,
163 W00, rs_W, cs_W );
164
166 0,
167 m_behind,
168 m_behind,
169 alpha11,
170 W00, rs_W, cs_W );
171
175 m_behind,
176 W00, rs_W, cs_W,
177 c01, rs_C );
178
179 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
181 m_behind,
182 buff_m1,
183 a01, rs_A,
184 c01, rs_C,
185 buff_1,
186 gamma11 );
187
188 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
189 // FLA_Mult_add( FLA_ONE, alpha11, omega );
190 // FLA_Inv_scal( omega, gamma11 );
194
195 /*------------------------------------------------------------*/
196
197 }
198
199 return FLA_SUCCESS;
200}
void bl1_scopymrt(uplo1_t uplo, trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:13
void bl1_sdot2s(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition bl1_dot2s.c:13
void bl1_shemv(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_hemv.c:13
void bl1_sscalm(conj1_t conj, int m, int n, float *alpha, float *a, int a_rs, int a_cs)
Definition bl1_scalm.c:13
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13
void bl1_sshiftdiag(conj1_t conj, int offset, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:13

References bl1_scopymrt(), bl1_sdot2s(), bl1_shemv(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var1().

◆ FLA_Lyap_h_ops_var2()

FLA_Error FLA_Lyap_h_ops_var2 ( int  m_AC,
float buff_sgn,
float buff_A,
int  rs_A,
int  cs_A,
float buff_W,
int  rs_W,
int  cs_W,
float buff_C,
int  rs_C,
int  cs_C 
)
116{
117 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
119 int i;
120
122 m_AC,
123 m_AC,
124 buff_sgn,
125 buff_C, rs_C, cs_C );
126
127 for ( i = 0; i < m_AC; ++i )
128 {
129 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
130 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
131 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
132 float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
133 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
134
135 float* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
136 float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
137 float* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
138 float* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
139
140 float* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
141
142 float omega;
143
144 int m_behind = i;
145 int m_ahead = m_AC - i - 1;
146
147 /*------------------------------------------------------------*/
148
149 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
150 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
151 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
154 m_behind,
155 m_behind,
156 A00, rs_A, cs_A,
157 W00, rs_W, cs_W );
158
160 0,
161 m_behind,
162 m_behind,
163 alpha11,
164 W00, rs_W, cs_W );
165
169 m_behind,
170 W00, rs_W, cs_W,
171 c01, rs_C );
172
173 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
175 m_behind,
176 buff_m1,
177 a01, rs_A,
178 c01, rs_C,
179 buff_1,
180 gamma11 );
181
182 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
183 // FLA_Mult_add( FLA_ONE, alpha11, omega );
184 // FLA_Inv_scal( omega, gamma11 );
188
189 // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
192 m_behind,
193 m_ahead,
194 buff_m1,
195 c01, rs_C,
196 a12t, cs_A,
197 C02, rs_C, cs_C );
198
199 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
200 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
202 buff_m1,
203 gamma11,
204 a12t, cs_A,
205 buff_1,
206 c12t, cs_C );
207
210 m_behind,
211 m_ahead,
212 buff_m1,
213 A02, rs_A, cs_A,
214 c01, rs_C,
215 buff_1,
216 c12t, cs_C );
217
218 /*------------------------------------------------------------*/
219 }
220
221 return FLA_SUCCESS;
222}
void bl1_saxpysv(int n, float *alpha0, float *alpha1, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_axpysv.c:13
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_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

References bl1_saxpysv(), bl1_scopymrt(), bl1_sdot2s(), bl1_sgemv(), bl1_sger(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

◆ FLA_Lyap_h_ops_var3()

FLA_Error FLA_Lyap_h_ops_var3 ( int  m_AC,
float buff_sgn,
float buff_A,
int  rs_A,
int  cs_A,
float buff_W,
int  rs_W,
int  cs_W,
float buff_C,
int  rs_C,
int  cs_C 
)
116{
117 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
119 int i;
120
122 m_AC,
123 m_AC,
124 buff_sgn,
125 buff_C, rs_C, cs_C );
126
127 for ( i = 0; i < m_AC; ++i )
128 {
129 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
130 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
131 float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
132 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
133 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
134
135 float* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
136 float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
137 float* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
138 float* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
139
140 float* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
141
142 float omega;
143
144 int m_behind = i;
145 int m_ahead = m_AC - i - 1;
146
147 /*------------------------------------------------------------*/
148
149 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
151 m_behind,
152 buff_m1,
153 a01, rs_A,
154 c01, rs_C,
155 buff_1,
156 gamma11 );
157
158 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
159 // FLA_Mult_add( FLA_ONE, alpha11, omega );
160 // FLA_Inv_scal( omega, gamma11 );
164
165 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
166 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
167 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, C02, a01, FLA_ONE, c12t );
169 buff_m1,
170 gamma11,
171 a12t, cs_A,
172 buff_1,
173 c12t, cs_C );
174
177 m_behind,
178 m_ahead,
179 buff_m1,
180 A02, rs_A, cs_A,
181 c01, rs_C,
182 buff_1,
183 c12t, cs_C );
184
187 m_behind,
188 m_ahead,
189 buff_m1,
190 C02, rs_C, cs_C,
191 a01, rs_A,
192 buff_1,
193 c12t, cs_C );
194
195 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
196 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
197 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
200 m_ahead,
201 m_ahead,
202 A22, rs_A, cs_A,
203 W22, rs_W, cs_W );
204
206 0,
207 m_ahead,
208 m_ahead,
209 alpha11,
210 W22, rs_W, cs_W );
211
215 m_ahead,
216 W22, rs_W, cs_W,
217 c12t, cs_C );
218
219 /*------------------------------------------------------------*/
220 }
221
222 return FLA_SUCCESS;
223}

References bl1_saxpysv(), bl1_scopymrt(), bl1_sdot2s(), bl1_sgemv(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var3().

◆ FLA_Lyap_h_ops_var4()

FLA_Error FLA_Lyap_h_ops_var4 ( int  m_AC,
float buff_sgn,
float buff_A,
int  rs_A,
int  cs_A,
float buff_W,
int  rs_W,
int  cs_W,
float buff_C,
int  rs_C,
int  cs_C 
)
116{
117 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
119 int i;
120
122 m_AC,
123 m_AC,
124 buff_sgn,
125 buff_C, rs_C, cs_C );
126
127 for ( i = 0; i < m_AC; ++i )
128 {
129 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
130 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
131 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
132
133 float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
134 float* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
135 float* C22 = buff_C + (i+1)*cs_C + (i+1)*rs_C;
136
137 float* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
138
139 float omega;
140
141 int m_ahead = m_AC - i - 1;
142
143 /*------------------------------------------------------------*/
144
145 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
146 // FLA_Mult_add( FLA_ONE, alpha11, omega );
147 // FLA_Inv_scal( omega, gamma11 );
151
152 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
154 buff_m1,
155 gamma11,
156 a12t, cs_A,
157 buff_1,
158 c12t, cs_C );
159
160 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
161 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
162 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
165 m_ahead,
166 m_ahead,
167 A22, rs_A, cs_A,
168 W22, rs_W, cs_W );
169
171 0,
172 m_ahead,
173 m_ahead,
174 alpha11,
175 W22, rs_W, cs_W );
176
180 m_ahead,
181 W22, rs_W, cs_W,
182 c12t, cs_C );
183
184 // FLA_Her2c( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE, FLA_MINUS_ONE, a12t, c12t, C22 );
187 m_ahead,
188 buff_m1,
189 a12t, cs_A,
190 c12t, cs_C,
191 C22, rs_C, cs_C );
192
193 /*------------------------------------------------------------*/
194 }
195
196 return FLA_SUCCESS;
197}
void bl1_sher2(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_her2.c:13

References bl1_saxpysv(), bl1_scopymrt(), bl1_sher2(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var4().

◆ FLA_Lyap_h_opt_var1()

FLA_Error FLA_Lyap_h_opt_var1 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Datatype datatype;
16 int m_AC;
17 int rs_A, cs_A;
18 int rs_W, cs_W;
19 int rs_C, cs_C;
20 FLA_Obj W;
21
23
24 datatype = FLA_Obj_datatype( A );
25
27
30
33
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_W = FLA_FLOAT_PTR( W );
43 float* buff_C = FLA_FLOAT_PTR( C );
44 float* buff_sgn = FLA_FLOAT_PTR( isgn );
45
50 buff_C, rs_C, cs_C );
51
52 break;
53 }
54
55 case FLA_DOUBLE:
56 {
57 double* buff_A = FLA_DOUBLE_PTR( A );
58 double* buff_W = FLA_DOUBLE_PTR( W );
59 double* buff_C = FLA_DOUBLE_PTR( C );
60 double* buff_sgn = FLA_DOUBLE_PTR( isgn );
61
66 buff_C, rs_C, cs_C );
67
68 break;
69 }
70
71 case FLA_COMPLEX:
72 {
77
82 buff_C, rs_C, cs_C );
83
84 break;
85 }
86
88 {
93
98 buff_C, rs_C, cs_C );
99
100 break;
101 }
102 }
103
104 FLA_Obj_free( &W );
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Lyap_h_opd_var1(int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var1.c:204
FLA_Error FLA_Lyap_h_opz_var1(int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var1.c:390
FLA_Error FLA_Lyap_h_ops_var1(int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var1.c:111
FLA_Error FLA_Lyap_h_opc_var1(int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var1.c:297
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition FLA_Query.c:174
FLA_Error FLA_Obj_create_conf_to(FLA_Trans trans, FLA_Obj old, FLA_Obj *obj)
Definition FLA_Obj.c:286
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition FLA_Obj.c:588
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
Definition blis_type_defs.h:138

References FLA_Lyap_h_opc_var1(), FLA_Lyap_h_opd_var1(), FLA_Lyap_h_ops_var1(), FLA_Lyap_h_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_opt_var2()

FLA_Error FLA_Lyap_h_opt_var2 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Datatype datatype;
16 int m_AC;
17 int rs_A, cs_A;
18 int rs_W, cs_W;
19 int rs_C, cs_C;
20 FLA_Obj W;
21
23
24 datatype = FLA_Obj_datatype( A );
25
27
30
33
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_W = FLA_FLOAT_PTR( W );
43 float* buff_C = FLA_FLOAT_PTR( C );
44 float* buff_sgn = FLA_FLOAT_PTR( isgn );
45
50 buff_C, rs_C, cs_C );
51
52 break;
53 }
54
55 case FLA_DOUBLE:
56 {
57 double* buff_A = FLA_DOUBLE_PTR( A );
58 double* buff_W = FLA_DOUBLE_PTR( W );
59 double* buff_C = FLA_DOUBLE_PTR( C );
60 double* buff_sgn = FLA_DOUBLE_PTR( isgn );
61
66 buff_C, rs_C, cs_C );
67
68 break;
69 }
70
71 case FLA_COMPLEX:
72 {
77
82 buff_C, rs_C, cs_C );
83
84 break;
85 }
86
88 {
93
98 buff_C, rs_C, cs_C );
99
100 break;
101 }
102 }
103
104 FLA_Obj_free( &W );
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Lyap_h_opz_var2(int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var2.c:456
FLA_Error FLA_Lyap_h_opd_var2(int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var2.c:226
FLA_Error FLA_Lyap_h_ops_var2(int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var2.c:111
FLA_Error FLA_Lyap_h_opc_var2(int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var2.c:341

References FLA_Lyap_h_opc_var2(), FLA_Lyap_h_opd_var2(), FLA_Lyap_h_ops_var2(), FLA_Lyap_h_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_opt_var3()

FLA_Error FLA_Lyap_h_opt_var3 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Datatype datatype;
16 int m_AC;
17 int rs_A, cs_A;
18 int rs_W, cs_W;
19 int rs_C, cs_C;
20 FLA_Obj W;
21
23
24 datatype = FLA_Obj_datatype( A );
25
27
30
33
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_W = FLA_FLOAT_PTR( W );
43 float* buff_C = FLA_FLOAT_PTR( C );
44 float* buff_sgn = FLA_FLOAT_PTR( isgn );
45
50 buff_C, rs_C, cs_C );
51
52 break;
53 }
54
55 case FLA_DOUBLE:
56 {
57 double* buff_A = FLA_DOUBLE_PTR( A );
58 double* buff_W = FLA_DOUBLE_PTR( W );
59 double* buff_C = FLA_DOUBLE_PTR( C );
60 double* buff_sgn = FLA_DOUBLE_PTR( isgn );
61
66 buff_C, rs_C, cs_C );
67
68 break;
69 }
70
71 case FLA_COMPLEX:
72 {
77
82 buff_C, rs_C, cs_C );
83
84 break;
85 }
86
88 {
93
98 buff_C, rs_C, cs_C );
99
100 break;
101 }
102 }
103
104 FLA_Obj_free( &W );
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Lyap_h_opz_var3(int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var3.c:459
FLA_Error FLA_Lyap_h_opc_var3(int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var3.c:343
FLA_Error FLA_Lyap_h_ops_var3(int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var3.c:111
FLA_Error FLA_Lyap_h_opd_var3(int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var3.c:227

References FLA_Lyap_h_opc_var3(), FLA_Lyap_h_opd_var3(), FLA_Lyap_h_ops_var3(), FLA_Lyap_h_opz_var3(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_opt_var4()

FLA_Error FLA_Lyap_h_opt_var4 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Datatype datatype;
16 int m_AC;
17 int rs_A, cs_A;
18 int rs_W, cs_W;
19 int rs_C, cs_C;
20 FLA_Obj W;
21
23
24 datatype = FLA_Obj_datatype( A );
25
27
30
33
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_W = FLA_FLOAT_PTR( W );
43 float* buff_C = FLA_FLOAT_PTR( C );
44 float* buff_sgn = FLA_FLOAT_PTR( isgn );
45
50 buff_C, rs_C, cs_C );
51
52 break;
53 }
54
55 case FLA_DOUBLE:
56 {
57 double* buff_A = FLA_DOUBLE_PTR( A );
58 double* buff_W = FLA_DOUBLE_PTR( W );
59 double* buff_C = FLA_DOUBLE_PTR( C );
60 double* buff_sgn = FLA_DOUBLE_PTR( isgn );
61
66 buff_C, rs_C, cs_C );
67
68 break;
69 }
70
71 case FLA_COMPLEX:
72 {
77
82 buff_C, rs_C, cs_C );
83
84 break;
85 }
86
88 {
93
98 buff_C, rs_C, cs_C );
99
100 break;
101 }
102 }
103
104 FLA_Obj_free( &W );
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Lyap_h_opd_var4(int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var4.c:201
FLA_Error FLA_Lyap_h_opz_var4(int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var4.c:381
FLA_Error FLA_Lyap_h_opc_var4(int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var4.c:291
FLA_Error FLA_Lyap_h_ops_var4(int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_h_opt_var4.c:111

References FLA_Lyap_h_opc_var4(), FLA_Lyap_h_opd_var4(), FLA_Lyap_h_ops_var4(), FLA_Lyap_h_opz_var4(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_opz_var1()

FLA_Error FLA_Lyap_h_opz_var1 ( int  m_AC,
dcomplex buff_sgn,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_W,
int  rs_W,
int  cs_W,
dcomplex buff_C,
int  rs_C,
int  cs_C 
)
395{
398 int i;
399
401 m_AC,
402 m_AC,
403 buff_sgn,
404 buff_C, rs_C, cs_C );
405
406 for ( i = 0; i < m_AC; ++i )
407 {
408 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
409 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
410 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
411
412 dcomplex* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
413 dcomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
414 dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
415
416 dcomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
417
419
420 int m_behind = i;
421
422 /*------------------------------------------------------------*/
423
424 // FLA_Hemv( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, C00, a01, FLA_ONE, c01 );
427 m_behind,
428 buff_m1,
429 C00, rs_C, cs_C,
430 a01, rs_A,
431 buff_1,
432 c01, rs_C );
433
434 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
435 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
436 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
439 m_behind,
440 m_behind,
441 A00, rs_A, cs_A,
442 W00, rs_W, cs_W );
443
445 0,
446 m_behind,
447 m_behind,
448 alpha11,
449 W00, rs_W, cs_W );
450
454 m_behind,
455 W00, rs_W, cs_W,
456 c01, rs_C );
457
458 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
460 m_behind,
461 buff_m1,
462 a01, rs_A,
463 c01, rs_C,
464 buff_1,
465 gamma11 );
466
467 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
468 // FLA_Mult_add( FLA_ONE, alpha11, omega );
469 // FLA_Inv_scal( omega, gamma11 );
473
474 /*------------------------------------------------------------*/
475
476 }
477
478 return FLA_SUCCESS;
479}
void bl1_zcopymrt(uplo1_t uplo, trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:328
void bl1_zdot2s(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition bl1_dot2s.c:70
void bl1_zhemv(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_hemv.c:134
void bl1_zscalm(conj1_t conj, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs)
Definition bl1_scalm.c:273
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177
void bl1_zshiftdiag(conj1_t conj, int offset, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:122

References bl1_zcopymrt(), bl1_zdot2s(), bl1_zhemv(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var1().

◆ FLA_Lyap_h_opz_var2()

FLA_Error FLA_Lyap_h_opz_var2 ( int  m_AC,
dcomplex buff_sgn,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_W,
int  rs_W,
int  cs_W,
dcomplex buff_C,
int  rs_C,
int  cs_C 
)
461{
464 int i;
465
467 m_AC,
468 m_AC,
469 buff_sgn,
470 buff_C, rs_C, cs_C );
471
472 for ( i = 0; i < m_AC; ++i )
473 {
474 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
475 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
476 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
477 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
478 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
479
480 dcomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
481 dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
482 dcomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
483 dcomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
484
485 dcomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
486
488
489 int m_behind = i;
490 int m_ahead = m_AC - i - 1;
491
492 /*------------------------------------------------------------*/
493
494 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
495 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
496 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
499 m_behind,
500 m_behind,
501 A00, rs_A, cs_A,
502 W00, rs_W, cs_W );
503
505 0,
506 m_behind,
507 m_behind,
508 alpha11,
509 W00, rs_W, cs_W );
510
514 m_behind,
515 W00, rs_W, cs_W,
516 c01, rs_C );
517
518 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
520 m_behind,
521 buff_m1,
522 a01, rs_A,
523 c01, rs_C,
524 buff_1,
525 gamma11 );
526
527 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
528 // FLA_Mult_add( FLA_ONE, alpha11, omega );
529 // FLA_Inv_scal( omega, gamma11 );
533
534 // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
537 m_behind,
538 m_ahead,
539 buff_m1,
540 c01, rs_C,
541 a12t, cs_A,
542 C02, rs_C, cs_C );
543
544 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
545 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
547 buff_m1,
548 gamma11,
549 a12t, cs_A,
550 buff_1,
551 c12t, cs_C );
552
555 m_behind,
556 m_ahead,
557 buff_m1,
558 A02, rs_A, cs_A,
559 c01, rs_C,
560 buff_1,
561 c12t, cs_C );
562
563 /*------------------------------------------------------------*/
564 }
565
566 return FLA_SUCCESS;
567}
void bl1_zaxpysv(int n, dcomplex *alpha0, dcomplex *alpha1, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_axpysv.c:71
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
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

References bl1_zaxpysv(), bl1_zcopymrt(), bl1_zdot2s(), bl1_zgemv(), bl1_zger(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

◆ FLA_Lyap_h_opz_var3()

FLA_Error FLA_Lyap_h_opz_var3 ( int  m_AC,
dcomplex buff_sgn,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_W,
int  rs_W,
int  cs_W,
dcomplex buff_C,
int  rs_C,
int  cs_C 
)
464{
467 int i;
468
470 m_AC,
471 m_AC,
472 buff_sgn,
473 buff_C, rs_C, cs_C );
474
475 for ( i = 0; i < m_AC; ++i )
476 {
477 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
478 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
479 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
480 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
481 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
482
483 dcomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
484 dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
485 dcomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
486 dcomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
487
488 dcomplex* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
489
491
492 int m_behind = i;
493 int m_ahead = m_AC - i - 1;
494
495 /*------------------------------------------------------------*/
496
497 // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
499 m_behind,
500 buff_m1,
501 a01, rs_A,
502 c01, rs_C,
503 buff_1,
504 gamma11 );
505
506 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
507 // FLA_Mult_add( FLA_ONE, alpha11, omega );
508 // FLA_Inv_scal( omega, gamma11 );
512
513 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
514 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
515 // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, C02, a01, FLA_ONE, c12t );
517 buff_m1,
518 gamma11,
519 a12t, cs_A,
520 buff_1,
521 c12t, cs_C );
522
525 m_behind,
526 m_ahead,
527 buff_m1,
528 A02, rs_A, cs_A,
529 c01, rs_C,
530 buff_1,
531 c12t, cs_C );
532
535 m_behind,
536 m_ahead,
537 buff_m1,
538 C02, rs_C, cs_C,
539 a01, rs_A,
540 buff_1,
541 c12t, cs_C );
542
543 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
544 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
545 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
548 m_ahead,
549 m_ahead,
550 A22, rs_A, cs_A,
551 W22, rs_W, cs_W );
552
554 0,
555 m_ahead,
556 m_ahead,
557 alpha11,
558 W22, rs_W, cs_W );
559
563 m_ahead,
564 W22, rs_W, cs_W,
565 c12t, cs_C );
566
567 /*------------------------------------------------------------*/
568 }
569
570 return FLA_SUCCESS;
571}

References bl1_zaxpysv(), bl1_zcopymrt(), bl1_zdot2s(), bl1_zgemv(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var3().

◆ FLA_Lyap_h_opz_var4()

FLA_Error FLA_Lyap_h_opz_var4 ( int  m_AC,
dcomplex buff_sgn,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_W,
int  rs_W,
int  cs_W,
dcomplex buff_C,
int  rs_C,
int  cs_C 
)
386{
389 int i;
390
392 m_AC,
393 m_AC,
394 buff_sgn,
395 buff_C, rs_C, cs_C );
396
397 for ( i = 0; i < m_AC; ++i )
398 {
399 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
400 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
401 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
402
403 dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
404 dcomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
405 dcomplex* C22 = buff_C + (i+1)*cs_C + (i+1)*rs_C;
406
407 dcomplex* W22 = buff_W + (i+1)*cs_W + (i+1)*rs_W;
408
410
411 int m_ahead = m_AC - i - 1;
412
413 /*------------------------------------------------------------*/
414
415 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
416 // FLA_Mult_add( FLA_ONE, alpha11, omega );
417 // FLA_Inv_scal( omega, gamma11 );
421
422 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
424 buff_m1,
425 gamma11,
426 a12t, cs_A,
427 buff_1,
428 c12t, cs_C );
429
430 // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A22, W22 );
431 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W22 );
432 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, W22, c12t );
435 m_ahead,
436 m_ahead,
437 A22, rs_A, cs_A,
438 W22, rs_W, cs_W );
439
441 0,
442 m_ahead,
443 m_ahead,
444 alpha11,
445 W22, rs_W, cs_W );
446
450 m_ahead,
451 W22, rs_W, cs_W,
452 c12t, cs_C );
453
454 // FLA_Her2c( FLA_UPPER_TRIANGULAR, FLA_CONJUGATE, FLA_MINUS_ONE, a12t, c12t, C22 );
457 m_ahead,
458 buff_m1,
459 a12t, cs_A,
460 c12t, cs_C,
461 C22, rs_C, cs_C );
462
463 /*------------------------------------------------------------*/
464 }
465
466 return FLA_SUCCESS;
467}
void bl1_zher2(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:121

References bl1_zaxpysv(), bl1_zcopymrt(), bl1_zher2(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var4().

◆ FLA_Lyap_h_unb_var1()

FLA_Error FLA_Lyap_h_unb_var1 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj CTL, CTR, C00, c01, C02,
21 C20, c21, C22;
22
23 FLA_Obj WTL, WTR, W00, w01, W02,
25 W20, w21, W22;
26
28
29 FLA_Scal( isgn, C );
30
32 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &omega );
33
34 FLA_Part_2x2( A, &ATL, &ATR,
35 &ABL, &ABR, 0, 0, FLA_TL );
36
37 FLA_Part_2x2( C, &CTL, &CTR,
38 &CBL, &CBR, 0, 0, FLA_TL );
39
40 FLA_Part_2x2( W, &WTL, &WTR,
41 &WBL, &WBR, 0, 0, FLA_TL );
42
43 while ( FLA_Obj_length( CBR ) > 0 ){
44
45 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
46 /* ************* */ /* ************************** */
47 &a10t, /**/ &alpha11, &a12t,
48 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
49 1, 1, FLA_BR );
50
51 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &c01, &C02,
52 /* ************* */ /* ************************** */
53 &c10t, /**/ &gamma11, &c12t,
54 CBL, /**/ CBR, &C20, /**/ &c21, &C22,
55 1, 1, FLA_BR );
56
57 FLA_Repart_2x2_to_3x3( WTL, /**/ WTR, &W00, /**/ &w01, &W02,
58 /* ************* */ /* ************************** */
59 &w10t, /**/ &omega11, &w12t,
60 WBL, /**/ WBR, &W20, /**/ &w21, &W22,
61 1, 1, FLA_BR );
62
63 /*------------------------------------------------------------*/
64
65 // c01 = c01 - C00 * a01;
67
68 // c01 = inv( triu(A00) + conj(alpha11) * I )' * c01;
72
73 // gamma11 = gamma11 - a01' * c01 - c01' * a01;
75
76 // gamma11 = gamma11 / ( alpha11 + alpha11' );
80
81 /*------------------------------------------------------------*/
82
83 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
84 a10t, alpha11, /**/ a12t,
85 /* ************** */ /* ************************ */
86 &ABL, /**/ &ABR, A20, a21, /**/ A22,
87 FLA_TL );
88
89 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, c01, /**/ C02,
90 c10t, gamma11, /**/ c12t,
91 /* ************** */ /* ************************ */
92 &CBL, /**/ &CBR, C20, c21, /**/ C22,
93 FLA_TL );
94
95 FLA_Cont_with_3x3_to_2x2( &WTL, /**/ &WTR, W00, w01, /**/ W02,
96 w10t, omega11, /**/ w12t,
97 /* ************** */ /* ************************ */
98 &WBL, /**/ &WBR, W20, w21, /**/ W22,
99 FLA_TL );
100 }
101
102 FLA_Obj_free( &W );
104
105 return FLA_SUCCESS;
106}
FLA_Error FLA_Scal(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Scal.c:15
FLA_Error FLA_Inv_scal(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_scal.c:13
FLA_Error FLA_Dot2cs(FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj beta, FLA_Obj rho)
Definition FLA_Dot2cs.c:13
FLA_Error FLA_Copyt(FLA_Trans trans, FLA_Obj A, FLA_Obj B)
Definition FLA_Copyt.c:15
FLA_Error FLA_Copyrt(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj A, FLA_Obj B)
Definition FLA_Copyrt.c:13
FLA_Error FLA_Hemv(FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition FLA_Hemv.c:13
FLA_Error FLA_Trsv(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition FLA_Trsv.c:15
FLA_Error FLA_Obj_create(FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj)
Definition FLA_Obj.c:55
FLA_Error FLA_Shift_diag(FLA_Conj conj, FLA_Obj sigma, FLA_Obj A)
Definition FLA_Shift_diag.c:13
FLA_Error FLA_Mult_add(FLA_Obj alpha, FLA_Obj beta, FLA_Obj gamma)
Definition FLA_Mult_add.c:13

References FLA_Cont_with_3x3_to_2x2(), FLA_Copyrt(), FLA_Copyt(), FLA_Dot2cs(), FLA_Hemv(), FLA_Inv_scal(), FLA_MINUS_ONE, FLA_Mult_add(), FLA_Obj_create(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal(), FLA_Shift_diag(), FLA_Trsv(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_unb_var2()

FLA_Error FLA_Lyap_h_unb_var2 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj CTL, CTR, C00, c01, C02,
21 C20, c21, C22;
22
23 FLA_Obj WTL, WTR, W00, w01, W02,
25 W20, w21, W22;
26
28
29 FLA_Scal( isgn, C );
30
32 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &omega );
33
34 FLA_Part_2x2( A, &ATL, &ATR,
35 &ABL, &ABR, 0, 0, FLA_TL );
36
37 FLA_Part_2x2( C, &CTL, &CTR,
38 &CBL, &CBR, 0, 0, FLA_TL );
39
40 FLA_Part_2x2( W, &WTL, &WTR,
41 &WBL, &WBR, 0, 0, FLA_TL );
42
43 while ( FLA_Obj_length( CBR ) > 0 ){
44
45 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
46 /* ************* */ /* ************************** */
47 &a10t, /**/ &alpha11, &a12t,
48 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
49 1, 1, FLA_BR );
50
51 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &c01, &C02,
52 /* ************* */ /* ************************** */
53 &c10t, /**/ &gamma11, &c12t,
54 CBL, /**/ CBR, &C20, /**/ &c21, &C22,
55 1, 1, FLA_BR );
56
57 FLA_Repart_2x2_to_3x3( WTL, /**/ WTR, &W00, /**/ &w01, &W02,
58 /* ************* */ /* ************************** */
59 &w10t, /**/ &omega11, &w12t,
60 WBL, /**/ WBR, &W20, /**/ &w21, &W22,
61 1, 1, FLA_BR );
62
63 /*------------------------------------------------------------*/
64
65 // c01 = inv( triu(A00) + conj(alpha11) * I )' * c01;
69
70 // gamma11 = gamma11 - a01' * c01 - c01' * a01;
72
73 // gamma11 = gamma11 / ( alpha11 + alpha11' );
77
78 // C02 = C02 - c01 * a12t;
80
81 // c12t = c12t - gamma11 * a12t;
82 // c12t = c12t - c01' * A02;
83 // = c12t - A02^T conj(c01);
86
87 /*------------------------------------------------------------*/
88
89 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
90 a10t, alpha11, /**/ a12t,
91 /* ************** */ /* ************************ */
92 &ABL, /**/ &ABR, A20, a21, /**/ A22,
93 FLA_TL );
94
95 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, c01, /**/ C02,
96 c10t, gamma11, /**/ c12t,
97 /* ************** */ /* ************************ */
98 &CBL, /**/ &CBR, C20, c21, /**/ C22,
99 FLA_TL );
100
101 FLA_Cont_with_3x3_to_2x2( &WTL, /**/ &WTR, W00, w01, /**/ W02,
102 w10t, omega11, /**/ w12t,
103 /* ************** */ /* ************************ */
104 &WBL, /**/ &WBR, W20, w21, /**/ W22,
105 FLA_TL );
106 }
107
108 FLA_Obj_free( &W );
110
111 return FLA_SUCCESS;
112}
FLA_Error FLA_Axpys(FLA_Obj alpha0, FLA_Obj alpha1, FLA_Obj A, FLA_Obj beta, FLA_Obj B)
Definition FLA_Axpys.c:13
FLA_Error FLA_Gemvc(FLA_Trans transa, FLA_Conj conjx, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition FLA_Gemvc.c:13
FLA_Error FLA_Ger(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition FLA_Ger.c:13

References FLA_Axpys(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyrt(), FLA_Copyt(), FLA_Dot2cs(), FLA_Gemvc(), FLA_Ger(), FLA_Inv_scal(), FLA_MINUS_ONE, FLA_Mult_add(), FLA_Obj_create(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal(), FLA_Shift_diag(), FLA_Trsv(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_unb_var3()

FLA_Error FLA_Lyap_h_unb_var3 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj CTL, CTR, C00, c01, C02,
21 C20, c21, C22;
22
23 FLA_Obj WTL, WTR, W00, w01, W02,
25 W20, w21, W22;
26
28
29 FLA_Scal( isgn, C );
30
32 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &omega );
33
34 FLA_Part_2x2( A, &ATL, &ATR,
35 &ABL, &ABR, 0, 0, FLA_TL );
36
37 FLA_Part_2x2( C, &CTL, &CTR,
38 &CBL, &CBR, 0, 0, FLA_TL );
39
40 FLA_Part_2x2( W, &WTL, &WTR,
41 &WBL, &WBR, 0, 0, FLA_TL );
42
43 while ( FLA_Obj_length( CBR ) > 0 ){
44
45 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
46 /* ************* */ /* ************************** */
47 &a10t, /**/ &alpha11, &a12t,
48 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
49 1, 1, FLA_BR );
50
51 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &c01, &C02,
52 /* ************* */ /* ************************** */
53 &c10t, /**/ &gamma11, &c12t,
54 CBL, /**/ CBR, &C20, /**/ &c21, &C22,
55 1, 1, FLA_BR );
56
57 FLA_Repart_2x2_to_3x3( WTL, /**/ WTR, &W00, /**/ &w01, &W02,
58 /* ************* */ /* ************************** */
59 &w10t, /**/ &omega11, &w12t,
60 WBL, /**/ WBR, &W20, /**/ &w21, &W22,
61 1, 1, FLA_BR );
62
63 /*------------------------------------------------------------*/
64
65 // gamma11 = gamma11 - a01' * c01 - c01' * a01;
67
68 // gamma11 = gamma11 / ( alpha11 + alpha11' );
72
73 // c12t = c12t - gamma11 * a12t;
74 // c12t = c12t - c01' * A02 - a01' * C02;
75 // = c12t - A02^T * conj(c01) - C02^T * conj(a01);
79
80 // c12t = inv( triu(A22) + conj(alpha11) * I )' * c12t;
84
85 /*------------------------------------------------------------*/
86
87 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
88 a10t, alpha11, /**/ a12t,
89 /* ************** */ /* ************************ */
90 &ABL, /**/ &ABR, A20, a21, /**/ A22,
91 FLA_TL );
92
93 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, c01, /**/ C02,
94 c10t, gamma11, /**/ c12t,
95 /* ************** */ /* ************************ */
96 &CBL, /**/ &CBR, C20, c21, /**/ C22,
97 FLA_TL );
98
99 FLA_Cont_with_3x3_to_2x2( &WTL, /**/ &WTR, W00, w01, /**/ W02,
100 w10t, omega11, /**/ w12t,
101 /* ************** */ /* ************************ */
102 &WBL, /**/ &WBR, W20, w21, /**/ W22,
103 FLA_TL );
104 }
105
106 FLA_Obj_free( &W );
108
109 return FLA_SUCCESS;
110}

References FLA_Axpys(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyrt(), FLA_Copyt(), FLA_Dot2cs(), FLA_Gemvc(), FLA_Inv_scal(), FLA_MINUS_ONE, FLA_Mult_add(), FLA_Obj_create(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal(), FLA_Shift_diag(), FLA_Trsv(), and i.

Referenced by FLA_Lyap_h().

◆ FLA_Lyap_h_unb_var4()

FLA_Error FLA_Lyap_h_unb_var4 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Obj ATL, ATR, A00, a01, A02,
17 A20, a21, A22;
18
19 FLA_Obj CTL, CTR, C00, c01, C02,
21 C20, c21, C22;
22
23 FLA_Obj WTL, WTR, W00, w01, W02,
25 W20, w21, W22;
26
28
29 FLA_Scal( isgn, C );
30
32 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &omega );
33
34 FLA_Part_2x2( A, &ATL, &ATR,
35 &ABL, &ABR, 0, 0, FLA_TL );
36
37 FLA_Part_2x2( C, &CTL, &CTR,
38 &CBL, &CBR, 0, 0, FLA_TL );
39
40 FLA_Part_2x2( W, &WTL, &WTR,
41 &WBL, &WBR, 0, 0, FLA_TL );
42
43 while ( FLA_Obj_length( CBR ) > 0 ){
44
45 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
46 /* ************* */ /* ************************** */
47 &a10t, /**/ &alpha11, &a12t,
48 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
49 1, 1, FLA_BR );
50
51 FLA_Repart_2x2_to_3x3( CTL, /**/ CTR, &C00, /**/ &c01, &C02,
52 /* ************* */ /* ************************** */
53 &c10t, /**/ &gamma11, &c12t,
54 CBL, /**/ CBR, &C20, /**/ &c21, &C22,
55 1, 1, FLA_BR );
56
57 FLA_Repart_2x2_to_3x3( WTL, /**/ WTR, &W00, /**/ &w01, &W02,
58 /* ************* */ /* ************************** */
59 &w10t, /**/ &omega11, &w12t,
60 WBL, /**/ WBR, &W20, /**/ &w21, &W22,
61 1, 1, FLA_BR );
62
63 /*------------------------------------------------------------*/
64
65 // gamma11 = gamma11 / ( alpha11 + alpha11' );
69
70 // c12t = c12t - gamma11 * a12t;
72
73 // c12t = inv( triu(A22) + conj(alpha11) * I )^T * c12t;
77
78 // C22 = C22 - conj(a12t) * c12t^T - conj(c12t) * a12t^T;
80
81 /*------------------------------------------------------------*/
82
83 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
84 a10t, alpha11, /**/ a12t,
85 /* ************** */ /* ************************ */
86 &ABL, /**/ &ABR, A20, a21, /**/ A22,
87 FLA_TL );
88
89 FLA_Cont_with_3x3_to_2x2( &CTL, /**/ &CTR, C00, c01, /**/ C02,
90 c10t, gamma11, /**/ c12t,
91 /* ************** */ /* ************************ */
92 &CBL, /**/ &CBR, C20, c21, /**/ C22,
93 FLA_TL );
94
95 FLA_Cont_with_3x3_to_2x2( &WTL, /**/ &WTR, W00, w01, /**/ W02,
96 w10t, omega11, /**/ w12t,
97 /* ************** */ /* ************************ */
98 &WBL, /**/ &WBR, W20, w21, /**/ W22,
99 FLA_TL );
100 }
101
102 FLA_Obj_free( &W );
104
105 return FLA_SUCCESS;
106}
FLA_Error FLA_Her2c(FLA_Uplo uplo, FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition FLA_Her2c.c:13

References FLA_Axpys(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyrt(), FLA_Copyt(), FLA_Her2c(), FLA_Inv_scal(), FLA_MINUS_ONE, FLA_Mult_add(), FLA_Obj_create(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal(), FLA_Shift_diag(), FLA_Trsv(), and i.

Referenced by FLA_Lyap_h().