libflame revision_anchor
Functions
FLA_Hess_UT_opt_var1.c File Reference

(r)

Functions

FLA_Error FLA_Hess_UT_opt_var1 (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_Hess_UT_step_opt_var1 (FLA_Obj A, FLA_Obj T)
 
FLA_Error FLA_Hess_UT_step_ops_var1 (int m_A, int m_T, float *buff_A, int rs_A, int cs_A, float *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_Hess_UT_step_opd_var1 (int m_A, int m_T, double *buff_A, int rs_A, int cs_A, double *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_Hess_UT_step_opc_var1 (int m_A, int m_T, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_T, int rs_T, int cs_T)
 
FLA_Error FLA_Hess_UT_step_opz_var1 (int m_A, int m_T, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_T, int rs_T, int cs_T)
 

Function Documentation

◆ FLA_Hess_UT_opt_var1()

FLA_Error FLA_Hess_UT_opt_var1 ( FLA_Obj  A,
FLA_Obj  T 
)
14{
15 return FLA_Hess_UT_step_opt_var1( A, T );
16}
FLA_Error FLA_Hess_UT_step_opt_var1(FLA_Obj A, FLA_Obj T)
Definition FLA_Hess_UT_opt_var1.c:18
int i
Definition bl1_axmyv2.c:145

References FLA_Hess_UT_step_opt_var1(), and i.

Referenced by FLA_Hess_UT_internal().

◆ FLA_Hess_UT_step_opc_var1()

FLA_Error FLA_Hess_UT_step_opc_var1 ( int  m_A,
int  m_T,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_T,
int  rs_T,
int  cs_T 
)
287{
290
292 int i;
293
294 // b_alg = FLA_Obj_length( T );
295 int b_alg = m_T;
296
297 for ( i = 0; i < b_alg; ++i )
298 {
299 scomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
300 scomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
301
302 scomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
303 scomplex* a21_b = buff_A + (i )*cs_A + (i+2)*rs_A;
304
305 scomplex* A22_t = buff_A + (i+1)*cs_A + (i+1)*rs_A;
306 scomplex* A22_b = buff_A + (i+1)*cs_A + (i+2)*rs_A;
307
308 scomplex* A2_l = buff_A + (i+1)*cs_A + (0 )*rs_A;
309 scomplex* A2_r = buff_A + (i+2)*cs_A + (0 )*rs_A;
310
311 scomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
312 scomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
313
314 int m_ahead = m_A - i - 1;
315 int n_ahead = m_A - i - 1;
316 int n_behind = i;
317
318 /*------------------------------------------------------------*/
319
320 if ( m_ahead > 0 )
321 {
322 // FLA_Househ2_UT( FLA_LEFT,
323 // a21_t,
324 // a21_b, tau11 );
326 a21_t,
327 a21_b, rs_A,
328 tau11 );
329
330 // FLA_Copy( a21_t, first_elem );
331 // FLA_Set( FLA_ONE, a21_t );
332 first_elem = *a21_t;
333 *a21_t = *buff_1;
334
335 // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21_b, A22_t,
336 // A22_b );
338 n_ahead,
339 tau11,
340 a21_b, rs_A,
341 A22_t, cs_A,
342 A22_b, rs_A, cs_A );
343
344 // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a21_b, A2_l, A2_r );
346 n_ahead - 1,
347 tau11,
348 a21_b, rs_A,
349 A2_l, rs_A,
350 A2_r, rs_A, cs_A );
351
352 // FLA_Gemv( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ZERO, t01 );
355 m_ahead,
356 n_behind,
357 buff_1,
358 A20, rs_A, cs_A,
359 a21, rs_A,
360 buff_0,
361 t01, rs_T );
362
363 // FLA_Copy( first_elem, a21_t );
364 *a21_t = first_elem;
365 }
366
367 /*------------------------------------------------------------*/
368
369 }
370
371 return FLA_SUCCESS;
372}
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_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_Obj FLA_ZERO
Definition FLA_Init.c:20
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
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_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_cgemv(), BLIS1_CONJ_TRANSPOSE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opc_var1(), FLA_Apply_H2_UT_r_opc_var1(), FLA_Househ2_UT_l_opc(), FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Hess_UT_step_opt_var1().

