libflame revision_anchor
Functions
FLA_Trinv_lu.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Trinv_lu_blk_var1 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_lu_blk_var2 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_lu_blk_var3 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_lu_blk_var4 (FLA_Obj A, fla_trinv_t *cntl)
 
FLA_Error FLA_Trinv_lu_unb_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_unb_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_unb_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_unb_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_ops_var1 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opd_var1 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opc_var1 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opz_var1 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_ops_var2 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opd_var2 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opc_var2 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opz_var2 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opt_var3 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_ops_var3 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opd_var3 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opc_var3 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opz_var3 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_ops_var4 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opd_var4 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opc_var4 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opz_var4 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_lu_blk_var1()

FLA_Error FLA_Trinv_lu_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 // A10 = A10 * A00;
40 FLA_ONE, A00, A10,
41 FLA_Cntl_sub_trmm( cntl ) );
42
43 // A10 = -trilu( A11 ) \ A10;
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_lu().

◆ FLA_Trinv_lu_blk_var2()

FLA_Error FLA_Trinv_lu_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 // A21 = trilu( A22 ) \ A21;
40 FLA_ONE, A22, A21,
41 FLA_Cntl_sub_trsm1( cntl ) );
42
43 // A21 = -A21 / trilu( A11 );
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_lu().

◆ FLA_Trinv_lu_blk_var3()

FLA_Error FLA_Trinv_lu_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 // A21 = -A21 / trilu( A11 );
39 FLA_Cntl_sub_trsm1( cntl ) );
40
41 // A20 = A21 * A10 + A20;
44 FLA_Cntl_sub_gemm( cntl ) );
45
46 // A10 = trilu( A11 ) \ A10;
48 FLA_ONE, A11, A10,
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_lu().

◆ FLA_Trinv_lu_blk_var4()

FLA_Error FLA_Trinv_lu_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 // A21 = -trilu( A22 ) \ A21;
41 FLA_Cntl_sub_trsm1( cntl ) );
42
43 // A20 = -A21 * A10 + A20;
46 FLA_Cntl_sub_gemm( cntl ) );
47
48 // A10 = A10 * A00;
50 FLA_ONE, A00, A10,
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_lu().

◆ FLA_Trinv_lu_opc_var1()

FLA_Error FLA_Trinv_lu_opc_var1 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
154{
156 int i;
157
158 for ( i = 0; i < mn_A; ++i )
159 {
160 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
161 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
162
163 int mn_behind = i;
164
165 /*------------------------------------------------------------*/
166
167 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
171 mn_behind,
172 A00, rs_A, cs_A,
173 a10t, cs_A );
174
175 // FLA_Scal_external( FLA_MINUS_ONE, a10t );
177 mn_behind,
178 buff_m1,
179 a10t, cs_A );
180
181 /*------------------------------------------------------------*/
182
183 }
184
185 return FLA_SUCCESS;
186}
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition bl1_scalv.c:46
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trmv.c:99
@ BLIS1_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_UNIT_DIAG
Definition blis_type_defs.h:75
@ BLIS1_TRANSPOSE
Definition blis_type_defs.h:55
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_cscalv(), bl1_ctrmv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var1().

◆ FLA_Trinv_lu_opc_var2()

FLA_Error FLA_Trinv_lu_opc_var2 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
154{
156 int i;
157
158 for ( i = 0; i < mn_A; ++i )
159 {
160 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
161 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
162
163 int mn_ahead = mn_A - i - 1;
164
165 /*------------------------------------------------------------*/
166
167 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
171 mn_ahead,
172 A22, rs_A, cs_A,
173 a21, rs_A );
174
175 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
177 mn_ahead,
178 buff_m1,
179 a21, rs_A );
180
181 /*------------------------------------------------------------*/
182
183 }
184
185 return FLA_SUCCESS;
186}
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_NO_TRANSPOSE
Definition blis_type_defs.h:54

References bl1_cscalv(), bl1_ctrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var2().

◆ FLA_Trinv_lu_opc_var3()

