libflame  revision_anchor
Functions
FLA_Trinv_lu_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Trinv_lu_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_lu_ops_var4 (int mn_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opd_var4 (int mn_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opc_var4 (int mn_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_lu_opz_var4 (int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_lu_opc_var4()

FLA_Error FLA_Trinv_lu_opc_var4 ( int  mn_A,
scomplex buff_A,
int  rs_A,
int  cs_A 
)

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().

196 {
197  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
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 }
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
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
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
Definition: blis_type_defs.h:132
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
int i
Definition: bl1_axmyv2.c:145
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
Definition: blis_type_defs.h:62

◆ FLA_Trinv_lu_opd_var4()

FLA_Error FLA_Trinv_lu_opd_var4 ( int  mn_A,
double *  buff_A,
int  rs_A,
int  cs_A 
)

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().

137 {
138  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
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 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
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
Definition: blis_type_defs.h:55
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
Definition: blis_type_defs.h:75
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
Definition: blis_type_defs.h:54
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

◆ FLA_Trinv_lu_ops_var4()

FLA_Error FLA_Trinv_lu_ops_var4 ( int  mn_A,
float *  buff_A,
int  rs_A,
int  cs_A 
)

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().

78 {
79  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
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 );
98  mn_ahead,
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 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:81
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
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_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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62

◆ FLA_Trinv_lu_opt_var4()

FLA_Error FLA_Trinv_lu_opt_var4 ( FLA_Obj  A)

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(), and FLA_Trinv_lu_opz_var4().

Referenced by FLA_Trinv_lu().

16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
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  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
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_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_lu_opt_var4.c:194
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
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
Definition: blis_type_defs.h:132
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
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Trinv_lu_opz_var4()

FLA_Error FLA_Trinv_lu_opz_var4 ( int  mn_A,
dcomplex buff_A,
int  rs_A,
int  cs_A 
)

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().

255 {
256  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
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 }
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
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:75
Definition: blis_type_defs.h:54
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:62
Definition: blis_type_defs.h:137
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