libflame revision_anchor
Functions
FLA_Trinv_un.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Trinv_un_blk_var1 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_un_blk_var2 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_un_blk_var3 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_un_blk_var4 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_un_unb_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_unb_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_unb_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_unb_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_ops_var1 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opd_var1 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opc_var1 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opz_var1 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_ops_var2 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opd_var2 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opc_var2 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opz_var2 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opt_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_ops_var3 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opd_var3 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opc_var3 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opz_var3 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_ops_var4 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opd_var4 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opc_var4 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opz_var4 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_un_blk_var1()

FLA_Error FLA_Trinv_un_blk_var1 ( FLA_Obj  A,
fla_trinv_t cntl 
)
16{
17 FLA_Obj ATL, ATR, A00, A01, A02,
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
21 dim_t b;
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 // A01 = A00 * A01;
40 FLA_ONE, A00, A01,
41 FLA_Cntl_sub_trmm( cntl ) );
42
43 // A01 = -A01 / triu( A11 );
46 FLA_Cntl_sub_trsm1( cntl ) );
47
48 // A11 = inv( A11 );
50 FLA_Cntl_sub_trinv( cntl ) );
51
52 /*------------------------------------------------------------*/
53
54 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
55 A10, A11, /**/ A12,
56 /* ************** */ /* ****************** */
57 &ABL, /**/ &ABR, A20, A21, /**/ A22,
58 FLA_TL );
59
60 }
61
62 return FLA_SUCCESS;
63}
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition FLA_Trinv_internal.c:16
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition FLA_Trmm_internal.c:16
FLA_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_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), FLA_Trmm_internal(), FLA_Trsm_internal(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_blk_var2()

FLA_Error FLA_Trinv_un_blk_var2 ( FLA_Obj  A,
fla_trinv_t cntl 
)
16{
17 FLA_Obj ATL, ATR, A00, A01, A02,
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
21 dim_t b;
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 // A12 = A12 / triu( A22 );
40 FLA_ONE, A22, A12,
41 FLA_Cntl_sub_trsm1( cntl ) );
42
43 // A12 = -triu( A11 ) \ A12;
46 FLA_Cntl_sub_trsm2( cntl ) );
47
48 // A11 = inv( A11 );
50 FLA_Cntl_sub_trinv( cntl ) );
51
52 /*------------------------------------------------------------*/
53
54 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
55 A10, A11, /**/ A12,
56 /* ************** */ /* ****************** */
57 &ABL, /**/ &ABR, A20, A21, /**/ A22,
58 FLA_TL );
59
60 }
61
62 return FLA_SUCCESS;
63}

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

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_blk_var3()