FLA_Error FLA_Trinv_lu_opc_var3 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
162{
165 int i;
166
167 for ( i = 0; i < mn_A; ++i )
168 {
169 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
170 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
171 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
172
173 int mn_ahead = mn_A - i - 1;
174 int mn_behind = i;
175
176 /*------------------------------------------------------------*/
177
178 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
180 mn_ahead,
181 buff_m1,
182 a21, rs_A );
183
184 // FLA_Ger_external( FLA_ONE, a21, a10t, A20 );
187 mn_ahead,
188 mn_behind,
189 buff_1,
190 a21, rs_A,
191 a10t, cs_A,
192 A20, rs_A, cs_A );
193
194 /*------------------------------------------------------------*/
195
196 }
197
198 return FLA_SUCCESS;
199}
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_cscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var3().

◆ FLA_Trinv_lu_opc_var4()

FLA_Error FLA_Trinv_lu_opc_var4 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
196{
198 int i;
199
200 for ( i = 0; i < mn_A; ++i )
201 {
202 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
203 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
204 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
205 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
206 scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
207
208 int mn_ahead = mn_A - i - 1;
209 int mn_behind = i;
210
211 /*------------------------------------------------------------*/
212
213 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
214 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
216 mn_ahead,
217 buff_m1,
218 a21, rs_A );
222 mn_ahead,
223 A22, rs_A, cs_A,
224 a21, rs_A );
225
226 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
229 mn_ahead,
230 mn_behind,
231 buff_m1,
232 a21, rs_A,
233 a10t, cs_A,
234 A20, rs_A, cs_A );
235
236 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
240 mn_behind,
241 A00, rs_A, cs_A,
242 a10t, cs_A );
243
244 /*------------------------------------------------------------*/
245
246 }
247
248 return FLA_SUCCESS;
249}

References bl1_cger(), bl1_cscalv(), bl1_ctrmv(), bl1_ctrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var4().

◆ FLA_Trinv_lu_opd_var1()

FLA_Error FLA_Trinv_lu_opd_var1 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
116{
118 int i;
119
120 for ( i = 0; i < mn_A; ++i )
121 {
122 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
123 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
124
125 int mn_behind = i;
126
127 /*------------------------------------------------------------*/
128
129 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
133 mn_behind,
134 A00, rs_A, cs_A,
135 a10t, cs_A );
136
137 // FLA_Scal_external( FLA_MINUS_ONE, a10t );
139 mn_behind,
140 buff_m1,
141 a10t, cs_A );
142
143 /*------------------------------------------------------------*/
144
145 }
146
147 return FLA_SUCCESS;
148}
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trmv.c:56

References bl1_dscalv(), bl1_dtrmv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var1().

◆ FLA_Trinv_lu_opd_var2()

FLA_Error FLA_Trinv_lu_opd_var2 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
116{
118 int i;
119
120 for ( i = 0; i < mn_A; ++i )
121 {
122 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
123 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
124
125 int mn_ahead = mn_A - i - 1;
126
127 /*------------------------------------------------------------*/
128
129 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
133 mn_ahead,
134 A22, rs_A, cs_A,
135 a21, rs_A );
136
137 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
139 mn_ahead,
140 buff_m1,
141 a21, rs_A );
142
143 /*------------------------------------------------------------*/
144
145 }
146
147 return FLA_SUCCESS;
148}
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_dscalv(), bl1_dtrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var2().

◆ FLA_Trinv_lu_opd_var3()

FLA_Error FLA_Trinv_lu_opd_var3 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
119{
120 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
122 int i;
123
124 for ( i = 0; i < mn_A; ++i )
125 {
126 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
127 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
128 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
129
130 int mn_ahead = mn_A - i - 1;
131 int mn_behind = i;
132
133 /*------------------------------------------------------------*/
134
135 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
137 mn_ahead,
138 buff_m1,
139 a21, rs_A );
140
141 // FLA_Ger_external( FLA_ONE, a21, a10t, A20 );
144 mn_ahead,
145 mn_behind,
146 buff_1,
147 a21, rs_A,
148 a10t, cs_A,
149 A20, rs_A, cs_A );
150
151 /*------------------------------------------------------------*/
152
153 }
154
155 return FLA_SUCCESS;
156}
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_dscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var3().

