libflame revision_anchor
Functions
FLA_Chol_u.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Chol_u_blk_var1 (FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_Chol_u_blk_var2 (FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_Chol_u_blk_var3 (FLA_Obj A, fla_chol_t *cntl)
 
FLA_Error FLA_Chol_u_unb_var1 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_unb_var2 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_unb_var3 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_ops_var1 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opd_var1 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opc_var1 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opz_var1 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_ops_var2 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opd_var2 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opc_var2 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opz_var2 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opt_var3 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_ops_var3 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opd_var3 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opc_var3 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opz_var3 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Chol_u_blk_var1()

FLA_Error FLA_Chol_u_blk_var1 ( FLA_Obj  A,
fla_chol_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
21 dim_t b;
22
23 int r_val = FLA_SUCCESS;
24
25 FLA_Part_2x2( A, &ATL, &ATR,
26 &ABL, &ABR, 0, 0, FLA_TL );
27
28 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
29
31
32 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
33 /* ************* */ /* ******************** */
34 &A10, /**/ &A11, &A12,
35 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
36 b, b, FLA_BR );
37
38 /*------------------------------------------------------------*/
39
40 // A01 = inv( triu( A00 )' ) * A01
43 FLA_ONE, A00, A01,
44 FLA_Cntl_sub_trsm( cntl ) );
45
46 // A11 = A11 - A01' * A01
49 FLA_Cntl_sub_herk( cntl ) );
50
51 // A11 = chol( A11 )
53 FLA_Cntl_sub_chol( cntl ) );
54
55 if ( r_val != FLA_SUCCESS )
56 return ( FLA_Obj_length( A00 ) + r_val );
57
58 /*------------------------------------------------------------*/
59
60 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
61 A10, A11, /**/ A12,
62 /* ************** */ /* ****************** */
63 &ABL, /**/ &ABR, A20, A21, /**/ A22,
64 FLA_TL );
65 }
66
67 return r_val;
68}
FLA_Error FLA_Chol_internal(FLA_Uplo uplo, FLA_Obj A, fla_chol_t *cntl)
Definition FLA_Chol_internal.c:16
FLA_Error FLA_Herk_internal(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj beta, FLA_Obj C, fla_herk_t *cntl)
Definition FLA_Herk_internal.c:16
FLA_Error FLA_Trsm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t *cntl)
Definition FLA_Trsm_internal.c:16
FLA_Obj FLA_MINUS_ONE
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_Chol_internal(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Herk_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_blk_var2()

FLA_Error FLA_Chol_u_blk_var2 ( FLA_Obj  A,
fla_chol_t cntl 
)
16{
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
21 dim_t b;
22
23 int r_val = FLA_SUCCESS;
24
25 FLA_Part_2x2( A, &ATL, &ATR,
26 &ABL, &ABR, 0, 0, FLA_TL );
27
28 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
29
31
32 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
33 /* ************* */ /* ******************** */
34 &A10, /**/ &A11, &A12,
35 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
36 b, b, FLA_BR );
37
38 /*------------------------------------------------------------*/
39
40 // A11 = A11 - A01' * A01
43 FLA_Cntl_sub_herk( cntl ) );
44
45 // A12 = A12 - A02' * A01
48 FLA_Cntl_sub_gemm( cntl ) );
49
50 // A11 = chol( A11 )
52 FLA_Cntl_sub_chol( cntl ) );
53
54 if ( r_val != FLA_SUCCESS )
55 return ( FLA_Obj_length( A00 ) + r_val );
56
57 // A12 = inv( triu( A11 )' ) * A12
60 FLA_ONE, A11, A12,
61 FLA_Cntl_sub_trsm( cntl ) );
62
63 /*------------------------------------------------------------*/
64
65 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
66 A10, A11, /**/ A12,
67 /* ************** */ /* ****************** */
68 &ABL, /**/ &ABR, A20, A21, /**/ A22,
69 FLA_TL );
70 }
71
72 return r_val;
73}
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_Chol_internal(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Herk_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_blk_var3()

FLA_Error FLA_Chol_u_blk_var3 ( FLA_Obj  A,
fla_chol_t cntl 
)
14{
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
19 dim_t b;
20
21 int r_val = FLA_SUCCESS;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27
29
30 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31 /* ************* */ /* ******************** */
32 &A10, /**/ &A11, &A12,
33 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34 b, b, FLA_BR );
35
36 /*------------------------------------------------------------*/
37
38 // A11 = chol( A11 )
40 FLA_Cntl_sub_chol( cntl ) );
41
42 if ( r_val != FLA_SUCCESS )
43 return ( FLA_Obj_length( A00 ) + r_val );
44
45 // A12 = inv( triu( A11 )' ) * A12
48 FLA_ONE, A11, A12,
49 FLA_Cntl_sub_trsm( cntl ) );
50
51 // A22 = A22 - A12' * A12
54 FLA_Cntl_sub_herk( cntl ) );
55
56 /*------------------------------------------------------------*/
57
58 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
59 A10, A11, /**/ A12,
60 /* ************** */ /* ****************** */
61 &ABL, /**/ &ABR, A20, A21, /**/ A22,
62 FLA_TL );
63 }
64
65 return r_val;
66}