FLA_Error FLA_Trinv_un_blk_var3 ( FLA_Obj  A,
fla_trinv_t cntl 
)
14{
15 FLA_Obj ATL, ATR, A00, A01, A02,
16 ABL, ABR, A10, A11, A12,
17 A20, A21, A22;
18
19 dim_t b;
20
21 FLA_Part_2x2( A, &ATL, &ATR,
22 &ABL, &ABR, 0, 0, FLA_TL );
23
24 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25
27
28 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
29 /* ************* */ /* ******************** */
30 &A10, /**/ &A11, &A12,
31 ABL, /**/ ABR, &A20, /**/ &A21, &A22,
32 b, b, FLA_BR );
33
34 /*------------------------------------------------------------*/
35
36 // A12 = -triu( A11 ) \ A12;
39 FLA_Cntl_sub_trsm1( cntl ) );
40
41 // A02 = A01 * A12 + A02;
44 FLA_Cntl_sub_gemm( cntl ) );
45
46 // A01 = A01 / triu( A11 );
48 FLA_ONE, A11, A01,
49 FLA_Cntl_sub_trsm2( cntl ) );
50
51 // A11 = inv( A11 );
53 FLA_Cntl_sub_trinv( cntl ) );
54
55 /*------------------------------------------------------------*/
56
57 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
58 A10, A11, /**/ A12,
59 /* ************** */ /* ****************** */
60 &ABL, /**/ &ABR, A20, A21, /**/ A22,
61 FLA_TL );
62
63 }
64
65 return FLA_SUCCESS;
66}
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_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), FLA_Trsm_internal(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_blk_var4()

FLA_Error FLA_Trinv_un_blk_var4 ( FLA_Obj  A,
fla_trinv_t cntl 
)
16{
17 FLA_Obj ATL, ATR, A00, A01, A02,
18 ABL, ABR, A10, A11, A12,
19 A20, A21, A22;
20
21 dim_t b;
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 // A12 = -A12 / triu( A22 );
41 FLA_Cntl_sub_trsm1( cntl ) );
42
43 // A02 = -A01 * A12 + A02;
46 FLA_Cntl_sub_gemm( cntl ) );
47
48 // A01 = A00 * A01;
50 FLA_ONE, A00, A01,
51 FLA_Cntl_sub_trmm( cntl ) );
52
53 // A11 = inv( A11 );
55 FLA_Cntl_sub_trinv( cntl ) );
56
57 /*------------------------------------------------------------*/
58
59 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
60 A10, A11, /**/ A12,
61 /* ************** */ /* ****************** */
62 &ABL, /**/ &ABR, A20, A21, /**/ A22,
63 FLA_TL );
64
65 }
66
67 return FLA_SUCCESS;
68}

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trinv_internal(), FLA_Trmm_internal(), FLA_Trsm_internal(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opc_var1()

FLA_Error FLA_Trinv_un_opc_var1 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
168{
170 int i;
171
172 for ( i = 0; i < mn_A; ++i )
173 {
174 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
175 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
176 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
177
178 int mn_behind = i;
179
180 /*------------------------------------------------------------*/
181
182 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
186 mn_behind,
187 A00, rs_A, cs_A,
188 a01, rs_A );
189
190 // FLA_Scal_external( FLA_MINUS_ONE, a01 );
191 // FLA_Inv_scal_external( alpha11, a01 );
194 mn_behind,
195 &alpha11_m1,
196 a01, rs_A );
197
198 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
200 alpha11 );
201
202 /*------------------------------------------------------------*/
203
204 }
205
206 return FLA_SUCCESS;
207}
void bl1_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_invscalv.c:52
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trmv.c:99
void bl1_cinverts(conj1_t conj, scomplex *alpha)
Definition bl1_inverts.c:27
@ 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_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_cinverts(), bl1_cinvscalv(), bl1_ctrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var1().

◆ FLA_Trinv_un_opc_var2()

FLA_Error FLA_Trinv_un_opc_var2 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
168{
170 int i;
171
172 for ( i = 0; i < mn_A; ++i )
173 {
174 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
175 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
176 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
177
178 int mn_ahead = mn_A - i - 1;
179
180 /*------------------------------------------------------------*/
181
182 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
186 mn_ahead,
187 A22, rs_A, cs_A,
188 a12t, cs_A );
189
190 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
191 // FLA_Inv_scal_external( alpha11, a12t );
194 mn_ahead,
195 &alpha11_m1,
196 a12t, cs_A );
197
198 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
200 alpha11 );
201
202 /*------------------------------------------------------------*/
203
204 }
205
206 return FLA_SUCCESS;
207}
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_TRANSPOSE
Definition blis_type_defs.h:55

References bl1_cinverts(), bl1_cinvscalv(), bl1_ctrsv(), BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var2().

◆ FLA_Trinv_un_opc_var3()

FLA_Error FLA_Trinv_un_opc_var3 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
188{
191 int i;
192
193 for ( i = 0; i < mn_A; ++i )
194 {
195 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
196 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
197 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
198 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
199
200 int mn_ahead = mn_A - i - 1;
201 int mn_behind = i;
202
203 /*------------------------------------------------------------*/
204
205 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
206 // FLA_Inv_scal_external( alpha11, a12t );
209 mn_ahead,
210 &alpha11_m1,
211 a12t, cs_A );
212
213 // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
216 mn_behind,
217 mn_ahead,
218 buff_1,
219 a01, rs_A,
220 a12t, cs_A,
221 A02, rs_A, cs_A );
222
223 // FLA_Inv_scal_external( alpha11, a01 );
225 mn_behind,
226 alpha11,
227 a01, rs_A );
228
229 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
231 alpha11 );
232
233 /*------------------------------------------------------------*/
234
235 }
236
237 return FLA_SUCCESS;
238}
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