◆ FLA_Trinv_lu_opd_var4()

FLA_Error FLA_Trinv_lu_opd_var4 ( int  mn_A,
double A,
int  rs_A,
int  cs_A 
)
137{
139 int i;
140
141 for ( i = 0; i < mn_A; ++i )
142 {
143 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
144 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
145 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
146 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
147 double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
148
149 int mn_ahead = mn_A - i - 1;
150 int mn_behind = i;
151
152 /*------------------------------------------------------------*/
153
154 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
155 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
157 mn_ahead,
158 buff_m1,
159 a21, rs_A );
163 mn_ahead,
164 A22, rs_A, cs_A,
165 a21, rs_A );
166
167 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
170 mn_ahead,
171 mn_behind,
172 buff_m1,
173 a21, rs_A,
174 a10t, cs_A,
175 A20, rs_A, cs_A );
176
177 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
181 mn_behind,
182 A00, rs_A, cs_A,
183 a10t, cs_A );
184
185 /*------------------------------------------------------------*/
186
187 }
188
189 return FLA_SUCCESS;
190}

References bl1_dger(), bl1_dscalv(), bl1_dtrmv(), bl1_dtrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var4().

◆ FLA_Trinv_lu_ops_var1()

FLA_Error FLA_Trinv_lu_ops_var1 ( 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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
86
87 int mn_behind = i;
88
89 /*------------------------------------------------------------*/
90
91 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
96 A00, rs_A, cs_A,
97 a10t, cs_A );
98
99 // FLA_Scal_external( FLA_MINUS_ONE, a10t );
101 mn_behind,
102 buff_m1,
103 a10t, cs_A );
104
105 /*------------------------------------------------------------*/
106
107 }
108
109 return FLA_SUCCESS;
110}
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trmv.c:13

References bl1_sscalv(), bl1_strmv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var1().

◆ FLA_Trinv_lu_ops_var2()

FLA_Error FLA_Trinv_lu_ops_var2 ( 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* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
85 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
86
87 int mn_ahead = mn_A - i - 1;
88
89 /*------------------------------------------------------------*/
90
91 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
96 A22, rs_A, cs_A,
97 a21, rs_A );
98
99 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
101 mn_ahead,
102 buff_m1,
103 a21, rs_A );
104
105 /*------------------------------------------------------------*/
106
107 }
108
109 return FLA_SUCCESS;
110}
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_sscalv(), bl1_strsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var2().

◆ FLA_Trinv_lu_ops_var3()

FLA_Error FLA_Trinv_lu_ops_var3 ( int  mn_A,
float A,
int  rs_A,
int  cs_A 
)
76{
77 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
79 int i;
80
81 for ( i = 0; i < mn_A; ++i )
82 {
83 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
84 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
85 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
86
87 int mn_ahead = mn_A - i - 1;
88 int mn_behind = i;
89
90 /*------------------------------------------------------------*/
91
92 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
95 buff_m1,
96 a21, rs_A );
97
98 // FLA_Ger_external( FLA_ONE, a21, a10t, A20 );
101 mn_ahead,
102 mn_behind,
103 buff_1,
104 a21, rs_A,
105 a10t, cs_A,
106 A20, rs_A, cs_A );
107
108 /*------------------------------------------------------------*/
109
110 }
111
112 return FLA_SUCCESS;
113}
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_sscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var3().

◆ FLA_Trinv_lu_ops_var4()

FLA_Error FLA_Trinv_lu_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
86 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
87 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
88 float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
89
90 int mn_ahead = mn_A - i - 1;
91 int mn_behind = i;
92
93 /*------------------------------------------------------------*/
94
95 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
96 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
99 buff_m1,
100 a21, rs_A );
104 mn_ahead,
105 A22, rs_A, cs_A,
106 a21, rs_A );
107
108 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
111 mn_ahead,
112 mn_behind,
113 buff_m1,
114 a21, rs_A,
115 a10t, cs_A,
116 A20, rs_A, cs_A );
117
118 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
122 mn_behind,
123 A00, rs_A, cs_A,
124 a10t, cs_A );
125
126 /*------------------------------------------------------------*/
127
128 }
129
130 return FLA_SUCCESS;
131}