References FLA_Chol_internal(), FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Herk_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trsm_internal(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_opc_var1()

FLA_Error FLA_Chol_u_opc_var1 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
179{
182 int i;
184
185 for ( i = 0; i < mn_A; ++i )
186 {
187 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
188 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
189 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
190
191 int mn_behind = i;
192
193 /*------------------------------------------------------------*/
194
195 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
199 mn_behind,
200 A00, rs_A, cs_A,
201 a01, rs_A );
202
203 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
205 mn_behind,
206 buff_m1,
207 a01, rs_A,
208 a01, rs_A,
209 buff_1,
210 alpha11 );
211
212 // r_val = FLA_Sqrt( alpha11 );
213 // if ( r_val != FLA_SUCCESS )
214 // return ( FLA_Obj_length( A00 ) + 1 );
216 if ( e_val != FLA_SUCCESS ) return mn_behind;
217
218 /*------------------------------------------------------------*/
219
220 }
221
222 return FLA_SUCCESS;
223}
int FLA_Error
Definition FLA_type_defs.h:47
void bl1_cdots(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition bl1_dots.c:39
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trsv.c:99
@ BLIS1_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
Definition blis_type_defs.h:133

References bl1_cdots(), bl1_ctrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var1().

◆ FLA_Chol_u_opc_var2()

FLA_Error FLA_Chol_u_opc_var2 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
199{
202 int i;
204
205 for ( i = 0; i < mn_A; ++i )
206 {
207 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
208 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
209 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
210 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
211
212 int mn_ahead = mn_A - i - 1;
213 int mn_behind = i;
214
215 /*------------------------------------------------------------*/
216
217 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
219 mn_behind,
220 buff_m1,
221 a01, rs_A,
222 a01, rs_A,
223 buff_1,
224 alpha11 );
225
226 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
229 mn_behind,
230 mn_ahead,
231 buff_m1,
232 A02, rs_A, cs_A,
233 a01, rs_A,
234 buff_1,
235 a12t, cs_A );
236
237 // r_val = FLA_Sqrt( alpha11 );
238 // if ( r_val != FLA_SUCCESS )
239 // return ( FLA_Obj_length( A00 ) + 1 );
241 if ( e_val != FLA_SUCCESS ) return mn_behind;
242
243 // FLA_Inv_scal_external( alpha11, a12t );
245 mn_ahead,
246 alpha11,
247 a12t, cs_A );
248
249 /*------------------------------------------------------------*/
250
251 }
252
253 return FLA_SUCCESS;
254}
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_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_invscalv.c:52
@ BLIS1_TRANSPOSE
Definition blis_type_defs.h:55
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81

References bl1_cdots(), bl1_cgemv(), bl1_cinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_opc_var3()