References bl1_cger(), bl1_cinverts(), bl1_cinvscalv(), BLIS1_NO_CONJUGATE, FLA_ONE, and i.

Referenced by FLA_Trinv_un_opt_var3().

◆ FLA_Trinv_un_opc_var4()

FLA_Error FLA_Trinv_un_opc_var4 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
206{
208 int i;
209
210 for ( i = 0; i < mn_A; ++i )
211 {
212 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
213 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
214 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
215 scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
216 scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
217 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
218
219 int mn_ahead = mn_A - i - 1;
220 int mn_behind = i;
221
222 /*------------------------------------------------------------*/
223
224 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
225 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
227 mn_ahead,
228 buff_m1,
229 a12t, cs_A );
233 mn_ahead,
234 A22, rs_A, cs_A,
235 a12t, cs_A );
236
237 // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
240 mn_behind,
241 mn_ahead,
242 buff_m1,
243 a01, rs_A,
244 a12t, cs_A,
245 A02, rs_A, cs_A );
246
247 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
251 mn_behind,
252 A00, rs_A, cs_A,
253 a01, rs_A );
254
255 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
257 alpha11 );
258
259 /*------------------------------------------------------------*/
260
261 }
262
263 return FLA_SUCCESS;
264}
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_scalv.c:46

References bl1_cger(), bl1_cinverts(), bl1_cscalv(), bl1_ctrmv(), bl1_ctrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_opd_var1()

FLA_Error FLA_Trinv_un_opd_var1 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
123{
124 double alpha11_m1;
125 int i;
126
127 for ( i = 0; i < mn_A; ++i )
128 {
129 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
130 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
131 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
132
133 int mn_behind = i;
134
135 /*------------------------------------------------------------*/
136
137 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
141 mn_behind,
142 A00, rs_A, cs_A,
143 a01, rs_A );
144
145 // FLA_Scal_external( FLA_MINUS_ONE, a01 );
146 // FLA_Inv_scal_external( alpha11, a01 );
149 mn_behind,
150 &alpha11_m1,
151 a01, rs_A );
152
153 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
155 alpha11 );
156
157 /*------------------------------------------------------------*/
158
159 }
160
161 return FLA_SUCCESS;
162}
void bl1_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_invscalv.c:26
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trmv.c:56
void bl1_dinverts(conj1_t conj, double *alpha)
Definition bl1_inverts.c:20

References bl1_dinverts(), bl1_dinvscalv(), bl1_dtrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var1().

◆ FLA_Trinv_un_opd_var2()

FLA_Error FLA_Trinv_un_opd_var2 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
123{
124 double alpha11_m1;
125 int i;
126
127 for ( i = 0; i < mn_A; ++i )
128 {
129 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
130 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
131 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
132
133 int mn_ahead = mn_A - i - 1;
134
135 /*------------------------------------------------------------*/
136
137 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
141 mn_ahead,
142 A22, rs_A, cs_A,
143 a12t, cs_A );
144
145 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
146 // FLA_Inv_scal_external( alpha11, a12t );
149 mn_ahead,
150 &alpha11_m1,
151 a12t, cs_A );
152
153 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
155 alpha11 );
156
157 /*------------------------------------------------------------*/
158
159 }
160
161 return FLA_SUCCESS;
162}
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_dinverts(), bl1_dinvscalv(), bl1_dtrsv(), BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var2().

◆ FLA_Trinv_un_opd_var3()

FLA_Error FLA_Trinv_un_opd_var3 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
132{
133 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
134 double alpha11_m1;
135 int i;
136
137 for ( i = 0; i < mn_A; ++i )
138 {
139 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
140 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
141 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
142 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
143
144 int mn_ahead = mn_A - i - 1;
145 int mn_behind = i;
146
147 /*------------------------------------------------------------*/
148
149 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
150 // FLA_Inv_scal_external( alpha11, a12t );
153 mn_ahead,
154 &alpha11_m1,
155 a12t, cs_A );
156
157 // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
160 mn_behind,
161 mn_ahead,
162 buff_1,
163 a01, rs_A,
164 a12t, cs_A,
165 A02, rs_A, cs_A );
166
167 // FLA_Inv_scal_external( alpha11, a01 );
169 mn_behind,
170 alpha11,
171 a01, rs_A );
172
173 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
175 alpha11 );
176
177 /*------------------------------------------------------------*/
178
179 }
180
181 return FLA_SUCCESS;
182}
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_dger(), bl1_dinverts(), bl1_dinvscalv(), BLIS1_NO_CONJUGATE, FLA_ONE, and i.