◆ FLA_Hess_UT_step_opd_var1()

FLA_Error FLA_Hess_UT_step_opd_var1 ( int  m_A,
int  m_T,
double buff_A,
int  rs_A,
int  cs_A,
double buff_T,
int  rs_T,
int  cs_T 
)
194{
195 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
196 double* buff_0 = FLA_DOUBLE_PTR( FLA_ZERO );
197
198 double first_elem;
199 int i;
200
201 // b_alg = FLA_Obj_length( T );
202 int b_alg = m_T;
203
204 for ( i = 0; i < b_alg; ++i )
205 {
206 double* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
207 double* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
208
209 double* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
210 double* a21_b = buff_A + (i )*cs_A + (i+2)*rs_A;
211
212 double* A22_t = buff_A + (i+1)*cs_A + (i+1)*rs_A;
213 double* A22_b = buff_A + (i+1)*cs_A + (i+2)*rs_A;
214
215 double* A2_l = buff_A + (i+1)*cs_A + (0 )*rs_A;
216 double* A2_r = buff_A + (i+2)*cs_A + (0 )*rs_A;
217
218 double* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
219 double* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
220
221 int m_ahead = m_A - i - 1;
222 int n_ahead = m_A - i - 1;
223 int n_behind = i;
224
225 /*------------------------------------------------------------*/
226
227 if ( m_ahead > 0 )
228 {
229 // FLA_Househ2_UT( FLA_LEFT,
230 // a21_t,
231 // a21_b, tau11 );
233 a21_t,
234 a21_b, rs_A,
235 tau11 );
236
237 // FLA_Copy( a21_t, first_elem );
238 // FLA_Set( FLA_ONE, a21_t );
239 first_elem = *a21_t;
240 *a21_t = *buff_1;
241
242 // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21_b, A22_t,
243 // A22_b );
245 n_ahead,
246 tau11,
247 a21_b, rs_A,
248 A22_t, cs_A,
249 A22_b, rs_A, cs_A );
250
251 // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a21_b, A2_l, A2_r );
253 n_ahead - 1,
254 tau11,
255 a21_b, rs_A,
256 A2_l, rs_A,
257 A2_r, rs_A, cs_A );
258
259 // FLA_Gemv( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ZERO, t01 );
262 m_ahead,
263 n_behind,
264 buff_1,
265 A20, rs_A, cs_A,
266 a21, rs_A,
267 buff_0,
268 t01, rs_T );
269
270 // FLA_Copy( first_elem, a21_t );
271 *a21_t = first_elem;
272 }
273
274 /*------------------------------------------------------------*/
275
276 }
277
278 return FLA_SUCCESS;
279}
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_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_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_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_dgemv(), BLIS1_CONJ_TRANSPOSE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opd_var1(), FLA_Apply_H2_UT_r_opd_var1(), FLA_Househ2_UT_l_opd(), FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Hess_UT_step_opt_var1().

◆ FLA_Hess_UT_step_ops_var1()

