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 
)
235{
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 );
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}
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_Obj FLA_ONE
Definition FLA_Init.c:18
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
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
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
@ BLIS1_CONJ_TRANSPOSE
Definition blis_type_defs.h:57
@ 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_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().

◆ 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 
)
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 );
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}
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
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
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42
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

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

◆ 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 
)
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 );
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}
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
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition bl1_copyv.c:35
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

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

◆ FLA_QR_UT_opt_var2()

FLA_Error FLA_QR_UT_opt_var2 ( FLA_Obj  A,
FLA_Obj  T 
)
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 );
26
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
39 n_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
52 n_A,
54 buff_T, rs_T, cs_T );
55
56 break;
57 }
58
59 case FLA_COMPLEX:
60 {
63
65 n_A,
67 buff_T, rs_T, cs_T );
68
69 break;
70 }
71
73 {
76
78 n_A,
80 buff_T, rs_T, cs_T );
81
82 break;
83 }
84 }
85
86 return FLA_SUCCESS;
87}
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
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_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
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
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
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_Obj_width(), FLA_QR_UT_opc_var2(), FLA_QR_UT_opd_var2(), FLA_QR_UT_ops_var2(), FLA_QR_UT_opz_var2(), and i.

Referenced by FLA_QR_UT_internal().

◆ 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 
)
305{
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 );
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
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
void bl1_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
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

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