FLA_Error FLA_Chol_u_opc_var3 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
169{
171 int i;
173
174 for ( i = 0; i < mn_A; ++i )
175 {
176 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
177 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
178 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
179
180 int mn_ahead = mn_A - i - 1;
181 int mn_behind = i;
182
183 /*------------------------------------------------------------*/
184
185 // r_val = FLA_Sqrt( alpha11 );
186 // if ( r_val != FLA_SUCCESS )
187 // return ( FLA_Obj_length( A00 ) + 1 );
189 if ( e_val != FLA_SUCCESS ) return mn_behind;
190
191 // FLA_Inv_scal_external( alpha11, a12t );
193 mn_ahead,
194 alpha11,
195 a12t, cs_A );
196
197 // FLA_Herc_external( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a12t, A22 );
200 mn_ahead,
201 buff_m1,
202 a12t, cs_A,
203 A22, rs_A, cs_A );
204
205 /*------------------------------------------------------------*/
206
207 }
208
209 return FLA_SUCCESS;
210}
void bl1_cher(uplo1_t uplo, conj1_t conj, int m, float *alpha, scomplex *x, int incx, scomplex *a, int a_rs, int a_cs)
Definition bl1_her.c:31

References bl1_cher(), bl1_cinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Chol_u_opt_var3().

◆ FLA_Chol_u_opd_var1()

FLA_Error FLA_Chol_u_opd_var1 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
129{
130 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
132 int i;
134
135 for ( i = 0; i < mn_A; ++i )
136 {
137 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
138 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
139 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
140
141 int mn_behind = i;
142
143 /*------------------------------------------------------------*/
144
145 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
149 mn_behind,
150 A00, rs_A, cs_A,
151 a01, rs_A );
152
153 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
155 mn_behind,
156 buff_m1,
157 a01, rs_A,
158 a01, rs_A,
159 buff_1,
160 alpha11 );
161
162 // r_val = FLA_Sqrt( alpha11 );
163 // if ( r_val != FLA_SUCCESS )
164 // return ( FLA_Obj_length( A00 ) + 1 );
166 if ( e_val != FLA_SUCCESS ) return mn_behind;
167
168 /*------------------------------------------------------------*/
169
170 }
171
172 return FLA_SUCCESS;
173}
void bl1_ddots(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition bl1_dots.c:26
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56

References bl1_ddots(), bl1_dtrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var1().

◆ FLA_Chol_u_opd_var2()

FLA_Error FLA_Chol_u_opd_var2 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
138{
139 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
141 int i;
143
144 for ( i = 0; i < mn_A; ++i )
145 {
146 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
147 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
148 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
149 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
150
151 int mn_ahead = mn_A - i - 1;
152 int mn_behind = i;
153
154 /*------------------------------------------------------------*/
155
156 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
158 mn_behind,
159 buff_m1,
160 a01, rs_A,
161 a01, rs_A,
162 buff_1,
163 alpha11 );
164
165 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
168 mn_behind,
169 mn_ahead,
170 buff_m1,
171 A02, rs_A, cs_A,
172 a01, rs_A,
173 buff_1,
174 a12t, cs_A );
175
176 // r_val = FLA_Sqrt( alpha11 );
177 // if ( r_val != FLA_SUCCESS )
178 // return ( FLA_Obj_length( A00 ) + 1 );
180 if ( e_val != FLA_SUCCESS ) return mn_behind;
181
182 // FLA_Inv_scal_external( alpha11, a12t );
184 mn_ahead,
185 alpha11,
186 a12t, cs_A );
187
188 /*------------------------------------------------------------*/
189
190 }
191
192 return FLA_SUCCESS;
193}
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_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_invscalv.c:26

References bl1_ddots(), bl1_dgemv(), bl1_dinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_opd_var3()

FLA_Error FLA_Chol_u_opd_var3 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
123{
125 int i;
127
128 for ( i = 0; i < mn_A; ++i )
129 {
130 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
131 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
132 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
133
134 int mn_ahead = mn_A - i - 1;
135 int mn_behind = i;
136
137 /*------------------------------------------------------------*/
138
139 // r_val = FLA_Sqrt( alpha11 );
140 // if ( r_val != FLA_SUCCESS )
141 // return ( FLA_Obj_length( A00 ) + 1 );
143 if ( e_val != FLA_SUCCESS ) return mn_behind;
144
145 // FLA_Inv_scal_external( alpha11, a12t );
147 mn_ahead,
148 alpha11,
149 a12t, cs_A );
150
151 // FLA_Herc_external( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a12t, A22 );
153 mn_ahead,
154 buff_m1,
155 a12t, cs_A,
156 A22, rs_A, cs_A );
157
158 /*------------------------------------------------------------*/
159
160 }
161
162 return FLA_SUCCESS;
163}
void bl1_dsyr(uplo1_t uplo, int m, double *alpha, double *x, int incx, double *a, int a_rs, int a_cs)
Definition bl1_syr.c:57

