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 {
267  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
268  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
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  {
314  scomplex* ATL = buff_A;
315  scomplex* ABL = buff_A + n_A*rs_A;
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  {
332  scomplex* ATL = buff_A;
333  scomplex* ATR = buff_A + m_A*cs_A;
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 );
177  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_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 );
86  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_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 );
25  rs_A = FLA_Obj_row_stride( A );
26  cs_A = FLA_Obj_col_stride( 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  {
55  scomplex* buff_A = FLA_COMPLEX_PTR( A );
56 
58  n_A,
59  buff_A, rs_A, cs_A );
60 
61  break;
62  }
63 
64  case FLA_DOUBLE_COMPLEX:
65  {
66  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
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(), and FLA_Obj_width().

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 {
358  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
359  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
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  {
405  dcomplex* ATL = buff_A;
406  dcomplex* ABL = buff_A + n_A*rs_A;
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  {
423  dcomplex* ATL = buff_A;
424  dcomplex* ATR = buff_A + m_A*cs_A;
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().