Referenced by FLA_Trinv_un_opt_var3().

◆ FLA_Trinv_un_opd_var4()

FLA_Error FLA_Trinv_un_opd_var4 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
142{
144 int i;
145
146 for ( i = 0; i < mn_A; ++i )
147 {
148 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
149 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
150 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
151 double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
152 double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
153 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
154
155 int mn_ahead = mn_A - i - 1;
156 int mn_behind = i;
157
158 /*------------------------------------------------------------*/
159
160 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
161 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
163 mn_ahead,
164 buff_m1,
165 a12t, cs_A );
169 mn_ahead,
170 A22, rs_A, cs_A,
171 a12t, cs_A );
172
173 // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
176 mn_behind,
177 mn_ahead,
178 buff_m1,
179 a01, rs_A,
180 a12t, cs_A,
181 A02, rs_A, cs_A );
182
183 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
187 mn_behind,
188 A00, rs_A, cs_A,
189 a01, rs_A );
190
191 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
193 alpha11 );
194
195 /*------------------------------------------------------------*/
196
197 }
198
199 return FLA_SUCCESS;
200}
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24

References bl1_dger(), bl1_dinverts(), bl1_dscalv(), bl1_dtrmv(), bl1_dtrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_ops_var1()

FLA_Error FLA_Trinv_un_ops_var1 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
78{
79 float alpha11_m1;
80 int i;
81
82 for ( i = 0; i < mn_A; ++i )
83 {
84 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
85 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
87
88 int mn_behind = i;
89
90 /*------------------------------------------------------------*/
91
92 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
97 A00, rs_A, cs_A,
98 a01, rs_A );
99
100 // FLA_Scal_external( FLA_MINUS_ONE, a01 );
101 // FLA_Inv_scal_external( alpha11, a01 );
104 mn_behind,
105 &alpha11_m1,
106 a01, rs_A );
107
108 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
110 alpha11 );
111
112 /*------------------------------------------------------------*/
113
114 }
115
116 return FLA_SUCCESS;
117}
void bl1_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_invscalv.c:13
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trmv.c:13
void bl1_sinverts(conj1_t conj, float *alpha)
Definition bl1_inverts.c:13

References bl1_sinverts(), bl1_sinvscalv(), bl1_strmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var1().

◆ FLA_Trinv_un_ops_var2()

FLA_Error FLA_Trinv_un_ops_var2 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
78{
79 float alpha11_m1;
80 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
90 /*------------------------------------------------------------*/
91
92 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
97 A22, rs_A, cs_A,
98 a12t, cs_A );
99
100 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
101 // FLA_Inv_scal_external( alpha11, a12t );
104 mn_ahead,
105 &alpha11_m1,
106 a12t, cs_A );
107
108 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
110 alpha11 );
111
112 /*------------------------------------------------------------*/
113
114 }
115
116 return FLA_SUCCESS;
117}
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_sinverts(), bl1_sinvscalv(), bl1_strsv(), BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var2().

◆ FLA_Trinv_un_ops_var3()

FLA_Error FLA_Trinv_un_ops_var3 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
76{
77 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
78 float alpha11_m1;
79 int i;
80
81 for ( i = 0; i < mn_A; ++i )
82 {
83 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
84 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
85 float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
86 float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
87
88 int mn_ahead = mn_A - i - 1;
89 int mn_behind = i;
90
91 /*------------------------------------------------------------*/
92
93 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
94 // FLA_Inv_scal_external( alpha11, a12t );
99 a12t, cs_A );
100
101 // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
104 mn_behind,
105 mn_ahead,
106 buff_1,
107 a01, rs_A,
108 a12t, cs_A,
109 A02, rs_A, cs_A );
110
111 // FLA_Inv_scal_external( alpha11, a01 );
113 mn_behind,
114 alpha11,
115 a01, rs_A );
116
117 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
119 alpha11 );
120
121 /*------------------------------------------------------------*/
122
123 }
124
125 return FLA_SUCCESS;
126}
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_sger(), bl1_sinverts(), bl1_sinvscalv(), BLIS1_NO_CONJUGATE, FLA_ONE, and i.