References bl1_dinvscalv(), bl1_dsyr(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Chol_u_opt_var3().

◆ FLA_Chol_u_ops_var1()

FLA_Error FLA_Chol_u_ops_var1 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
79{
80 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
82 int i;
84
85 for ( i = 0; i < mn_A; ++i )
86 {
87 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
88 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
89 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
90
91 int mn_behind = i;
92
93 /*------------------------------------------------------------*/
94
95 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
100 A00, rs_A, cs_A,
101 a01, rs_A );
102
103 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
105 mn_behind,
106 buff_m1,
107 a01, rs_A,
108 a01, rs_A,
109 buff_1,
110 alpha11 );
111
112 // r_val = FLA_Sqrt( alpha11 );
113 // if ( r_val != FLA_SUCCESS )
114 // return ( FLA_Obj_length( A00 ) + 1 );
116 if ( e_val != FLA_SUCCESS ) return mn_behind;
117
118 /*------------------------------------------------------------*/
119
120 }
121
122 return FLA_SUCCESS;
123}
void bl1_sdots(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition bl1_dots.c:13
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13

References bl1_sdots(), bl1_strsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var1().

◆ FLA_Chol_u_ops_var2()

FLA_Error FLA_Chol_u_ops_var2 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
77{
78 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
80 int i;
82
83 for ( i = 0; i < mn_A; ++i )
84 {
85 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
87 float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
88 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
89
90 int mn_ahead = mn_A - i - 1;
91 int mn_behind = i;
92
93 /*------------------------------------------------------------*/
94
95 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
98 buff_m1,
99 a01, rs_A,
100 a01, rs_A,
101 buff_1,
102 alpha11 );
103
104 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
107 mn_behind,
108 mn_ahead,
109 buff_m1,
110 A02, rs_A, cs_A,
111 a01, rs_A,
112 buff_1,
113 a12t, cs_A );
114
115 // r_val = FLA_Sqrt( alpha11 );
116 // if ( r_val != FLA_SUCCESS )
117 // return ( FLA_Obj_length( A00 ) + 1 );
119 if ( e_val != FLA_SUCCESS ) return mn_behind;
120
121 // FLA_Inv_scal_external( alpha11, a12t );
123 mn_ahead,
124 alpha11,
125 a12t, cs_A );
126
127 /*------------------------------------------------------------*/
128
129 }
130
131 return FLA_SUCCESS;
132}
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_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_invscalv.c:13

References bl1_sdots(), bl1_sgemv(), bl1_sinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_ops_var3()

FLA_Error FLA_Chol_u_ops_var3 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
77{
79 int i;
81
82 for ( i = 0; i < mn_A; ++i )
83 {
84 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
85 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
86 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
87
88 int mn_ahead = mn_A - i - 1;
89 int mn_behind = i;
90
91 /*------------------------------------------------------------*/
92
93 // r_val = FLA_Sqrt( alpha11 );
94 // if ( r_val != FLA_SUCCESS )
95 // return ( FLA_Obj_length( A00 ) + 1 );
97 if ( e_val != FLA_SUCCESS ) return mn_behind;
98
99 // FLA_Inv_scal_external( alpha11, a12t );
101 mn_ahead,
102 alpha11,
103 a12t, cs_A );
104
105 // FLA_Herc_external( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a12t, A22 );
107 mn_ahead,
108 buff_m1,
109 a12t, cs_A,
110 A22, rs_A, cs_A );
111
112 /*------------------------------------------------------------*/
113
114 }
115
116 return FLA_SUCCESS;
117}
void bl1_ssyr(uplo1_t uplo, int m, float *alpha, float *x, int incx, float *a, int a_rs, int a_cs)
Definition bl1_syr.c:13