References bl1_sger(), bl1_sscalv(), bl1_strmv(), bl1_strsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var4().

◆ FLA_Trinv_lu_opt_var1()

FLA_Error FLA_Trinv_lu_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_lu_opz_var1(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var1.c:190
FLA_Error FLA_Trinv_lu_opc_var1(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var1.c:152
FLA_Error FLA_Trinv_lu_opd_var1(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var1.c:114
FLA_Error FLA_Trinv_lu_ops_var1(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var1.c:76
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_lu_opc_var1(), FLA_Trinv_lu_opd_var1(), FLA_Trinv_lu_ops_var1(), FLA_Trinv_lu_opz_var1(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_opt_var2()

FLA_Error FLA_Trinv_lu_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_lu_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var2.c:152
FLA_Error FLA_Trinv_lu_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var2.c:114
FLA_Error FLA_Trinv_lu_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var2.c:190
FLA_Error FLA_Trinv_lu_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var2.c:76

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_lu_opc_var2(), FLA_Trinv_lu_opd_var2(), FLA_Trinv_lu_ops_var2(), FLA_Trinv_lu_opz_var2(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_opt_var3()

FLA_Error FLA_Trinv_lu_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_lu_opc_var3(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var3.c:160
FLA_Error FLA_Trinv_lu_opd_var3(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var3.c:117
FLA_Error FLA_Trinv_lu_ops_var3(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var3.c:74
FLA_Error FLA_Trinv_lu_opz_var3(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var3.c:203

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_lu_opc_var3(), FLA_Trinv_lu_opd_var3(), FLA_Trinv_lu_ops_var3(), FLA_Trinv_lu_opz_var3(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_opt_var4()

FLA_Error FLA_Trinv_lu_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_lu_opz_var4(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var4.c:253
FLA_Error FLA_Trinv_lu_opc_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var4.c:194
FLA_Error FLA_Trinv_lu_ops_var4(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var4.c:76
FLA_Error FLA_Trinv_lu_opd_var4(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_lu_opt_var4.c:135

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Trinv_lu_opc_var4(), FLA_Trinv_lu_opd_var4(), FLA_Trinv_lu_ops_var4(), FLA_Trinv_lu_opz_var4(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_opz_var1()

FLA_Error FLA_Trinv_lu_opz_var1 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
192{
194 int i;
195
196 for ( i = 0; i < mn_A; ++i )
197 {
198 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
199 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
200
201 int mn_behind = i;
202
203 /*------------------------------------------------------------*/
204
205 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
209 mn_behind,
210 A00, rs_A, cs_A,
211 a10t, cs_A );
212
213 // FLA_Scal_external( FLA_MINUS_ONE, a10t );
215 mn_behind,
216 buff_m1,
217 a10t, cs_A );
218
219 /*------------------------------------------------------------*/
220
221 }
222
223 return FLA_SUCCESS;
224}
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trmv.c:177

References bl1_zscalv(), bl1_ztrmv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var1().

◆ FLA_Trinv_lu_opz_var2()

FLA_Error FLA_Trinv_lu_opz_var2 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
192{
194 int i;
195
196 for ( i = 0; i < mn_A; ++i )
197 {
198 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
199 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
200
201 int mn_ahead = mn_A - i - 1;
202
203 /*------------------------------------------------------------*/
204
205 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
209 mn_ahead,
210 A22, rs_A, cs_A,
211 a21, rs_A );
212
213 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
215 mn_ahead,
216 buff_m1,
217 a21, rs_A );
218
219 /*------------------------------------------------------------*/
220
221 }
222
223 return FLA_SUCCESS;
224}
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_zscalv(), bl1_ztrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var2().

◆ FLA_Trinv_lu_opz_var3()

FLA_Error FLA_Trinv_lu_opz_var3 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
205{
208 int i;
209
210 for ( i = 0; i < mn_A; ++i )
211 {
212 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
213 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
214 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
215
216 int mn_ahead = mn_A - i - 1;
217 int mn_behind = i;
218
219 /*------------------------------------------------------------*/
220
221 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
223 mn_ahead,
224 buff_m1,
225 a21, rs_A );
226
227 // FLA_Ger_external( FLA_ONE, a21, a10t, A20 );
230 mn_ahead,
231 mn_behind,
232 buff_1,
233 a21, rs_A,
234 a10t, cs_A,
235 A20, rs_A, cs_A );
236
237 /*------------------------------------------------------------*/
238
239 }
240
241 return FLA_SUCCESS;
242}
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_zscalv(), BLIS1_NO_CONJUGATE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var3().

◆ FLA_Trinv_lu_opz_var4()

FLA_Error FLA_Trinv_lu_opz_var4 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
255{
257 int i;
258
259 for ( i = 0; i < mn_A; ++i )
260 {
261 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
262 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
263 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
264 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
265 dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
266
267 int mn_ahead = mn_A - i - 1;
268 int mn_behind = i;
269
270 /*------------------------------------------------------------*/
271
272 // FLA_Scal_external( FLA_MINUS_ONE, a21 );
273 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A22, a21 );
275 mn_ahead,
276 buff_m1,
277 a21, rs_A );
281 mn_ahead,
282 A22, rs_A, cs_A,
283 a21, rs_A );
284
285 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
288 mn_ahead,
289 mn_behind,
290 buff_m1,
291 a21, rs_A,
292 a10t, cs_A,
293 A20, rs_A, cs_A );
294
295 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_UNIT_DIAG, A00, a10t );
299 mn_behind,
300 A00, rs_A, cs_A,
301 a10t, cs_A );
302
303 /*------------------------------------------------------------*/
304
305 }
306
307 return FLA_SUCCESS;
308}

References bl1_zger(), bl1_zscalv(), bl1_ztrmv(), bl1_ztrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_lu_opt_var4().

◆ FLA_Trinv_lu_unb_var1()

FLA_Error FLA_Trinv_lu_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 // a10t' = trilu( A00' ) * a10t';
36
37 // a10t = -a10t;
39
40 /*------------------------------------------------------------*/
41
42 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43 a10t, alpha11, /**/ a12t,
44 /* ************** */ /* ************************ */
45 &ABL, /**/ &ABR, A20, a21, /**/ A22,
46 FLA_TL );
47
48 }
49
50 return FLA_SUCCESS;
51}
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

