libflame  revision_anchor
Functions
FLA_QR_UT_opt_var2.c File Reference

(r)

Functions

FLA_Error FLA_QR_UT_opt_var2 (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_QR_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_QR_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_QR_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_QR_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_QR_UT_opc_var2()

FLA_Error FLA_QR_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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opc_var1(), FLA_Househ2_UT_l_opc(), FLA_ONE, and i.

Referenced by FLA_QR_UT_opt_var2().

235 {
236  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
237  int min_m_n = min( m_A, n_A );
238  int i;
239 
240  for ( i = 0; i < min_m_n; ++i )
241  {
242  scomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
243  scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
244  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
245  scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
246  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
247  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
248 
249  scomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
250  scomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
251 
252  int m_ahead = m_A - i - 1;
253  int n_ahead = n_A - i - 1;
254  int n_behind = i;
255 
256  /*------------------------------------------------------------*/
257 
258  // FLA_Househ2_UT( FLA_LEFT,
259  // alpha11,
260  // a21, tau11 );
261  FLA_Househ2_UT_l_opc( m_ahead,
262  alpha11,
263  a21, rs_A,
264  tau11 );
265 
266  // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21, a12t,
267  // A22 );
269  n_ahead,
270  tau11,
271  a21, rs_A,
272  a12t, cs_A,
273  A22, rs_A, cs_A );
274 
275  // FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 );
277  n_behind,
278  a10t, cs_A,
279  t01, rs_T );
280 
281  // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 );
284  m_ahead,
285  n_behind,
286  buff_1,
287  A20, rs_A, cs_A,
288  a21, rs_A,
289  buff_1,
290  t01, rs_T );
291 
292  /*------------------------------------------------------------*/
293 
294  }
295 
296  return FLA_SUCCESS;
297 }
Definition: blis_type_defs.h:57
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:132
FLA_Error FLA_Apply_H2_UT_l_opc_var1(int m_u2_A2, int n_a1t, scomplex *tau, scomplex *u2, int inc_u2, scomplex *a1t, int inc_a1t, scomplex *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_l_opt_var1.c:269
FLA_Error FLA_Househ2_UT_l_opc(int m_x2, scomplex *chi_1, scomplex *x2, int inc_x2, scomplex *tau)
Definition: FLA_Househ2_UT.c:390
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_QR_UT_opd_var2()

FLA_Error FLA_QR_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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opd_var1(), FLA_Househ2_UT_l_opd(), FLA_ONE, and i.

Referenced by FLA_QR_UT_opt_var2().

165 {
166  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
167  int min_m_n = min( m_A, n_A );
168  int i;
169 
170  for ( i = 0; i < min_m_n; ++i )
171  {
172  double* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
173  double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
174  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
175  double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
176  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
177  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
178 
179  double* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
180  double* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
181 
182  int m_ahead = m_A - i - 1;
183  int n_ahead = n_A - i - 1;
184  int n_behind = i;
185 
186  /*------------------------------------------------------------*/
187 
188  // FLA_Househ2_UT( FLA_LEFT,
189  // alpha11,
190  // a21, tau11 );
191  FLA_Househ2_UT_l_opd( m_ahead,
192  alpha11,
193  a21, rs_A,
194  tau11 );
195 
196  // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21, a12t,
197  // A22 );
199  n_ahead,
200  tau11,
201  a21, rs_A,
202  a12t, cs_A,
203  A22, rs_A, cs_A );
204 
205  // FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 );
207  n_behind,
208  a10t, cs_A,
209  t01, rs_T );
210 
211  // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 );
214  m_ahead,
215  n_behind,
216  buff_1,
217  A20, rs_A, cs_A,
218  a21, rs_A,
219  buff_1,
220  t01, rs_T );
221 
222  /*------------------------------------------------------------*/
223 
224  }
225 
226  return FLA_SUCCESS;
227 }
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
FLA_Error FLA_Househ2_UT_l_opd(int m_x2, double *chi_1, double *x2, int inc_x2, double *tau)
Definition: FLA_Househ2_UT.c:274
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
FLA_Error FLA_Apply_H2_UT_l_opd_var1(int m_u2_A2, int n_a1t, double *tau, double *u2, int inc_u2, double *a1t, int inc_a1t, double *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_l_opt_var1.c:195
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_QR_UT_ops_var2()

FLA_Error FLA_QR_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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_ops_var1(), FLA_Househ2_UT_l_ops(), FLA_ONE, and i.

Referenced by FLA_QR_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* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
103  float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
104  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
105  float* a21 = buff_A + (i )*cs_A + (i+1)*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 n_behind = i;
115 
116  /*------------------------------------------------------------*/
117 
118  // FLA_Househ2_UT( FLA_LEFT,
119  // alpha11,
120  // a21, tau11 );
121  FLA_Househ2_UT_l_ops( m_ahead,
122  alpha11,
123  a21, rs_A,
124  tau11 );
125 
126  // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21, a12t,
127  // A22 );
129  n_ahead,
130  tau11,
131  a21, rs_A,
132  a12t, cs_A,
133  A22, rs_A, cs_A );
134 
135  // FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 );
137  n_behind,
138  a10t, cs_A,
139  t01, rs_T );
140 
141  // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 );
144  m_ahead,
145  n_behind,
146  buff_1,
147  A20, rs_A, cs_A,
148  a21, rs_A,
149  buff_1,
150  t01, rs_T );
151 
152  /*------------------------------------------------------------*/
153 
154  }
155 
156  return FLA_SUCCESS;
157 }
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
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
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition: bl1_copyv.c:35
FLA_Error FLA_Apply_H2_UT_l_ops_var1(int m_u2_A2, int n_a1t, float *tau, float *u2, int inc_u2, float *a1t, int inc_a1t, float *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_l_opt_var1.c:121
FLA_Error FLA_Househ2_UT_l_ops(int m_x2, float *chi_1, float *x2, int inc_x2, float *tau)
Definition: FLA_Househ2_UT.c:160
int i
Definition: bl1_axmyv2.c:145

◆ FLA_QR_UT_opt_var2()

FLA_Error FLA_QR_UT_opt_var2 ( FLA_Obj  A,
FLA_Obj  T 
)

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_QR_UT_opc_var2(), FLA_QR_UT_opd_var2(), FLA_QR_UT_ops_var2(), and FLA_QR_UT_opz_var2().

Referenced by FLA_QR_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_QR_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_QR_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_QR_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_QR_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_QR_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_QR_UT_opt_var2.c:301
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Error FLA_QR_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_QR_UT_opt_var2.c:231
FLA_Error FLA_QR_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_QR_UT_opt_var2.c:161
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_QR_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_QR_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
Definition: blis_type_defs.h:137

◆ FLA_QR_UT_opz_var2()

FLA_Error FLA_QR_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_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opz_var1(), FLA_Househ2_UT_l_opz(), FLA_ONE, and i.

Referenced by FLA_QR_UT_opt_var2().

305 {
306  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
307  int min_m_n = min( m_A, n_A );
308  int i;
309 
310  for ( i = 0; i < min_m_n; ++i )
311  {
312  dcomplex* a10t = buff_A + (0 )*cs_A + (i )*rs_A;
313  dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
314  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
315  dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
316  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
317  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
318 
319  dcomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
320  dcomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
321 
322  int m_ahead = m_A - i - 1;
323  int n_ahead = n_A - i - 1;
324  int n_behind = i;
325 
326  /*------------------------------------------------------------*/
327 
328  // FLA_Househ2_UT( FLA_LEFT,
329  // alpha11,
330  // a21, tau11 );
331  FLA_Househ2_UT_l_opz( m_ahead,
332  alpha11,
333  a21, rs_A,
334  tau11 );
335 
336  // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21, a12t,
337  // A22 );
339  n_ahead,
340  tau11,
341  a21, rs_A,
342  a12t, cs_A,
343  A22, rs_A, cs_A );
344 
345  // FLA_Copyt_external( FLA_CONJ_TRANSPOSE, a10t, t01 );
347  n_behind,
348  a10t, cs_A,
349  t01, rs_T );
350 
351  // FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ONE, t01 );
354  m_ahead,
355  n_behind,
356  buff_1,
357  A20, rs_A, cs_A,
358  a21, rs_A,
359  buff_1,
360  t01, rs_T );
361 
362  /*------------------------------------------------------------*/
363 
364  }
365 
366  return FLA_SUCCESS;
367 }
FLA_Error FLA_Apply_H2_UT_l_opz_var1(int m_u2_A2, int n_a1t, dcomplex *tau, dcomplex *u2, int inc_u2, dcomplex *a1t, int inc_a1t, dcomplex *A2, int rs_A2, int cs_A2)
Definition: FLA_Apply_H2_UT_l_opt_var1.c:343
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition: bl1_copyv.c:63
FLA_Error FLA_Househ2_UT_l_opz(int m_x2, dcomplex *chi_1, dcomplex *x2, int inc_x2, dcomplex *tau)
Definition: FLA_Househ2_UT.c:521
Definition: blis_type_defs.h:137