References bl1_sinvscalv(), bl1_ssyr(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Chol_u_opt_var3().

◆ FLA_Chol_u_opt_var1()

FLA_Error FLA_Chol_u_opt_var1 ( FLA_Obj  A)
16{
18 FLA_Datatype datatype;
19 int mn_A;
20 int rs_A, cs_A;
21
22 datatype = FLA_Obj_datatype( A );
23
27
28
29 switch ( datatype )
30 {
31 case FLA_FLOAT:
32 {
33 float* buff_A = FLA_FLOAT_PTR( A );
34
36 buff_A, rs_A, cs_A );
37
38 break;
39 }
40
41 case FLA_DOUBLE:
42 {
43 double* buff_A = FLA_DOUBLE_PTR( A );
44
46 buff_A, rs_A, cs_A );
47
48 break;
49 }
50
51 case FLA_COMPLEX:
52 {
54
56 buff_A, rs_A, cs_A );
57
58 break;
59 }
60
62 {
64
66 buff_A, rs_A, cs_A );
67
68 break;
69 }
70 }
71
72 return r_val;
73}
FLA_Error FLA_Chol_u_opc_var1(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var1.c:177
FLA_Error FLA_Chol_u_opz_var1(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var1.c:227
FLA_Error FLA_Chol_u_ops_var1(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var1.c:77
FLA_Error FLA_Chol_u_opd_var1(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var1.c:127
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_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_Chol_u_opc_var1(), FLA_Chol_u_opd_var1(), FLA_Chol_u_ops_var1(), FLA_Chol_u_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_opt_var2()

FLA_Error FLA_Chol_u_opt_var2 ( FLA_Obj  A)
14{
16 FLA_Datatype datatype;
17 int mn_A;
18 int rs_A, cs_A;
19
20 datatype = FLA_Obj_datatype( A );
21
25
26
27 switch ( datatype )
28 {
29 case FLA_FLOAT:
30 {
31 float* buff_A = FLA_FLOAT_PTR( A );
32
34 buff_A, rs_A, cs_A );
35
36 break;
37 }
38
39 case FLA_DOUBLE:
40 {
41 double* buff_A = FLA_DOUBLE_PTR( A );
42
44 buff_A, rs_A, cs_A );
45
46 break;
47 }
48
49 case FLA_COMPLEX:
50 {
52
54 buff_A, rs_A, cs_A );
55
56 break;
57 }
58
60 {
62
64 buff_A, rs_A, cs_A );
65
66 break;
67 }
68 }
69
70 return r_val;
71}
FLA_Error FLA_Chol_u_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var2.c:197
FLA_Error FLA_Chol_u_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var2.c:75
FLA_Error FLA_Chol_u_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var2.c:136
FLA_Error FLA_Chol_u_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var2.c:258

References FLA_Chol_u_opc_var2(), FLA_Chol_u_opd_var2(), FLA_Chol_u_ops_var2(), FLA_Chol_u_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_opt_var3()

