libflame revision_anchor
Functions
FLA_LU_nopiv_opt_var1.c File Reference

(r)

Functions

FLA_Error FLA_LU_nopiv_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_LU_nopiv_ops_var1 (int m_A, int n_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_LU_nopiv_opd_var1 (int m_A, int n_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_LU_nopiv_opc_var1 (int m_A, int n_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_LU_nopiv_opz_var1 (int m_A, int n_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_LU_nopiv_opc_var1()

FLA_Error FLA_LU_nopiv_opc_var1 ( int  m_A,
int  n_A,
scomplex buff_A,
int  rs_A,
int  cs_A 
)
266{
269 int min_m_n = min( m_A, n_A );
270 int i;
271
272 for ( i = 0; i < min_m_n; ++i )
273 {
274 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
275 scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
276 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
277 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
278
279 int mn_behind = i;
280
281 /*------------------------------------------------------------*/
282
283 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
287 mn_behind,
288 A00, rs_A, cs_A,
289 a01, rs_A );
290
291 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
295 mn_behind,
296 A00, rs_A, cs_A,
297 a10t, cs_A );
298
299 // FLA_Dots_external( FLA_MINUS_ONE, a10t, a01, FLA_ONE, alpha11 );
301 mn_behind,
302 buff_m1,
303 a10t, cs_A,
304 a01, rs_A,
305 buff_1,
306 alpha11 );
307
308 /*------------------------------------------------------------*/
309
310 }
311
312 if ( m_A > n_A )
313 {
316
317 // FLA_Trsm_external( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
318 // FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
319 // FLA_ONE, ATL, ABL );
324 m_A - n_A,
325 n_A,
326 buff_1,
327 ATL, rs_A, cs_A,
328 ABL, rs_A, cs_A );
329 }
330 else if ( m_A < n_A )
331 {
334
335 // FLA_Trsm_external( FLA_LEFT, FLA_LOWER_TRIANGULAR,
336 // FLA_NO_TRANSPOSE, FLA_UNIT_DIAG,
337 // FLA_ONE, ATL, ATR );
342 m_A,
343 n_A - m_A,
344 buff_1,
345 ATL, rs_A, cs_A,
346 ATR, rs_A, cs_A );
347 }
348
349 return FLA_SUCCESS;
350}
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
int i
Definition bl1_axmyv2.c:145
void bl1_cdots(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition bl1_dots.c:39
void bl1_ctrsm(side1_t side, uplo1_t uplo, trans1_t trans, diag1_t diag, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
Definition bl1_trsm.c:219
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_LOWER_TRIANGULAR
Definition blis_type_defs.h:62
@ BLIS1_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_UNIT_DIAG
Definition blis_type_defs.h:75
@ 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
@ BLIS1_RIGHT
Definition blis_type_defs.h:69
@ BLIS1_LEFT
Definition blis_type_defs.h:68
Definition blis_type_defs.h:133

References bl1_cdots(), bl1_ctrsm(), bl1_ctrsv(), BLIS1_LEFT, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_RIGHT, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_LU_nopiv_opt_var1().

◆ FLA_LU_nopiv_opd_var1()

FLA_Error FLA_LU_nopiv_opd_var1 ( int  m_A,
int  n_A,
double buff_A,
int  rs_A,
int  cs_A 
)
175{
176 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
178 int min_m_n = min( m_A, n_A );
179 int i;
180
181 for ( i = 0; i < min_m_n; ++i )
182 {
183 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
184 double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
185 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
186 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
187
188 int mn_behind = i;
189
190 /*------------------------------------------------------------*/
191
192 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
196 mn_behind,
197 A00, rs_A, cs_A,
198 a01, rs_A );
199
200 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
204 mn_behind,
205 A00, rs_A, cs_A,
206 a10t, cs_A );
207
208 // FLA_Dots_external( FLA_MINUS_ONE, a10t, a01, FLA_ONE, alpha11 );
210 mn_behind,
211 buff_m1,
212 a10t, cs_A,
213 a01, rs_A,
214 buff_1,
215 alpha11 );
216
217 /*------------------------------------------------------------*/
218
219 }
220
221 if ( m_A > n_A )
222 {
223 double* ATL = buff_A;
224 double* ABL = buff_A + n_A*rs_A;
225
226 // FLA_Trsm_external( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
227 // FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
228 // FLA_ONE, ATL, ABL );
233 m_A - n_A,
234 n_A,
235 buff_1,
236 ATL, rs_A, cs_A,
237 ABL, rs_A, cs_A );
238 }
239 else if ( m_A < n_A )
240 {
241 double* ATL = buff_A;
242 double* ATR = buff_A + m_A*cs_A;
243
244 // FLA_Trsm_external( FLA_LEFT, FLA_LOWER_TRIANGULAR,
245 // FLA_NO_TRANSPOSE, FLA_UNIT_DIAG,
246 // FLA_ONE, ATL, ATR );
251 m_A,
252 n_A - m_A,
253 buff_1,
254 ATL, rs_A, cs_A,
255 ATR, rs_A, cs_A );
256 }
257
258 return FLA_SUCCESS;
259}
void bl1_ddots(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition bl1_dots.c:26
void bl1_dtrsm(side1_t side, uplo1_t uplo, trans1_t trans, diag1_t diag, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
Definition bl1_trsm.c:116
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56

References bl1_ddots(), bl1_dtrsm(), bl1_dtrsv(), BLIS1_LEFT, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_RIGHT, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_LU_nopiv_opt_var1().

◆ FLA_LU_nopiv_ops_var1()

FLA_Error FLA_LU_nopiv_ops_var1 ( int  m_A,
int  n_A,
float buff_A,
int  rs_A,
int  cs_A 
)
84{
85 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
87 int min_m_n = min( m_A, n_A );
88 int i;
89
90 for ( i = 0; i < min_m_n; ++i )
91 {
92 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
93 float* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
94 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
95 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
96
97 int mn_behind = i;
98
99 /*------------------------------------------------------------*/
100
101 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
105 mn_behind,
106 A00, rs_A, cs_A,
107 a01, rs_A );
108
109 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
113 mn_behind,
114 A00, rs_A, cs_A,
115 a10t, cs_A );
116
117 // FLA_Dots_external( FLA_MINUS_ONE, a10t, a01, FLA_ONE, alpha11 );
119 mn_behind,
120 buff_m1,
121 a10t, cs_A,
122 a01, rs_A,
123 buff_1,
124 alpha11 );
125
126 /*------------------------------------------------------------*/
127
128 }
129
130 if ( m_A > n_A )
131 {
132 float* ATL = buff_A;
133 float* ABL = buff_A + n_A*rs_A;
134
135 // FLA_Trsm_external( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
136 // FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
137 // FLA_ONE, ATL, ABL );
142 m_A - n_A,
143 n_A,
144 buff_1,
145 ATL, rs_A, cs_A,
146 ABL, rs_A, cs_A );
147 }
148 else if ( m_A < n_A )
149 {
150 float* ATL = buff_A;
151 float* ATR = buff_A + m_A*cs_A;
152
153 // FLA_Trsm_external( FLA_LEFT, FLA_LOWER_TRIANGULAR,
154 // FLA_NO_TRANSPOSE, FLA_UNIT_DIAG,
155 // FLA_ONE, ATL, ATR );
160 m_A,
161 n_A - m_A,
162 buff_1,
163 ATL, rs_A, cs_A,
164 ATR, rs_A, cs_A );
165 }
166
167 return FLA_SUCCESS;
168}
void bl1_sdots(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition bl1_dots.c:13
void bl1_strsm(side1_t side, uplo1_t uplo, trans1_t trans, diag1_t diag, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
Definition bl1_trsm.c:13
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13

References bl1_sdots(), bl1_strsm(), bl1_strsv(), BLIS1_LEFT, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_RIGHT, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_LU_nopiv_opt_var1().

◆ FLA_LU_nopiv_opt_var1()

FLA_Error FLA_LU_nopiv_opt_var1 ( FLA_Obj  A)
16{
17 FLA_Datatype datatype;
18 int m_A, n_A;
19 int rs_A, cs_A;
20
21 datatype = FLA_Obj_datatype( A );
22
23 m_A = FLA_Obj_length( A );
24 n_A = FLA_Obj_width( A );
27
28
29 switch ( datatype )
30 {
31 case FLA_FLOAT:
32 {
33 float* buff_A = FLA_FLOAT_PTR( A );
34
36 n_A,
37 buff_A, rs_A, cs_A );
38
39 break;
40 }
41
42 case FLA_DOUBLE:
43 {
44 double* buff_A = FLA_DOUBLE_PTR( A );
45
47 n_A,
48 buff_A, rs_A, cs_A );
49
50 break;
51 }
52
53 case FLA_COMPLEX:
54 {
56
58 n_A,
59 buff_A, rs_A, cs_A );
60
61 break;
62 }
63
65 {
67
69 n_A,
70 buff_A, rs_A, cs_A );
71
72 break;
73 }
74 }
75
76 return FLA_SUCCESS;
77}
FLA_Error FLA_LU_nopiv_opc_var1(int m_A, int n_A, scomplex *buff_A, int rs_A, int cs_A)
Definition FLA_LU_nopiv_opt_var1.c:263
FLA_Error FLA_LU_nopiv_opz_var1(int m_A, int n_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition FLA_LU_nopiv_opt_var1.c:354
FLA_Error FLA_LU_nopiv_opd_var1(int m_A, int n_A, double *buff_A, int rs_A, int cs_A)
Definition FLA_LU_nopiv_opt_var1.c:172
FLA_Error FLA_LU_nopiv_ops_var1(int m_A, int n_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_LU_nopiv_opt_var1.c:81
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
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_LU_nopiv_opc_var1(), FLA_LU_nopiv_opd_var1(), FLA_LU_nopiv_ops_var1(), FLA_LU_nopiv_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), and i.

Referenced by FLA_LU_nopiv_internal().

◆ FLA_LU_nopiv_opz_var1()

FLA_Error FLA_LU_nopiv_opz_var1 ( int  m_A,
int  n_A,
dcomplex buff_A,
int  rs_A,
int  cs_A 
)
357{
360 int min_m_n = min( m_A, n_A );
361 int i;
362
363 for ( i = 0; i < min_m_n; ++i )
364 {
365 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
366 dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
367 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
368 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
369
370 int mn_behind = i;
371
372 /*------------------------------------------------------------*/
373
374 // FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, A00, a01 );
378 mn_behind,
379 A00, rs_A, cs_A,
380 a01, rs_A );
381
382 // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a10t );
386 mn_behind,
387 A00, rs_A, cs_A,
388 a10t, cs_A );
389
390 // FLA_Dots_external( FLA_MINUS_ONE, a10t, a01, FLA_ONE, alpha11 );
392 mn_behind,
393 buff_m1,
394 a10t, cs_A,
395 a01, rs_A,
396 buff_1,
397 alpha11 );
398
399 /*------------------------------------------------------------*/
400
401 }
402
403 if ( m_A > n_A )
404 {
407
408 // FLA_Trsm_external( FLA_RIGHT, FLA_UPPER_TRIANGULAR,
409 // FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG,
410 // FLA_ONE, ATL, ABL );
415 m_A - n_A,
416 n_A,
417 buff_1,
418 ATL, rs_A, cs_A,
419 ABL, rs_A, cs_A );
420 }
421 else if ( m_A < n_A )
422 {
425
426 // FLA_Trsm_external( FLA_LEFT, FLA_LOWER_TRIANGULAR,
427 // FLA_NO_TRANSPOSE, FLA_UNIT_DIAG,
428 // FLA_ONE, ATL, ATR );
433 m_A,
434 n_A - m_A,
435 buff_1,
436 ATL, rs_A, cs_A,
437 ATR, rs_A, cs_A );
438 }
439
440 return FLA_SUCCESS;
441}
void bl1_zdots(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition bl1_dots.c:56
void bl1_ztrsm(side1_t side, uplo1_t uplo, trans1_t trans, diag1_t diag, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
Definition bl1_trsm.c:369
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177

References bl1_zdots(), bl1_ztrsm(), bl1_ztrsv(), BLIS1_LEFT, BLIS1_LOWER_TRIANGULAR, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_RIGHT, BLIS1_TRANSPOSE, BLIS1_UNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_LU_nopiv_opt_var1().