Referenced by FLA_Trinv_un_opt_var3().

◆ FLA_Trinv_un_ops_var4()

FLA_Error FLA_Trinv_un_ops_var4 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
78{
80 int i;
81
82 for ( i = 0; i < mn_A; ++i )
83 {
84 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
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 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
90
91 int mn_ahead = mn_A - i - 1;
92 int mn_behind = i;
93
94 /*------------------------------------------------------------*/
95
96 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
97 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
100 buff_m1,
101 a12t, cs_A );
105 mn_ahead,
106 A22, rs_A, cs_A,
107 a12t, cs_A );
108
109 // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
112 mn_behind,
113 mn_ahead,
114 buff_m1,
115 a01, rs_A,
116 a12t, cs_A,
117 A02, rs_A, cs_A );
118
119 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
123 mn_behind,
124 A00, rs_A, cs_A,
125 a01, rs_A );
126
127 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
129 alpha11 );
130
131 /*------------------------------------------------------------*/
132
133 }
134
135 return FLA_SUCCESS;
136}
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13

References bl1_sger(), bl1_sinverts(), bl1_sscalv(), bl1_strmv(), bl1_strsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_opt_var1()

FLA_Error FLA_Trinv_un_opt_var1 ( FLA_Obj  A)
16{
17 FLA_Datatype datatype;
18 int mn_A;
19 int rs_A, cs_A;
20
21 datatype = FLA_Obj_datatype( A );
22
26
27
28 switch ( datatype )
29 {
30 case FLA_FLOAT:
31 {
32 float* buff_A = FLA_FLOAT_PTR( A );
33
35 buff_A, rs_A, cs_A );
36
37 break;
38 }
39
40 case FLA_DOUBLE:
41 {
42 double* buff_A = FLA_DOUBLE_PTR( A );
43
45 buff_A, rs_A, cs_A );
46
47 break;
48 }
49
50 case FLA_COMPLEX:
51 {
53
55 buff_A, rs_A, cs_A );
56
57 break;
58 }
59
61 {
63
65 buff_A, rs_A, cs_A );
66
67 break;
68 }
69 }
70
71 return FLA_SUCCESS;
72}
FLA_Error FLA_Trinv_un_opc_var1(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var1.c:166
FLA_Error FLA_Trinv_un_opd_var1(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var1.c:121
FLA_Error FLA_Trinv_un_ops_var1(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var1.c:76
FLA_Error FLA_Trinv_un_opz_var1(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var1.c:211
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_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_un_opc_var1(), FLA_Trinv_un_opd_var1(), FLA_Trinv_un_ops_var1(), FLA_Trinv_un_opz_var1(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opt_var2()

FLA_Error FLA_Trinv_un_opt_var2 ( FLA_Obj  A)
16{
17 FLA_Datatype datatype;
18 int mn_A;
19 int rs_A, cs_A;
20
21 datatype = FLA_Obj_datatype( A );
22
26
27
28 switch ( datatype )
29 {
30 case FLA_FLOAT:
31 {
32 float* buff_A = FLA_FLOAT_PTR( A );
33
35 buff_A, rs_A, cs_A );
36
37 break;
38 }
39
40 case FLA_DOUBLE:
41 {
42 double* buff_A = FLA_DOUBLE_PTR( A );
43
45 buff_A, rs_A, cs_A );
46
47 break;
48 }
49
50 case FLA_COMPLEX:
51 {
53
55 buff_A, rs_A, cs_A );
56
57 break;
58 }
59
61 {
63
65 buff_A, rs_A, cs_A );
66
67 break;
68 }
69 }
70
71 return FLA_SUCCESS;
72}
FLA_Error FLA_Trinv_un_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var2.c:211
FLA_Error FLA_Trinv_un_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var2.c:166
FLA_Error FLA_Trinv_un_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var2.c:121
FLA_Error FLA_Trinv_un_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var2.c:76

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_un_opc_var2(), FLA_Trinv_un_opd_var2(), FLA_Trinv_un_ops_var2(), FLA_Trinv_un_opz_var2(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opt_var3()

FLA_Error FLA_Trinv_un_opt_var3 ( FLA_Obj  A)
14{
15 FLA_Datatype datatype;
16 int mn_A;
17 int rs_A, cs_A;
18
19 datatype = FLA_Obj_datatype( A );
20
24
25
26 switch ( datatype )
27 {
28 case FLA_FLOAT:
29 {
30 float* buff_A = FLA_FLOAT_PTR( A );
31
33 buff_A, rs_A, cs_A );
34
35 break;
36 }
37
38 case FLA_DOUBLE:
39 {
40 double* buff_A = FLA_DOUBLE_PTR( A );
41
43 buff_A, rs_A, cs_A );
44
45 break;
46 }
47
48 case FLA_COMPLEX:
49 {
51
53 buff_A, rs_A, cs_A );
54
55 break;
56 }
57
59 {
61
63 buff_A, rs_A, cs_A );
64
65 break;
66 }
67 }
68
69 return FLA_SUCCESS;
70}
FLA_Error FLA_Trinv_un_opz_var3(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var3.c:242
FLA_Error FLA_Trinv_un_opd_var3(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var3.c:130
FLA_Error FLA_Trinv_un_ops_var3(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var3.c:74
FLA_Error FLA_Trinv_un_opc_var3(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var3.c:186

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_un_opc_var3(), FLA_Trinv_un_opd_var3(), FLA_Trinv_un_ops_var3(), FLA_Trinv_un_opz_var3(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opt_var4()

FLA_Error FLA_Trinv_un_opt_var4 ( FLA_Obj  A)
16{
17 FLA_Datatype datatype;
18 int mn_A;
19 int rs_A, cs_A;
20
21 datatype = FLA_Obj_datatype( A );
22
26
27
28 switch ( datatype )
29 {
30 case FLA_FLOAT:
31 {
32 float* buff_A = FLA_FLOAT_PTR( A );
33
35 buff_A, rs_A, cs_A );
36
37 break;
38 }
39
40 case FLA_DOUBLE:
41 {
42 double* buff_A = FLA_DOUBLE_PTR( A );
43
45 buff_A, rs_A, cs_A );
46
47 break;
48 }
49
50 case FLA_COMPLEX:
51 {
53
55 buff_A, rs_A, cs_A );
56
57 break;
58 }
59
61 {
63
65 buff_A, rs_A, cs_A );
66
67 break;
68 }
69 }
70
71 return FLA_SUCCESS;
72}
FLA_Error FLA_Trinv_un_opz_var4(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var4.c:268
FLA_Error FLA_Trinv_un_opd_var4(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var4.c:140
FLA_Error FLA_Trinv_un_opc_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var4.c:204
FLA_Error FLA_Trinv_un_ops_var4(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_un_opt_var4.c:76

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_un_opc_var4(), FLA_Trinv_un_opd_var4(), FLA_Trinv_un_ops_var4(), FLA_Trinv_un_opz_var4(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opz_var1()

FLA_Error FLA_Trinv_un_opz_var1 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
213{
215 int i;
216
217 for ( i = 0; i < mn_A; ++i )
218 {
219 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
220 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
221 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
222
223 int mn_behind = i;
224
225 /*------------------------------------------------------------*/
226
227 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
231 mn_behind,
232 A00, rs_A, cs_A,
233 a01, rs_A );
234
235 // FLA_Scal_external( FLA_MINUS_ONE, a01 );
236 // FLA_Inv_scal_external( alpha11, a01 );
239 mn_behind,
240 &alpha11_m1,
241 a01, rs_A );
242
243 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
245 alpha11 );
246
247 /*------------------------------------------------------------*/
248
249 }
250
251 return FLA_SUCCESS;
252}
void bl1_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_invscalv.c:78
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trmv.c:177
void bl1_zinverts(conj1_t conj, dcomplex *alpha)
Definition bl1_inverts.c:44

References bl1_zinverts(), bl1_zinvscalv(), bl1_ztrmv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var1().

◆ FLA_Trinv_un_opz_var2()

FLA_Error FLA_Trinv_un_opz_var2 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
213{
215 int i;
216
217 for ( i = 0; i < mn_A; ++i )
218 {
219 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
220 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
221 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
222
223 int mn_ahead = mn_A - i - 1;
224
225 /*------------------------------------------------------------*/
226
227 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
231 mn_ahead,
232 A22, rs_A, cs_A,
233 a12t, cs_A );
234
235 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
236 // FLA_Inv_scal_external( alpha11, a12t );
239 mn_ahead,
240 &alpha11_m1,
241 a12t, cs_A );
242
243 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
245 alpha11 );
246
247 /*------------------------------------------------------------*/
248
249 }
250
251 return FLA_SUCCESS;
252}
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_zinverts(), bl1_zinvscalv(), bl1_ztrsv(), BLIS1_NO_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, and i.

