libflame revision_anchor
Functions
FLA_Trinv_ln_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Trinv_ln_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_ln_ops_var4 (int mn_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_ln_opd_var4 (int mn_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_ln_opc_var4 (int mn_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_ln_opz_var4 (int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_ln_opc_var4()

FLA_Error FLA_Trinv_ln_opc_var4 ( int  mn_A,
scomplex buff_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
214 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
215 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
216 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*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, a21 );
225 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a21 );
227 mn_ahead,
228 buff_m1,
229 a21, rs_A );
233 mn_ahead,
234 A22, rs_A, cs_A,
235 a21, rs_A );
236
237 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
240 mn_ahead,
241 mn_behind,
242 buff_m1,
243 a21, rs_A,
244 a10t, cs_A,
245 A20, rs_A, cs_A );
246
247 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
251 mn_behind,
252 A00, rs_A, cs_A,
253 a10t, cs_A );
254
255 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
257 alpha11 );
258
259 /*------------------------------------------------------------*/
260
261 }
262
263 return FLA_SUCCESS;
264}
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
int i
Definition bl1_axmyv2.c:145
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
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
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trsv.c:99
void bl1_cinverts(conj1_t conj, scomplex *alpha)
Definition bl1_inverts.c:27
@ BLIS1_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_NO_TRANSPOSE
Definition blis_type_defs.h:54
@ 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_cger(), bl1_cinverts(), bl1_cscalv(), bl1_ctrmv(), bl1_ctrsv(), BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_ln_opt_var4().

◆ FLA_Trinv_ln_opd_var4()

FLA_Error FLA_Trinv_ln_opd_var4 ( int  mn_A,
double buff_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
150 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
151 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
152 double* a21 = buff_A + (i )*cs_A + (i+1)*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, a21 );
161 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a21 );
163 mn_ahead,
164 buff_m1,
165 a21, rs_A );
169 mn_ahead,
170 A22, rs_A, cs_A,
171 a21, rs_A );
172
173 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
176 mn_ahead,
177 mn_behind,
178 buff_m1,
179 a21, rs_A,
180 a10t, cs_A,
181 A20, rs_A, cs_A );
182
183 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
187 mn_behind,
188 A00, rs_A, cs_A,
189 a10t, cs_A );
190
191 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
193 alpha11 );
194
195 /*------------------------------------------------------------*/
196
197 }
198
199 return FLA_SUCCESS;
200}
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_ger.c:62
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition bl1_scalv.c:24
void bl1_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_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56
void bl1_dinverts(conj1_t conj, double *alpha)
Definition bl1_inverts.c:20

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

Referenced by FLA_Trinv_ln_opt_var4().

◆ FLA_Trinv_ln_ops_var4()

FLA_Error FLA_Trinv_ln_ops_var4 ( int  mn_A,
float buff_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* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
88 float* a21 = buff_A + (i )*cs_A + (i+1)*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, a21 );
97 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a21 );
100 buff_m1,
101 a21, rs_A );
105 mn_ahead,
106 A22, rs_A, cs_A,
107 a21, rs_A );
108
109 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
112 mn_ahead,
113 mn_behind,
114 buff_m1,
115 a21, rs_A,
116 a10t, cs_A,
117 A20, rs_A, cs_A );
118
119 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
123 mn_behind,
124 A00, rs_A, cs_A,
125 a10t, cs_A );
126
127 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
129 alpha11 );
130
131 /*------------------------------------------------------------*/
132
133 }
134
135 return FLA_SUCCESS;
136}
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_ger.c:13
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition bl1_scalv.c:13
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_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13
void bl1_sinverts(conj1_t conj, float *alpha)
Definition bl1_inverts.c:13

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

Referenced by FLA_Trinv_ln_opt_var4().

◆ FLA_Trinv_ln_opt_var4()

FLA_Error FLA_Trinv_ln_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_ln_opc_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_ln_opt_var4.c:204
FLA_Error FLA_Trinv_ln_opd_var4(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_ln_opt_var4.c:140
FLA_Error FLA_Trinv_ln_opz_var4(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_ln_opt_var4.c:268
FLA_Error FLA_Trinv_ln_ops_var4(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Trinv_ln_opt_var4.c:76
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition FLA_Query.c:167
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
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_ln_opc_var4(), FLA_Trinv_ln_opd_var4(), FLA_Trinv_ln_ops_var4(), FLA_Trinv_ln_opz_var4(), and i.

Referenced by FLA_Trinv_ln().

◆ FLA_Trinv_ln_opz_var4()

FLA_Error FLA_Trinv_ln_opz_var4 ( int  mn_A,
dcomplex buff_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
278 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
279 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
280 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*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, a21 );
289 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a21 );
291 mn_ahead,
292 buff_m1,
293 a21, rs_A );
297 mn_ahead,
298 A22, rs_A, cs_A,
299 a21, rs_A );
300
301 // FLA_Ger_external( FLA_MINUS_ONE, a21, a10t, A20 );
304 mn_ahead,
305 mn_behind,
306 buff_m1,
307 a21, rs_A,
308 a10t, cs_A,
309 A20, rs_A, cs_A );
310
311 // FLA_Trmv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
315 mn_behind,
316 A00, rs_A, cs_A,
317 a10t, cs_A );
318
319 // FLA_Invert( FLA_NO_CONJUGATE, alpha11 );
321 alpha11 );
322
323 /*------------------------------------------------------------*/
324
325 }
326
327 return FLA_SUCCESS;
328}
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_ger.c:194
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition bl1_scalv.c:72
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_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177
void bl1_zinverts(conj1_t conj, dcomplex *alpha)
Definition bl1_inverts.c:44

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

Referenced by FLA_Trinv_ln_opt_var4().