FLA_Error FLA_Chol_u_opt_var3 ( FLA_Obj  A)
14{
16 FLA_Datatype datatype;
17 int mn_A;
18 int rs_A, cs_A;
19
20 datatype = FLA_Obj_datatype( A );
21
25
26
27 switch ( datatype )
28 {
29 case FLA_FLOAT:
30 {
31 float* buff_A = FLA_FLOAT_PTR( A );
32
34 buff_A, rs_A, cs_A );
35
36 break;
37 }
38
39 case FLA_DOUBLE:
40 {
41 double* buff_A = FLA_DOUBLE_PTR( A );
42
44 buff_A, rs_A, cs_A );
45
46 break;
47 }
48
49 case FLA_COMPLEX:
50 {
52
54 buff_A, rs_A, cs_A );
55
56 break;
57 }
58
60 {
62
64 buff_A, rs_A, cs_A );
65
66 break;
67 }
68 }
69
70 return r_val;
71}
FLA_Error FLA_Chol_u_opc_var3(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var3.c:167
FLA_Error FLA_Chol_u_opz_var3(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var3.c:214
FLA_Error FLA_Chol_u_ops_var3(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var3.c:75
FLA_Error FLA_Chol_u_opd_var3(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Chol_u_opt_var3.c:121

References FLA_Chol_u_opc_var3(), FLA_Chol_u_opd_var3(), FLA_Chol_u_ops_var3(), FLA_Chol_u_opz_var3(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_opz_var1()

FLA_Error FLA_Chol_u_opz_var1 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
229{
232 int i;
234
235 for ( i = 0; i < mn_A; ++i )
236 {
237 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
238 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
239 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
240
241 int mn_behind = i;
242
243 /*------------------------------------------------------------*/
244
245 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
249 mn_behind,
250 A00, rs_A, cs_A,
251 a01, rs_A );
252
253 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
255 mn_behind,
256 buff_m1,
257 a01, rs_A,
258 a01, rs_A,
259 buff_1,
260 alpha11 );
261
262 // r_val = FLA_Sqrt( alpha11 );
263 // if ( r_val != FLA_SUCCESS )
264 // return ( FLA_Obj_length( A00 ) + 1 );
266 if ( e_val != FLA_SUCCESS ) return mn_behind;
267
268 /*------------------------------------------------------------*/
269
270 }
271
272 return FLA_SUCCESS;
273}
void bl1_zdots(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition bl1_dots.c:56
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177

References bl1_zdots(), bl1_ztrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var1().

◆ FLA_Chol_u_opz_var2()

FLA_Error FLA_Chol_u_opz_var2 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
260{
263 int i;
265
266 for ( i = 0; i < mn_A; ++i )
267 {
268 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
269 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
270 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
271 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
272
273 int mn_ahead = mn_A - i - 1;
274 int mn_behind = i;
275
276 /*------------------------------------------------------------*/
277
278 // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
280 mn_behind,
281 buff_m1,
282 a01, rs_A,
283 a01, rs_A,
284 buff_1,
285 alpha11 );
286
287 // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
290 mn_behind,
291 mn_ahead,
292 buff_m1,
293 A02, rs_A, cs_A,
294 a01, rs_A,
295 buff_1,
296 a12t, cs_A );
297
298 // r_val = FLA_Sqrt( alpha11 );
299 // if ( r_val != FLA_SUCCESS )
300 // return ( FLA_Obj_length( A00 ) + 1 );
302 if ( e_val != FLA_SUCCESS ) return mn_behind;
303
304 // FLA_Inv_scal_external( alpha11, a12t );
306 mn_ahead,
307 alpha11,
308 a12t, cs_A );
309
310 /*------------------------------------------------------------*/
311
312 }
313
314 return FLA_SUCCESS;
315}
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_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_invscalv.c:78

References bl1_zdots(), bl1_zgemv(), bl1_zinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_opz_var3()

FLA_Error FLA_Chol_u_opz_var3 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
216{
218 int i;
220
221 for ( i = 0; i < mn_A; ++i )
222 {
223 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
224 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
225 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
226
227 int mn_ahead = mn_A - i - 1;
228 int mn_behind = i;
229
230 /*------------------------------------------------------------*/
231
232 // r_val = FLA_Sqrt( alpha11 );
233 // if ( r_val != FLA_SUCCESS )
234 // return ( FLA_Obj_length( A00 ) + 1 );
236 if ( e_val != FLA_SUCCESS ) return mn_behind;
237
238 // FLA_Inv_scal_external( alpha11, a12t );
240 mn_ahead,
241 alpha11,
242 a12t, cs_A );
243
244 // FLA_Herc_external( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a12t, A22 );
247 mn_ahead,
248 buff_m1,
249 a12t, cs_A,
250 A22, rs_A, cs_A );
251
252 /*------------------------------------------------------------*/
253
254 }
255
256 return FLA_SUCCESS;
257}
void bl1_zher(uplo1_t uplo, conj1_t conj, int m, double *alpha, dcomplex *x, int incx, dcomplex *a, int a_rs, int a_cs)
Definition bl1_her.c:101

References bl1_zher(), bl1_zinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Chol_u_opt_var3().

◆ FLA_Chol_u_unb_var1()