FLA_Error FLA_Hess_UT_step_ops_var1 ( int  m_A,
int  m_T,
float buff_A,
int  rs_A,
int  cs_A,
float buff_T,
int  rs_T,
int  cs_T 
)
101{
102 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
103 float* buff_0 = FLA_FLOAT_PTR( FLA_ZERO );
104
105 float first_elem;
106 int i;
107
108 // b_alg = FLA_Obj_length( T );
109 int b_alg = m_T;
110
111 for ( i = 0; i < b_alg; ++i )
112 {
113 float* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
114 float* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
115
116 float* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
117 float* a21_b = buff_A + (i )*cs_A + (i+2)*rs_A;
118
119 float* A22_t = buff_A + (i+1)*cs_A + (i+1)*rs_A;
120 float* A22_b = buff_A + (i+1)*cs_A + (i+2)*rs_A;
121
122 float* A2_l = buff_A + (i+1)*cs_A + (0 )*rs_A;
123 float* A2_r = buff_A + (i+2)*cs_A + (0 )*rs_A;
124
125 float* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
126 float* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
127
128 int m_ahead = m_A - i - 1;
129 int n_ahead = m_A - i - 1;
130 int n_behind = i;
131
132 /*------------------------------------------------------------*/
133
134 if ( m_ahead > 0 )
135 {
136 // FLA_Househ2_UT( FLA_LEFT,
137 // a21_t,
138 // a21_b, tau11 );
140 a21_t,
141 a21_b, rs_A,
142 tau11 );
143
144 // FLA_Copy( a21_t, first_elem );
145 // FLA_Set( FLA_ONE, a21_t );
146 first_elem = *a21_t;
147 *a21_t = *buff_1;
148
149 // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21_b, A22_t,
150 // A22_b );
152 n_ahead,
153 tau11,
154 a21_b, rs_A,
155 A22_t, cs_A,
156 A22_b, rs_A, cs_A );
157
158 // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a21_b, A2_l, A2_r );
160 n_ahead - 1,
161 tau11,
162 a21_b, rs_A,
163 A2_l, rs_A,
164 A2_r, rs_A, cs_A );
165
166 // FLA_Gemv( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ZERO, t01 );
169 m_ahead,
170 n_behind,
171 buff_1,
172 A20, rs_A, cs_A,
173 a21, rs_A,
174 buff_0,
175 t01, rs_T );
176
177 // FLA_Copy( first_elem, a21_t );
178 *a21_t = first_elem;
179 }
180
181 /*------------------------------------------------------------*/
182
183 }
184
185 return FLA_SUCCESS;
186}
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_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
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_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_sgemv(), BLIS1_CONJ_TRANSPOSE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_ops_var1(), FLA_Apply_H2_UT_r_ops_var1(), FLA_Househ2_UT_l_ops(), FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Hess_UT_step_opt_var1().

◆ FLA_Hess_UT_step_opt_var1()

FLA_Error FLA_Hess_UT_step_opt_var1 ( FLA_Obj  A,
FLA_Obj  T 
)
19{
20 FLA_Datatype datatype;
21 int m_A, m_T;
22 int rs_A, cs_A;
23 int rs_T, cs_T;
24
25 datatype = FLA_Obj_datatype( A );
26
27 m_A = FLA_Obj_length( A );
28 m_T = FLA_Obj_length( T );
29
32
35
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_T = FLA_FLOAT_PTR( T );
43
45 m_T,
47 buff_T, rs_T, cs_T );
48
49 break;
50 }
51
52 case FLA_DOUBLE:
53 {
54 double* buff_A = FLA_DOUBLE_PTR( A );
55 double* buff_T = FLA_DOUBLE_PTR( T );
56
58 m_T,
60 buff_T, rs_T, cs_T );
61
62 break;
63 }
64
65 case FLA_COMPLEX:
66 {
69
71 m_T,
73 buff_T, rs_T, cs_T );
74
75 break;
76 }
77
79 {
82
84 m_T,
86 buff_T, rs_T, cs_T );
87
88 break;
89 }
90 }
91
92 return FLA_SUCCESS;
93}
FLA_Error FLA_Hess_UT_step_opd_var1(int m_A, int m_T, double *buff_A, int rs_A, int cs_A, double *buff_T, int rs_T, int cs_T)
Definition FLA_Hess_UT_opt_var1.c:190
FLA_Error FLA_Hess_UT_step_opz_var1(int m_A, int m_T, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_T, int rs_T, int cs_T)
Definition FLA_Hess_UT_opt_var1.c:376
FLA_Error FLA_Hess_UT_step_opc_var1(int m_A, int m_T, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_T, int rs_T, int cs_T)
Definition FLA_Hess_UT_opt_var1.c:283
FLA_Error FLA_Hess_UT_step_ops_var1(int m_A, int m_T, float *buff_A, int rs_A, int cs_A, float *buff_T, int rs_T, int cs_T)
Definition FLA_Hess_UT_opt_var1.c:97
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_Hess_UT_step_opc_var1(), FLA_Hess_UT_step_opd_var1(), FLA_Hess_UT_step_ops_var1(), FLA_Hess_UT_step_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Hess_UT_blk_var1(), and FLA_Hess_UT_opt_var1().