Referenced by FLA_Trinv_un_opt_var2().

◆ FLA_Trinv_un_opz_var3()

FLA_Error FLA_Trinv_un_opz_var3 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
244{
247 int i;
248
249 for ( i = 0; i < mn_A; ++i )
250 {
251 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
252 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
253 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
254 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
255
256 int mn_ahead = mn_A - i - 1;
257 int mn_behind = i;
258
259 /*------------------------------------------------------------*/
260
261 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
262 // FLA_Inv_scal_external( alpha11, a12t );
265 mn_ahead,
266 &alpha11_m1,
267 a12t, cs_A );
268
269 // FLA_Ger_external( FLA_ONE, a01, a12t, A02 );
272 mn_behind,
273 mn_ahead,
274 buff_1,
275 a01, rs_A,
276 a12t, cs_A,
277 A02, rs_A, cs_A );
278
279 // FLA_Inv_scal_external( alpha11, a01 );
281 mn_behind,
282 alpha11,
283 a01, rs_A );
284
285 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
287 alpha11 );
288
289 /*------------------------------------------------------------*/
290
291 }
292
293 return FLA_SUCCESS;
294}
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_zger(), bl1_zinverts(), bl1_zinvscalv(), BLIS1_NO_CONJUGATE, FLA_ONE, and i.