FLA_Error FLA_Chol_u_unb_var1 ( FLA_Obj  A)
16{
19 A20, a21, A22;
20
21 int r_val = FLA_SUCCESS;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27
28 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
29 /* ************* */ /* ************************** */
30 &a10t, /**/ &alpha11, &a12t,
31 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
32 1, 1, FLA_BR );
33
34 /*------------------------------------------------------------*/
35
36 // a01 = inv( tril( A00 )' ) * a01
38
39 // alpha11 = alpha11 - a01' * a01
41
42 // alpha11 = sqrt( alpha11 )
44
45 if ( r_val != FLA_SUCCESS )
46 return ( FLA_Obj_length( A00 ) );
47
48 /*------------------------------------------------------------*/
49
50 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
51 a10t, alpha11, /**/ a12t,
52 /* ************** */ /* ************************ */
53 &ABL, /**/ &ABR, A20, a21, /**/ A22,
54 FLA_TL );
55 }
56
57 return r_val;
58}
FLA_Error FLA_Dotcs_external(FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj beta, FLA_Obj rho)
Definition FLA_Dotcs_external.c:13
FLA_Error FLA_Trsv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition FLA_Trsv_external.c:13
FLA_Error FLA_Sqrt(FLA_Obj alpha)
Definition FLA_Sqrt.c:13

References FLA_Cont_with_3x3_to_2x2(), FLA_Dotcs_external(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sqrt(), FLA_Trsv_external(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_unb_var2()

FLA_Error FLA_Chol_u_unb_var2 ( FLA_Obj  A)
16{
19 A20, a21, A22;
20
21 int r_val = FLA_SUCCESS;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27
28 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
29 /* ************* */ /* ************************** */
30 &a10t, /**/ &alpha11, &a12t,
31 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
32 1, 1, FLA_BR );
33
34 /*------------------------------------------------------------*/
35
36 // alpha11 = alpha11 - a01' * a01
38
39 // a12t = a12t - a01' * A02
40 // a12t' = a12t' - A02' * conj(a01)
42
43 // alpha11 = sqrt( alpha11 )
45
46 if ( r_val != FLA_SUCCESS )
47 return ( FLA_Obj_length( A00 ) );
48
49 // a12t = a12t / alpha11
51
52 /*------------------------------------------------------------*/
53
54 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
55 a10t, alpha11, /**/ a12t,
56 /* ************** */ /* ************************ */
57 &ABL, /**/ &ABR, A20, a21, /**/ A22,
58 FLA_TL );
59 }
60
61 return r_val;
62}
FLA_Error FLA_Inv_scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_scal_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

References FLA_Cont_with_3x3_to_2x2(), FLA_Dotcs_external(), FLA_Gemvc_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sqrt(), and i.

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_unb_var3()

FLA_Error FLA_Chol_u_unb_var3 ( FLA_Obj  A)
16{
19 A20, a21, A22;
20
21 int value = 0;
22
23 FLA_Part_2x2( A, &ATL, &ATR,
24 &ABL, &ABR, 0, 0, FLA_TL );
25
26 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27
28 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
29 /* ************* */ /* ************************** */
30 &a10t, /**/ &alpha11, &a12t,
31 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
32 1, 1, FLA_BR );
33
34 /*------------------------------------------------------------*/
35
36 // alpha11 = sqrt( alpha11 )
38
39 if ( value != FLA_SUCCESS )
40 return ( FLA_Obj_length( A00 ) );
41
42 // a12t = a12t / alpha11
44
45 // A22 = A22 - a12t' * a12t
47
48 /*------------------------------------------------------------*/
49
50 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
51 a10t, alpha11, /**/ a12t,
52 /* ************** */ /* ************************ */
53 &ABL, /**/ &ABR, A20, a21, /**/ A22,
54 FLA_TL );
55 }
56
57 return value;
58}
FLA_Error FLA_Herc_external(FLA_Uplo uplo, FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj A)
Definition FLA_Herc_external.c:13

References FLA_Cont_with_3x3_to_2x2(), FLA_Herc_external(), FLA_Inv_scal_external(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Sqrt(), and i.

Referenced by FLA_Chol_u().