libflame  revision_anchor
Functions
FLA_LQ_UT_opt_var2.c File Reference

(r)

Functions

FLA_Error FLA_LQ_UT_opt_var2 (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_LQ_UT_ops_var2 (int m_A, int n_A, float *buff_A, int rs_A, int cs_A, float *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_LQ_UT_opd_var2 (int m_A, int n_A, double *buff_A, int rs_A, int cs_A, double *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_LQ_UT_opc_var2 (int m_A, int n_A, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_LQ_UT_opz_var2 (int m_A, int n_A, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_T, int rs_T, int cs_T)
 

Function Documentation

◆ FLA_LQ_UT_opc_var2()

FLA_Error FLA_LQ_UT_opc_var2 ( int  m_A,
int  n_A,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_T,
int  rs_T,
int  cs_T 
)

References bl1_ccopyv(), bl1_cgemv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_r_opc_var1(), FLA_Househ2_UT_r_opc(), FLA_ONE, and i.

Referenced by FLA_LQ_UT_opt_var2().

233 {
234  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
235  int min_m_n = min( m_A, n_A );
236  int i;
237 
238  for ( i = 0; i < min_m_n; ++i )
239  {
240  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
241  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
242  scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
243  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
244  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
245  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
246 
247  scomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
248  scomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
249 
250  int m_ahead = m_A - i - 1;
251  int n_ahead = n_A - i - 1;
252  int m_behind = i;
253 
254  /*------------------------------------------------------------*/
255 
256  // FLA_Househ2_UT( FLA_RIGHT, alpha11, a12t
257  // tau11 );
258  FLA_Househ2_UT_r_opc( n_ahead,
259  alpha11,
260  a12t, cs_A,
261  tau11 );
262 
263  // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a12t, a21, A22 );
265  n_ahead,
266  tau11,
267  a12t, cs_A,
268  a21, rs_A,
269  A22, rs_A, cs_A );
270 
271  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
273  m_behind,
274  a01, rs_A,
275  t01, rs_T );
276 
277  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
278  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
281  m_behind,
282  n_ahead,
283  buff_1,
284  A02, rs_A, cs_A,
285  a12t, cs_A,
286  buff_1,
287  t01, rs_T );
288 
289  /*------------------------------------------------------------*/
290 
291  }
292 
293  return FLA_SUCCESS;
294 }
Definition: blis_type_defs.h:81
FLA_Error FLA_Househ2_UT_r_opc(int m_x2, scomplex *chi_1, scomplex *x2, int inc_x2, scomplex *tau)
Definition: FLA_Househ2_UT.c:677
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:56
Definition: blis_type_defs.h:132
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
int i
Definition: bl1_axmyv2.c:145
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_copyv.c:49
FLA_Error FLA_Apply_H2_UT_r_opc_var1(int n_u2h_A2, int m_a1, scomplex *tau, scomplex *u2h, int inc_u2h, scomplex *a1, int inc_a1, scomplex *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_r_opt_var1.c:254

◆ FLA_LQ_UT_opd_var2()

FLA_Error FLA_LQ_UT_opd_var2 ( int  m_A,
int  n_A,
double *  buff_A,
int  rs_A,
int  cs_A,
double *  buff_T,
int  rs_T,
int  cs_T 
)

References bl1_dcopyv(), bl1_dgemv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_r_opd_var1(), FLA_Househ2_UT_r_opd(), FLA_ONE, and i.

Referenced by FLA_LQ_UT_opt_var2().

164 {
165  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
166  int min_m_n = min( m_A, n_A );
167  int i;
168 
169  for ( i = 0; i < min_m_n; ++i )
170  {
171  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
172  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
173  double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
174  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
175  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
176  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
177 
178  double* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
179  double* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
180 
181  int m_ahead = m_A - i - 1;
182  int n_ahead = n_A - i - 1;
183  int m_behind = i;
184 
185  /*------------------------------------------------------------*/
186 
187  // FLA_Househ2_UT( FLA_RIGHT, alpha11, a12t
188  // tau11 );
189  FLA_Househ2_UT_r_opd( n_ahead,
190  alpha11,
191  a12t, cs_A,
192  tau11 );
193 
194  // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a12t, a21, A22 );
196  n_ahead,
197  tau11,
198  a12t, cs_A,
199  a21, rs_A,
200  A22, rs_A, cs_A );
201 
202  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
204  m_behind,
205  a01, rs_A,
206  t01, rs_T );
207 
208  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
209  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
212  m_behind,
213  n_ahead,
214  buff_1,
215  A02, rs_A, cs_A,
216  a12t, cs_A,
217  buff_1,
218  t01, rs_T );
219 
220  /*------------------------------------------------------------*/
221 
222  }
223 
224  return FLA_SUCCESS;
225 }
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
Definition: blis_type_defs.h:81
FLA_Error FLA_Househ2_UT_r_opd(int m_x2, double *chi_1, double *x2, int inc_x2, double *tau)
Definition: FLA_Househ2_UT.c:664
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:56
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition: bl1_copyv.c:42
int i
Definition: bl1_axmyv2.c:145
FLA_Error FLA_Apply_H2_UT_r_opd_var1(int n_u2h_A2, int m_a1, double *tau, double *u2h, int inc_u2h, double *a1, int inc_a1, double *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_r_opt_var1.c:181

◆ FLA_LQ_UT_ops_var2()

FLA_Error FLA_LQ_UT_ops_var2 ( int  m_A,
int  n_A,
float *  buff_A,
int  rs_A,
int  cs_A,
float *  buff_T,
int  rs_T,
int  cs_T 
)

References bl1_scopyv(), bl1_sgemv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_r_ops_var1(), FLA_Househ2_UT_r_ops(), FLA_ONE, and i.

Referenced by FLA_LQ_UT_opt_var2().

95 {
96  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
97  int min_m_n = min( m_A, n_A );
98  int i;
99 
100  for ( i = 0; i < min_m_n; ++i )
101  {
102  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
103  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
104  float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
105  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
106  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
107  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
108 
109  float* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
110  float* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
111 
112  int m_ahead = m_A - i - 1;
113  int n_ahead = n_A - i - 1;
114  int m_behind = i;
115 
116  /*------------------------------------------------------------*/
117 
118  // FLA_Househ2_UT( FLA_RIGHT, alpha11, a12t
119  // tau11 );
120  FLA_Househ2_UT_r_ops( n_ahead,
121  alpha11,
122  a12t, cs_A,
123  tau11 );
124 
125  // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a12t, a21, A22 );
127  n_ahead,
128  tau11,
129  a12t, cs_A,
130  a21, rs_A,
131  A22, rs_A, cs_A );
132 
133  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
135  m_behind,
136  a01, rs_A,
137  t01, rs_T );
138 
139  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
140  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
143  m_behind,
144  n_ahead,
145  buff_1,
146  A02, rs_A, cs_A,
147  a12t, cs_A,
148  buff_1,
149  t01, rs_T );
150 
151  /*------------------------------------------------------------*/
152 
153  }
154 
155  return FLA_SUCCESS;
156 }
FLA_Error FLA_Househ2_UT_r_ops(int m_x2, float *chi_1, float *x2, int inc_x2, float *tau)
Definition: FLA_Househ2_UT.c:651
Definition: blis_type_defs.h:81
FLA_Error FLA_Apply_H2_UT_r_ops_var1(int n_u2h_A2, int m_a1, float *tau, float *u2h, int inc_u2h, float *a1, int inc_a1, float *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_r_opt_var1.c:108
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
Definition: blis_type_defs.h:56
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition: bl1_copyv.c:35
int i
Definition: bl1_axmyv2.c:145

◆ FLA_LQ_UT_opt_var2()

FLA_Error FLA_LQ_UT_opt_var2 ( FLA_Obj  A,
FLA_Obj  T 
)

References FLA_LQ_UT_opc_var2(), FLA_LQ_UT_opd_var2(), FLA_LQ_UT_ops_var2(), FLA_LQ_UT_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and FLA_Obj_width().

Referenced by FLA_LQ_UT_internal().

14 {
15  FLA_Datatype datatype;
16  int m_A, n_A;
17  int rs_A, cs_A;
18  int rs_T, cs_T;
19 
20  datatype = FLA_Obj_datatype( A );
21 
22  m_A = FLA_Obj_length( A );
23  n_A = FLA_Obj_width( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27  rs_T = FLA_Obj_row_stride( T );
28  cs_T = FLA_Obj_col_stride( T );
29 
30 
31  switch ( datatype )
32  {
33  case FLA_FLOAT:
34  {
35  float* buff_A = FLA_FLOAT_PTR( A );
36  float* buff_T = FLA_FLOAT_PTR( T );
37 
38  FLA_LQ_UT_ops_var2( m_A,
39  n_A,
40  buff_A, rs_A, cs_A,
41  buff_T, rs_T, cs_T );
42 
43  break;
44  }
45 
46  case FLA_DOUBLE:
47  {
48  double* buff_A = FLA_DOUBLE_PTR( A );
49  double* buff_T = FLA_DOUBLE_PTR( T );
50 
51  FLA_LQ_UT_opd_var2( m_A,
52  n_A,
53  buff_A, rs_A, cs_A,
54  buff_T, rs_T, cs_T );
55 
56  break;
57  }
58 
59  case FLA_COMPLEX:
60  {
61  scomplex* buff_A = FLA_COMPLEX_PTR( A );
62  scomplex* buff_T = FLA_COMPLEX_PTR( T );
63 
64  FLA_LQ_UT_opc_var2( m_A,
65  n_A,
66  buff_A, rs_A, cs_A,
67  buff_T, rs_T, cs_T );
68 
69  break;
70  }
71 
72  case FLA_DOUBLE_COMPLEX:
73  {
74  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
75  dcomplex* buff_T = FLA_DOUBLE_COMPLEX_PTR( T );
76 
77  FLA_LQ_UT_opz_var2( m_A,
78  n_A,
79  buff_A, rs_A, cs_A,
80  buff_T, rs_T, cs_T );
81 
82  break;
83  }
84  }
85 
86  return FLA_SUCCESS;
87 }
FLA_Error FLA_LQ_UT_opz_var2(int m_A, int n_A, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_T, int rs_T, int cs_T)
Definition: FLA_LQ_UT_opt_var2.c:298
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Error FLA_LQ_UT_ops_var2(int m_A, int n_A, float *buff_A, int rs_A, int cs_A, float *buff_T, int rs_T, int cs_T)
Definition: FLA_LQ_UT_opt_var2.c:91
Definition: blis_type_defs.h:132
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
FLA_Error FLA_LQ_UT_opc_var2(int m_A, int n_A, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_T, int rs_T, int cs_T)
Definition: FLA_LQ_UT_opt_var2.c:229
FLA_Error FLA_LQ_UT_opd_var2(int m_A, int n_A, double *buff_A, int rs_A, int cs_A, double *buff_T, int rs_T, int cs_T)
Definition: FLA_LQ_UT_opt_var2.c:160
Definition: blis_type_defs.h:137

◆ FLA_LQ_UT_opz_var2()

FLA_Error FLA_LQ_UT_opz_var2 ( int  m_A,
int  n_A,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_T,
int  rs_T,
int  cs_T 
)

References bl1_zcopyv(), bl1_zgemv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_r_opz_var1(), FLA_Househ2_UT_r_opz(), FLA_ONE, and i.

Referenced by FLA_LQ_UT_opt_var2().

302 {
303  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
304  int min_m_n = min( m_A, n_A );
305  int i;
306 
307  for ( i = 0; i < min_m_n; ++i )
308  {
309  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
310  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
311  dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
312  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
313  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
314  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
315 
316  dcomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
317  dcomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
318 
319  int m_ahead = m_A - i - 1;
320  int n_ahead = n_A - i - 1;
321  int m_behind = i;
322 
323  /*------------------------------------------------------------*/
324 
325  // FLA_Househ2_UT( FLA_RIGHT, alpha11, a12t
326  // tau11 );
327  FLA_Househ2_UT_r_opz( n_ahead,
328  alpha11,
329  a12t, cs_A,
330  tau11 );
331 
332  // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a12t, a21, A22 );
334  n_ahead,
335  tau11,
336  a12t, cs_A,
337  a21, rs_A,
338  A22, rs_A, cs_A );
339 
340  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
342  m_behind,
343  a01, rs_A,
344  t01, rs_T );
345 
346  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
347  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
350  m_behind,
351  n_ahead,
352  buff_1,
353  A02, rs_A, cs_A,
354  a12t, cs_A,
355  buff_1,
356  t01, rs_T );
357 
358  /*------------------------------------------------------------*/
359 
360  }
361 
362  return FLA_SUCCESS;
363 }
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h: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
int i
Definition: bl1_axmyv2.c:145
FLA_Error FLA_Househ2_UT_r_opz(int m_x2, dcomplex *chi_1, dcomplex *x2, int inc_x2, dcomplex *tau)
Definition: FLA_Househ2_UT.c:693
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_copyv.c:63
Definition: blis_type_defs.h:137
FLA_Error FLA_Apply_H2_UT_r_opz_var1(int n_u2h_A2, int m_a1, dcomplex *tau, dcomplex *u2h, int inc_u2h, dcomplex *a1, int inc_a1, dcomplex *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_r_opt_var1.c:327