Referenced by FLA_Trinv_un_opt_var3().

◆ FLA_Trinv_un_opz_var4()

FLA_Error FLA_Trinv_un_opz_var4 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
270{
272 int i;
273
274 for ( i = 0; i < mn_A; ++i )
275 {
276 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
277 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
278 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
279 dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
280 dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
281 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
282
283 int mn_ahead = mn_A - i - 1;
284 int mn_behind = i;
285
286 /*------------------------------------------------------------*/
287
288 // FLA_Scal_external( FLA_MINUS_ONE, a12t );
289 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
291 mn_ahead,
292 buff_m1,
293 a12t, cs_A );
297 mn_ahead,
298 A22, rs_A, cs_A,
299 a12t, cs_A );
300
301 // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
304 mn_behind,
305 mn_ahead,
306 buff_m1,
307 a01, rs_A,
308 a12t, cs_A,
309 A02, rs_A, cs_A );
310
311 // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
315 mn_behind,
316 A00, rs_A, cs_A,
317 a01, rs_A );
318
319 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
321 alpha11 );
322
323 /*------------------------------------------------------------*/
324
325 }
326
327 return FLA_SUCCESS;
328}
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72

References bl1_zger(), bl1_zinverts(), bl1_zscalv(), bl1_ztrmv(), bl1_ztrsv(), BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_unb_var1()

FLA_Error FLA_Trinv_un_unb_var1 ( FLA_Obj  A)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Part_2x2( A, &ATL, &ATR,
22 &ABL, &ABR, 0, 0, FLA_TL );
23
24 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25
26 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27 /* ************* */ /* ************************** */
28 &a10t, /**/ &alpha11, &a12t,
29 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30 1, 1, FLA_BR );
31
32 /*------------------------------------------------------------*/
33
34 // a01 = triu( A00 ) * a01;
36
37 // a01 = a01 / alpha11;
40
41 // alpha11 = 1.0 / alpha11;
43
44 /*------------------------------------------------------------*/
45
46 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
47 a10t, alpha11, /**/ a12t,
48 /* ************** */ /* ************************ */
49 &ABL, /**/ &ABR, A20, a21, /**/ A22,
50 FLA_TL );
51
52 }
53
54 return FLA_SUCCESS;
55}
FLA_Error FLA_Inv_scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_scal_external.c:13
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Scal_external.c:13
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition FLA_Trmv_external.c:13
FLA_Error FLA_Invert(FLA_Conj conj, FLA_Obj x)
Definition FLA_Invert.c:13

