libflame  revision_anchor
Functions
FLA_Chol_u_opt_var2.c File Reference

(r)

Functions

FLA_Error FLA_Chol_u_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Chol_u_ops_var2 (int mn_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opd_var2 (int mn_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opc_var2 (int mn_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Chol_u_opz_var2 (int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Chol_u_opc_var2()

FLA_Error FLA_Chol_u_opc_var2 ( int  mn_A,
scomplex buff_A,
int  rs_A,
int  cs_A 
)
199 {
200  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
201  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
202  int i;
203  FLA_Error e_val;
204 
205  for ( i = 0; i < mn_A; ++i )
206  {
207  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
208  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
209  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
210  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
211 
212  int mn_ahead = mn_A - i - 1;
213  int mn_behind = i;
214 
215  /*------------------------------------------------------------*/
216 
217  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
219  mn_behind,
220  buff_m1,
221  a01, rs_A,
222  a01, rs_A,
223  buff_1,
224  alpha11 );
225 
226  // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
229  mn_behind,
230  mn_ahead,
231  buff_m1,
232  A02, rs_A, cs_A,
233  a01, rs_A,
234  buff_1,
235  a12t, cs_A );
236 
237  // r_val = FLA_Sqrt( alpha11 );
238  // if ( r_val != FLA_SUCCESS )
239  // return ( FLA_Obj_length( A00 ) + 1 );
240  bl1_csqrte( alpha11, &e_val );
241  if ( e_val != FLA_SUCCESS ) return mn_behind;
242 
243  // FLA_Inv_scal_external( alpha11, a12t );
245  mn_ahead,
246  alpha11,
247  a12t, cs_A );
248 
249  /*------------------------------------------------------------*/
250 
251  }
252 
253  return FLA_SUCCESS;
254 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
int FLA_Error
Definition: FLA_type_defs.h:47
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_cgemv(trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition: bl1_gemv.c:125
void bl1_cinvscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_invscalv.c:52
@ BLIS1_TRANSPOSE
Definition: blis_type_defs.h:55
@ BLIS1_CONJUGATE
Definition: blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:133

References bl1_cdots(), bl1_cgemv(), bl1_cinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_opd_var2()

FLA_Error FLA_Chol_u_opd_var2 ( int  mn_A,
double *  buff_A,
int  rs_A,
int  cs_A 
)
138 {
139  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
140  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
141  int i;
142  FLA_Error e_val;
143 
144  for ( i = 0; i < mn_A; ++i )
145  {
146  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
147  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
148  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
149  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
150 
151  int mn_ahead = mn_A - i - 1;
152  int mn_behind = i;
153 
154  /*------------------------------------------------------------*/
155 
156  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
158  mn_behind,
159  buff_m1,
160  a01, rs_A,
161  a01, rs_A,
162  buff_1,
163  alpha11 );
164 
165  // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
168  mn_behind,
169  mn_ahead,
170  buff_m1,
171  A02, rs_A, cs_A,
172  a01, rs_A,
173  buff_1,
174  a12t, cs_A );
175 
176  // r_val = FLA_Sqrt( alpha11 );
177  // if ( r_val != FLA_SUCCESS )
178  // return ( FLA_Obj_length( A00 ) + 1 );
179  bl1_dsqrte( alpha11, &e_val );
180  if ( e_val != FLA_SUCCESS ) return mn_behind;
181 
182  // FLA_Inv_scal_external( alpha11, a12t );
184  mn_ahead,
185  alpha11,
186  a12t, cs_A );
187 
188  /*------------------------------------------------------------*/
189 
190  }
191 
192  return FLA_SUCCESS;
193 }
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_dgemv(trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition: bl1_gemv.c:69
void bl1_dinvscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_invscalv.c:26

References bl1_ddots(), bl1_dgemv(), bl1_dinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_ops_var2()

FLA_Error FLA_Chol_u_ops_var2 ( int  mn_A,
float *  buff_A,
int  rs_A,
int  cs_A 
)
77 {
78  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
79  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_ONE );
80  int i;
81  FLA_Error e_val;
82 
83  for ( i = 0; i < mn_A; ++i )
84  {
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 
90  int mn_ahead = mn_A - i - 1;
91  int mn_behind = i;
92 
93  /*------------------------------------------------------------*/
94 
95  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
97  mn_behind,
98  buff_m1,
99  a01, rs_A,
100  a01, rs_A,
101  buff_1,
102  alpha11 );
103 
104  // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
107  mn_behind,
108  mn_ahead,
109  buff_m1,
110  A02, rs_A, cs_A,
111  a01, rs_A,
112  buff_1,
113  a12t, cs_A );
114 
115  // r_val = FLA_Sqrt( alpha11 );
116  // if ( r_val != FLA_SUCCESS )
117  // return ( FLA_Obj_length( A00 ) + 1 );
118  bl1_ssqrte( alpha11, &e_val );
119  if ( e_val != FLA_SUCCESS ) return mn_behind;
120 
121  // FLA_Inv_scal_external( alpha11, a12t );
123  mn_ahead,
124  alpha11,
125  a12t, cs_A );
126 
127  /*------------------------------------------------------------*/
128 
129  }
130 
131  return FLA_SUCCESS;
132 }
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_sgemv(trans1_t transa, conj1_t conjx, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition: bl1_gemv.c:13
void bl1_sinvscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_invscalv.c:13

References bl1_sdots(), bl1_sgemv(), bl1_sinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().

◆ FLA_Chol_u_opt_var2()

FLA_Error FLA_Chol_u_opt_var2 ( FLA_Obj  A)
14 {
15  FLA_Error r_val = FLA_SUCCESS;
16  FLA_Datatype datatype;
17  int mn_A;
18  int rs_A, cs_A;
19 
20  datatype = FLA_Obj_datatype( A );
21 
22  mn_A = FLA_Obj_length( A );
23  rs_A = FLA_Obj_row_stride( A );
24  cs_A = FLA_Obj_col_stride( A );
25 
26 
27  switch ( datatype )
28  {
29  case FLA_FLOAT:
30  {
31  float* buff_A = FLA_FLOAT_PTR( A );
32 
33  r_val = FLA_Chol_u_ops_var2( mn_A,
34  buff_A, rs_A, cs_A );
35 
36  break;
37  }
38 
39  case FLA_DOUBLE:
40  {
41  double* buff_A = FLA_DOUBLE_PTR( A );
42 
43  r_val = FLA_Chol_u_opd_var2( mn_A,
44  buff_A, rs_A, cs_A );
45 
46  break;
47  }
48 
49  case FLA_COMPLEX:
50  {
51  scomplex* buff_A = FLA_COMPLEX_PTR( A );
52 
53  r_val = FLA_Chol_u_opc_var2( mn_A,
54  buff_A, rs_A, cs_A );
55 
56  break;
57  }
58 
59  case FLA_DOUBLE_COMPLEX:
60  {
61  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
62 
63  r_val = FLA_Chol_u_opz_var2( mn_A,
64  buff_A, rs_A, cs_A );
65 
66  break;
67  }
68  }
69 
70  return r_val;
71 }
FLA_Error FLA_Chol_u_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Chol_u_opt_var2.c:197
FLA_Error FLA_Chol_u_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Chol_u_opt_var2.c:75
FLA_Error FLA_Chol_u_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Chol_u_opt_var2.c:136
FLA_Error FLA_Chol_u_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Chol_u_opt_var2.c:258
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_Chol_u_opc_var2(), FLA_Chol_u_opd_var2(), FLA_Chol_u_ops_var2(), FLA_Chol_u_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), and FLA_Obj_row_stride().