◆ FLA_Hess_UT_step_opz_var1()

FLA_Error FLA_Hess_UT_step_opz_var1 ( int  m_A,
int  m_T,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_T,
int  rs_T,
int  cs_T 
)
380{
383
385 int i;
386
387 // b_alg = FLA_Obj_length( T );
388 int b_alg = m_T;
389
390 for ( i = 0; i < b_alg; ++i )
391 {
392 dcomplex* A20 = buff_A + (0 )*cs_A + (i+1)*rs_A;
393 dcomplex* a21 = buff_A + (i )*cs_A + (i+1)*rs_A;
394
395 dcomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
396 dcomplex* a21_b = buff_A + (i )*cs_A + (i+2)*rs_A;
397
398 dcomplex* A22_t = buff_A + (i+1)*cs_A + (i+1)*rs_A;
399 dcomplex* A22_b = buff_A + (i+1)*cs_A + (i+2)*rs_A;
400
401 dcomplex* A2_l = buff_A + (i+1)*cs_A + (0 )*rs_A;
402 dcomplex* A2_r = buff_A + (i+2)*cs_A + (0 )*rs_A;
403
404 dcomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
405 dcomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
406
407 int m_ahead = m_A - i - 1;
408 int n_ahead = m_A - i - 1;
409 int n_behind = i;
410
411 /*------------------------------------------------------------*/
412
413 if ( m_ahead > 0 )
414 {
415 // FLA_Househ2_UT( FLA_LEFT,
416 // a21_t,
417 // a21_b, tau11 );
419 a21_t,
420 a21_b, rs_A,
421 tau11 );
422
423 // FLA_Copy( a21_t, first_elem );
424 // FLA_Set( FLA_ONE, a21_t );
425 first_elem = *a21_t;
426 *a21_t = *buff_1;
427
428 // FLA_Apply_H2_UT( FLA_LEFT, tau11, a21_b, A22_t,
429 // A22_b );
431 n_ahead,
432 tau11,
433 a21_b, rs_A,
434 A22_t, cs_A,
435 A22_b, rs_A, cs_A );
436
437 // FLA_Apply_H2_UT( FLA_RIGHT, tau11, a21_b, A2_l, A2_r );
439 n_ahead - 1,
440 tau11,
441 a21_b, rs_A,
442 A2_l, rs_A,
443 A2_r, rs_A, cs_A );
444
445 // FLA_Gemv( FLA_CONJ_TRANSPOSE, FLA_ONE, A20, a21, FLA_ZERO, t01 );
448 m_ahead,
449 n_behind,
450 buff_1,
451 A20, rs_A, cs_A,
452 a21, rs_A,
453 buff_0,
454 t01, rs_T );
455
456 // FLA_Copy( first_elem, a21_t );
457 *a21_t = first_elem;
458 }
459
460 /*------------------------------------------------------------*/
461
462 }
463
464 return FLA_SUCCESS;
465}
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_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
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_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_zgemv(), BLIS1_CONJ_TRANSPOSE, BLIS1_NO_CONJUGATE, FLA_Apply_H2_UT_l_opz_var1(), FLA_Apply_H2_UT_r_opz_var1(), FLA_Househ2_UT_l_opz(), FLA_ONE, FLA_ZERO, and i.

Referenced by FLA_Hess_UT_step_opt_var1().