References FLA_Cont_with_3x3_to_2x2(), FLA_Inv_scal_external(), FLA_Invert(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trmv_external(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_unb_var2()

FLA_Error FLA_Trinv_un_unb_var2 ( FLA_Obj  A)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Part_2x2( A, &ATL, &ATR,
22 &ABL, &ABR, 0, 0, FLA_TL );
23
24 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25
26 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27 /* ************* */ /* ************************** */
28 &a10t, /**/ &alpha11, &a12t,
29 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30 1, 1, FLA_BR );
31
32 /*------------------------------------------------------------*/
33
34 // a12t = a12t / triu( A22' );
36
37 // a12t = a12t / alpha11;
40
41 // alpha11 = 1.0 / alpha11;
43
44 /*------------------------------------------------------------*/
45
46 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
47 a10t, alpha11, /**/ a12t,
48 /* ************** */ /* ************************ */
49 &ABL, /**/ &ABR, A20, a21, /**/ A22,
50 FLA_TL );
51
52 }
53
54 return FLA_SUCCESS;
55}
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

References FLA_Cont_with_3x3_to_2x2(), FLA_Inv_scal_external(), FLA_Invert(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trsv_external(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_unb_var3()

FLA_Error FLA_Trinv_un_unb_var3 ( FLA_Obj  A)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Part_2x2( A, &ATL, &ATR,
22 &ABL, &ABR, 0, 0, FLA_TL );
23
24 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25
26 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27 /* ************* */ /* ************************** */
28 &a10t, /**/ &alpha11, &a12t,
29 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30 1, 1, FLA_BR );
31
32 /*------------------------------------------------------------*/
33
34 // a12t = -a12t / alpha11;
37
38 // A02 = a01 * a12t + A02;
40
41 // a01 = a01 / alpha11;
43
44 // alpha11 = 1.0 / alpha11;
46
47 /*------------------------------------------------------------*/
48
49 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
50 a10t, alpha11, /**/ a12t,
51 /* ************** */ /* ************************ */
52 &ABL, /**/ &ABR, A20, a21, /**/ A22,
53 FLA_TL );
54
55 }
56
57 return FLA_SUCCESS;
58}
FLA_Error FLA_Ger_external(FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj A)
Definition FLA_Ger_external.c:13

References FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_Inv_scal_external(), FLA_Invert(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and i.

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_unb_var4()

FLA_Error FLA_Trinv_un_unb_var4 ( FLA_Obj  A)
16{
17 FLA_Obj ATL, ATR, A00, a01, A02,
19 A20, a21, A22;
20
21 FLA_Part_2x2( A, &ATL, &ATR,
22 &ABL, &ABR, 0, 0, FLA_TL );
23
24 while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25
26 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27 /* ************* */ /* ************************** */
28 &a10t, /**/ &alpha11, &a12t,
29 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30 1, 1, FLA_BR );
31
32 /*------------------------------------------------------------*/
33
34 // a12t = a12t / triu( A22' );
37
38 // A02 = -a01 * a12t + A02;
40
41 // a01 = triu( A00 ) * a01;
43
44 // alpha11 = 1.0 / alpha11;
46
47 /*------------------------------------------------------------*/
48
49 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
50 a10t, alpha11, /**/ a12t,
51 /* ************** */ /* ************************ */
52 &ABL, /**/ &ABR, A20, a21, /**/ A22,
53 FLA_TL );
54
55 }
56
57 return FLA_SUCCESS;
58}

References FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), FLA_Invert(), FLA_MINUS_ONE, FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), FLA_Trmv_external(), FLA_Trsv_external(), and i.

Referenced by FLA_Trinv_un().