Referenced by FLA_Chol_u().

◆ FLA_Chol_u_opz_var2()

FLA_Error FLA_Chol_u_opz_var2 ( int  mn_A,
dcomplex buff_A,
int  rs_A,
int  cs_A 
)
260 {
261  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
262  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
263  int i;
264  FLA_Error e_val;
265 
266  for ( i = 0; i < mn_A; ++i )
267  {
268  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
269  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
270  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
271  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
272 
273  int mn_ahead = mn_A - i - 1;
274  int mn_behind = i;
275 
276  /*------------------------------------------------------------*/
277 
278  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_MINUS_ONE, a01, a01, FLA_ONE, alpha11 );
280  mn_behind,
281  buff_m1,
282  a01, rs_A,
283  a01, rs_A,
284  buff_1,
285  alpha11 );
286 
287  // FLA_Gemvc_external( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, a01, FLA_ONE, a12t );
290  mn_behind,
291  mn_ahead,
292  buff_m1,
293  A02, rs_A, cs_A,
294  a01, rs_A,
295  buff_1,
296  a12t, cs_A );
297 
298  // r_val = FLA_Sqrt( alpha11 );
299  // if ( r_val != FLA_SUCCESS )
300  // return ( FLA_Obj_length( A00 ) + 1 );
301  bl1_zsqrte( alpha11, &e_val );
302  if ( e_val != FLA_SUCCESS ) return mn_behind;
303 
304  // FLA_Inv_scal_external( alpha11, a12t );
306  mn_ahead,
307  alpha11,
308  a12t, cs_A );
309 
310  /*------------------------------------------------------------*/
311 
312  }
313 
314  return FLA_SUCCESS;
315 }
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_zgemv(trans1_t transa, conj1_t conjx, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition: bl1_gemv.c:255
void bl1_zinvscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_invscalv.c:78

References bl1_zdots(), bl1_zgemv(), bl1_zinvscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_TRANSPOSE, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Chol_u_opt_var2().