References FLA_Cont_with_3x3_to_2x2(), 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_lu().

◆ FLA_Trinv_lu_unb_var2()

FLA_Error FLA_Trinv_lu_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 // a21 = trilu( A22 ) \ a21;
36
37 // a21 = -a21;
39
40 /*------------------------------------------------------------*/
41
42 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43 a10t, alpha11, /**/ a12t,
44 /* ************** */ /* ************************ */
45 &ABL, /**/ &ABR, A20, a21, /**/ A22,
46 FLA_TL );
47
48 }
49
50 return FLA_SUCCESS;
51}
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_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_lu().

◆ FLA_Trinv_lu_unb_var3()

FLA_Error FLA_Trinv_lu_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 // a21 = -a21;
36
37 // A20 = a21 * a10t + A20;
39
40 /*------------------------------------------------------------*/
41
42 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
43 a10t, alpha11, /**/ a12t,
44 /* ************** */ /* ************************ */
45 &ABL, /**/ &ABR, A20, a21, /**/ A22,
46 FLA_TL );
47
48 }
49
50 return FLA_SUCCESS;
51}
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_MINUS_ONE, FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Scal_external(), and i.

Referenced by FLA_Trinv_lu().

◆ FLA_Trinv_lu_unb_var4()

FLA_Error FLA_Trinv_lu_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 // a21 = -trilu( A22 ) \ a21;
37
38 // A20 = -a21 * a10t + A20;
40
41 // a10t' = trilu( A00' ) * a10t';
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}

References FLA_Cont_with_3x3_to_2x2(), FLA_Ger_external(), 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_lu().