libflame  revision_anchor
Functions
FLA_Trinv_un_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Trinv_un_opt_var4 (FLA_Obj A)
 
FLA_Error FLA_Trinv_un_ops_var4 (int mn_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opd_var4 (int mn_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opc_var4 (int mn_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Trinv_un_opz_var4 (int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Trinv_un_opc_var4()

FLA_Error FLA_Trinv_un_opc_var4 ( int  mn_A,
scomplex buff_A,
int  rs_A,
int  cs_A 
)
206 {
207  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
214  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
215  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
216  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*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, a12t );
225  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
227  mn_ahead,
228  buff_m1,
229  a12t, cs_A );
233  mn_ahead,
234  A22, rs_A, cs_A,
235  a12t, cs_A );
236 
237  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
240  mn_behind,
241  mn_ahead,
242  buff_m1,
243  a01, rs_A,
244  a12t, cs_A,
245  A02, rs_A, cs_A );
246 
247  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
251  mn_behind,
252  A00, rs_A, cs_A,
253  a01, rs_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_UPPER_TRIANGULAR
Definition: blis_type_defs.h:63
@ 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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_opd_var4()

FLA_Error FLA_Trinv_un_opd_var4 ( int  mn_A,
double *  buff_A,
int  rs_A,
int  cs_A 
)
142 {
143  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
150  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
151  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
152  double* a12t = buff_A + (i+1)*cs_A + (i )*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, a12t );
161  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
163  mn_ahead,
164  buff_m1,
165  a12t, cs_A );
169  mn_ahead,
170  A22, rs_A, cs_A,
171  a12t, cs_A );
172 
173  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
176  mn_behind,
177  mn_ahead,
178  buff_m1,
179  a01, rs_A,
180  a12t, cs_A,
181  A02, rs_A, cs_A );
182 
183  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
187  mn_behind,
188  A00, rs_A, cs_A,
189  a01, rs_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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_ops_var4()

FLA_Error FLA_Trinv_un_ops_var4 ( int  mn_A,
float *  buff_A,
int  rs_A,
int  cs_A 
)
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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
87  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
88  float* a12t = buff_A + (i+1)*cs_A + (i )*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, a12t );
97  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
99  mn_ahead,
100  buff_m1,
101  a12t, cs_A );
105  mn_ahead,
106  A22, rs_A, cs_A,
107  a12t, cs_A );
108 
109  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
112  mn_behind,
113  mn_ahead,
114  buff_m1,
115  a01, rs_A,
116  a12t, cs_A,
117  A02, rs_A, cs_A );
118 
119  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
123  mn_behind,
124  A00, rs_A, cs_A,
125  a01, rs_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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().

◆ FLA_Trinv_un_opt_var4()

FLA_Error FLA_Trinv_un_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 
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_un_opz_var4(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_un_opt_var4.c:268
FLA_Error FLA_Trinv_un_opd_var4(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_un_opt_var4.c:140
FLA_Error FLA_Trinv_un_opc_var4(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_un_opt_var4.c:204
FLA_Error FLA_Trinv_un_ops_var4(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Trinv_un_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_un_opc_var4(), FLA_Trinv_un_opd_var4(), FLA_Trinv_un_ops_var4(), and FLA_Trinv_un_opz_var4().

Referenced by FLA_Trinv_un().

◆ FLA_Trinv_un_opz_var4()

FLA_Error FLA_Trinv_un_opz_var4 ( int  mn_A,
dcomplex buff_A,
int  rs_A,
int  cs_A 
)
270 {
271  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
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* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
278  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
279  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
280  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*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, a12t );
289  // FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
291  mn_ahead,
292  buff_m1,
293  a12t, cs_A );
297  mn_ahead,
298  A22, rs_A, cs_A,
299  a12t, cs_A );
300 
301  // FLA_Ger_external( FLA_MINUS_ONE, a01, a12t, A02 );
304  mn_behind,
305  mn_ahead,
306  buff_m1,
307  a01, rs_A,
308  a12t, cs_A,
309  A02, rs_A, cs_A );
310 
311  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A00, a01 );
315  mn_behind,
316  A00, rs_A, cs_A,
317  a01, rs_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_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, and i.

Referenced by FLA_Trinv_un_opt_var4().