libflame  revision_anchor
Functions
FLA_Accum_T_UT_fr.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Accum_T_UT_fr_unb_var1 (FLA_Obj A, FLA_Obj t, FLA_Obj T)
 
FLA_Error FLA_Accum_T_UT_fr_blk_var2 (FLA_Obj A, FLA_Obj t, FLA_Obj T)
 
FLA_Error FLA_Accum_T_UT_fr_opt_var1 (FLA_Obj A, FLA_Obj t, FLA_Obj T)
 
FLA_Error FLA_Accum_T_UT_fr_ops_var1 (int m_A, int n_A, float *A, int rs_A, int cs_A, int m_t, float *t, int inc_t, float *T, int rs_T, int cs_T)
 
FLA_Error FLA_Accum_T_UT_fr_opd_var1 (int m_A, int n_A, double *A, int rs_A, int cs_A, int m_t, double *t, int inc_t, double *T, int rs_T, int cs_T)
 
FLA_Error FLA_Accum_T_UT_fr_opc_var1 (int m_A, int n_A, scomplex *A, int rs_A, int cs_A, int m_t, scomplex *t, int inc_t, scomplex *T, int rs_T, int cs_T)
 
FLA_Error FLA_Accum_T_UT_fr_opz_var1 (int m_A, int n_A, dcomplex *A, int rs_A, int cs_A, int m_t, dcomplex *t, int inc_t, dcomplex *T, int rs_T, int cs_T)
 

Function Documentation

◆ FLA_Accum_T_UT_fr_blk_var2()

FLA_Error FLA_Accum_T_UT_fr_blk_var2 ( FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  T 
)

References FLA_Accum_T_UT_fr_opt_var1(), FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Merge_1x2(), FLA_Obj_length(), FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x1_to_3x1(), and FLA_Repart_2x2_to_3x3().

Referenced by FLA_Accum_T_UT_internal().

14 {
15  FLA_Obj ATL, ATR, A00, A01, A02,
16  ABL, ABR, A10, A11, A12,
17  A20, A21, A22;
18 
19  FLA_Obj tT, t0,
20  tB, t1,
21  t2;
22 
23  FLA_Obj TL, TR, T0, T1, T2;
24 
25  FLA_Obj AR1;
26 
27  dim_t b_alg, b;
28 
29  b_alg = FLA_Obj_length( T );
30 
31  FLA_Part_2x2( A, &ATL, &ATR,
32  &ABL, &ABR, 0, 0, FLA_TL );
33 
34  FLA_Part_2x1( t, &tT,
35  &tB, 0, FLA_TOP );
36 
37  FLA_Part_1x2( T, &TL, &TR, 0, FLA_LEFT );
38 
39  while ( FLA_Obj_length( tB ) > 0 ) {
40 
41  b = min( FLA_Obj_length( tB ), b_alg );
42 
43  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
44  /* ************* */ /* ******************** */
45  &A10, /**/ &A11, &A12,
46  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
47  b, b, FLA_BR );
48 
49  FLA_Repart_2x1_to_3x1( tT, &t0,
50  /* ** */ /* ** */
51  &t1,
52  tB, &t2, b, FLA_BOTTOM );
53 
54  FLA_Repart_1x2_to_1x3( TL, /**/ TR, &T0, /**/ &T1, &T2,
55  b, FLA_RIGHT );
56 
57  /*------------------------------------------------------------*/
58 
59  FLA_Merge_1x2( A11, A12, &AR1 );
60 
61  //FLA_Accum_T_UT_fr_unb_var1( AR1, t1, T1 );
62  FLA_Accum_T_UT_fr_opt_var1( AR1, t1, T1 );
63 
64  /*------------------------------------------------------------*/
65 
66  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
67  A10, A11, /**/ A12,
68  /* ************** */ /* ****************** */
69  &ABL, /**/ &ABR, A20, A21, /**/ A22,
70  FLA_TL );
71 
72  FLA_Cont_with_3x1_to_2x1( &tT, t0,
73  t1,
74  /* ** */ /* ** */
75  &tB, t2, FLA_TOP );
76 
77  FLA_Cont_with_1x3_to_1x2( &TL, /**/ &TR, T0, T1, /**/ T2,
78  FLA_LEFT );
79 
80  }
81 
82  return FLA_SUCCESS;
83 }
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:226
FLA_Error FLA_Repart_1x2_to_1x3(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:267
unsigned long dim_t
Definition: FLA_type_defs.h:71
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:428
FLA_Error FLA_Merge_1x2(FLA_Obj AL, FLA_Obj AR, FLA_Obj *A)
Definition: FLA_View.c:562
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
Definition: FLA_type_defs.h:158
FLA_Error FLA_Cont_with_1x3_to_1x2(FLA_Obj *AL, FLA_Obj *AR, FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:475
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition: FLA_View.c:110
FLA_Error FLA_Accum_T_UT_fr_opt_var1(FLA_Obj A, FLA_Obj t, FLA_Obj T)
Definition: FLA_Accum_T_UT_fr_opt_var1.c:13
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116

◆ FLA_Accum_T_UT_fr_opc_var1()

FLA_Error FLA_Accum_T_UT_fr_opc_var1 ( int  m_A,
int  n_A,
scomplex A,
int  rs_A,
int  cs_A,
int  m_t,
scomplex t,
int  inc_t,
scomplex T,
int  rs_T,
int  cs_T 
)

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

Referenced by FLA_Accum_T_UT_fr_opt_var1().

224 {
225  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
226  int i;
227 
228  for ( i = 0; i < m_t; ++i )
229  {
230  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
231  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
232  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
233 
234  scomplex* tau1 = buff_t + (i )*inc_t;
235 
236  scomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
237  scomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
238 
239  int n_ahead = n_A - i - 1;
240  int m_behind = i;
241 
242  /*------------------------------------------------------------*/
243 
244  // FLA_Copy_external( tau1, tau11 );
245  *tau11 = *tau1;
246 
247  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
249  m_behind,
250  a01, rs_A,
251  t01, rs_T );
252 
253  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
254  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
257  m_behind,
258  n_ahead,
259  buff_1,
260  A02, rs_A, cs_A,
261  a12t, cs_A,
262  buff_1,
263  t01, rs_T );
264 
265  /*------------------------------------------------------------*/
266 
267  }
268 
269  return FLA_SUCCESS;
270 }
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
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_Accum_T_UT_fr_opd_var1()

FLA_Error FLA_Accum_T_UT_fr_opd_var1 ( int  m_A,
int  n_A,
double *  A,
int  rs_A,
int  cs_A,
int  m_t,
double *  t,
int  inc_t,
double *  T,
int  rs_T,
int  cs_T 
)

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

Referenced by FLA_Accum_T_UT_fr_opt_var1().

168 {
169  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
170  int i;
171 
172  for ( i = 0; i < m_t; ++i )
173  {
174  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
175  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
176  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
177 
178  double* tau1 = buff_t + (i )*inc_t;
179 
180  double* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
181  double* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
182 
183  int n_ahead = n_A - i - 1;
184  int m_behind = i;
185 
186  /*------------------------------------------------------------*/
187 
188  // FLA_Copy_external( tau1, tau11 );
189  *tau11 = *tau1;
190 
191  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
193  m_behind,
194  a01, rs_A,
195  t01, rs_T );
196 
197  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
198  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
201  m_behind,
202  n_ahead,
203  buff_1,
204  A02, rs_A, cs_A,
205  a12t, cs_A,
206  buff_1,
207  t01, rs_T );
208 
209  /*------------------------------------------------------------*/
210 
211  }
212 
213  return FLA_SUCCESS;
214 }
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
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_Accum_T_UT_fr_ops_var1()

FLA_Error FLA_Accum_T_UT_fr_ops_var1 ( int  m_A,
int  n_A,
float *  A,
int  rs_A,
int  cs_A,
int  m_t,
float *  t,
int  inc_t,
float *  T,
int  rs_T,
int  cs_T 
)

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

Referenced by FLA_Accum_T_UT_fr_opt_var1().

112 {
113  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
114  int i;
115 
116  for ( i = 0; i < m_t; ++i )
117  {
118  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
119  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
120  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
121 
122  float* tau1 = buff_t + (i )*inc_t;
123 
124  float* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
125  float* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
126 
127  int n_ahead = n_A - i - 1;
128  int m_behind = i;
129 
130  /*------------------------------------------------------------*/
131 
132  // FLA_Copy_external( tau1, tau11 );
133  *tau11 = *tau1;
134 
135  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
137  m_behind,
138  a01, rs_A,
139  t01, rs_T );
140 
141  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
142  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
145  m_behind,
146  n_ahead,
147  buff_1,
148  A02, rs_A, cs_A,
149  a12t, cs_A,
150  buff_1,
151  t01, rs_T );
152 
153  /*------------------------------------------------------------*/
154 
155  }
156 
157  return FLA_SUCCESS;
158 }
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
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_Accum_T_UT_fr_opt_var1()

FLA_Error FLA_Accum_T_UT_fr_opt_var1 ( FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  T 
)

References FLA_Accum_T_UT_fr_opc_var1(), FLA_Accum_T_UT_fr_opd_var1(), FLA_Accum_T_UT_fr_ops_var1(), FLA_Accum_T_UT_fr_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), and FLA_Obj_width().

Referenced by FLA_Accum_T_UT_fr_blk_var2().

14 {
15  FLA_Datatype datatype;
16  int m_A, n_A;
17  int rs_A, cs_A;
18  int m_t, inc_t;
19  int rs_T, cs_T;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  m_A = FLA_Obj_length( A );
24  n_A = FLA_Obj_width( A );
25  rs_A = FLA_Obj_row_stride( A );
26  cs_A = FLA_Obj_col_stride( A );
27 
28  m_t = FLA_Obj_vector_dim( t );
29  inc_t = FLA_Obj_vector_inc( t );
30 
31  rs_T = FLA_Obj_row_stride( T );
32  cs_T = FLA_Obj_col_stride( T );
33 
34  switch ( datatype )
35  {
36  case FLA_FLOAT:
37  {
38  float* buff_A = FLA_FLOAT_PTR( A );
39  float* buff_t = FLA_FLOAT_PTR( t );
40  float* buff_T = FLA_FLOAT_PTR( T );
41 
43  n_A,
44  buff_A, rs_A, cs_A,
45  m_t,
46  buff_t, inc_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  double* buff_T = FLA_DOUBLE_PTR( T );
57 
59  n_A,
60  buff_A, rs_A, cs_A,
61  m_t,
62  buff_t, inc_t,
63  buff_T, rs_T, cs_T );
64 
65  break;
66  }
67 
68  case FLA_COMPLEX:
69  {
70  scomplex* buff_A = FLA_COMPLEX_PTR( A );
71  scomplex* buff_t = FLA_COMPLEX_PTR( t );
72  scomplex* buff_T = FLA_COMPLEX_PTR( T );
73 
75  n_A,
76  buff_A, rs_A, cs_A,
77  m_t,
78  buff_t, inc_t,
79  buff_T, rs_T, cs_T );
80 
81  break;
82  }
83 
84  case FLA_DOUBLE_COMPLEX:
85  {
86  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
87  dcomplex* buff_t = FLA_DOUBLE_COMPLEX_PTR( t );
88  dcomplex* buff_T = FLA_DOUBLE_COMPLEX_PTR( T );
89 
91  n_A,
92  buff_A, rs_A, cs_A,
93  m_t,
94  buff_t, inc_t,
95  buff_T, rs_T, cs_T );
96 
97  break;
98  }
99  }
100 
101  return FLA_SUCCESS;
102 }
FLA_Error FLA_Accum_T_UT_fr_opd_var1(int m_A, int n_A, double *buff_A, int rs_A, int cs_A, int m_t, double *buff_t, int inc_t, double *buff_T, int rs_T, int cs_T)
Definition: FLA_Accum_T_UT_fr_opt_var1.c:162
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Error FLA_Accum_T_UT_fr_opc_var1(int m_A, int n_A, scomplex *buff_A, int rs_A, int cs_A, int m_t, scomplex *buff_t, int inc_t, scomplex *buff_T, int rs_T, int cs_T)
Definition: FLA_Accum_T_UT_fr_opt_var1.c:218
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_Accum_T_UT_fr_opz_var1(int m_A, int n_A, dcomplex *buff_A, int rs_A, int cs_A, int m_t, dcomplex *buff_t, int inc_t, dcomplex *buff_T, int rs_T, int cs_T)
Definition: FLA_Accum_T_UT_fr_opt_var1.c:274
Definition: blis_type_defs.h:132
dim_t FLA_Obj_vector_dim(FLA_Obj obj)
Definition: FLA_Query.c:137
int FLA_Datatype
Definition: FLA_type_defs.h:49
FLA_Error FLA_Accum_T_UT_fr_ops_var1(int m_A, int n_A, float *buff_A, int rs_A, int cs_A, int m_t, float *buff_t, int inc_t, float *buff_T, int rs_T, int cs_T)
Definition: FLA_Accum_T_UT_fr_opt_var1.c:106
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition: FLA_Query.c:145
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Accum_T_UT_fr_opz_var1()

FLA_Error FLA_Accum_T_UT_fr_opz_var1 ( int  m_A,
int  n_A,
dcomplex A,
int  rs_A,
int  cs_A,
int  m_t,
dcomplex t,
int  inc_t,
dcomplex T,
int  rs_T,
int  cs_T 
)

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

Referenced by FLA_Accum_T_UT_fr_opt_var1().

280 {
281  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
282  int i;
283 
284  for ( i = 0; i < m_t; ++i )
285  {
286  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
287  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
288  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
289 
290  dcomplex* tau1 = buff_t + (i )*inc_t;
291 
292  dcomplex* tau11 = buff_T + (i )*cs_T + (i )*rs_T;
293  dcomplex* t01 = buff_T + (i )*cs_T + (0 )*rs_T;
294 
295  int n_ahead = n_A - i - 1;
296  int m_behind = i;
297 
298  /*------------------------------------------------------------*/
299 
300  // FLA_Copy_external( tau1, tau11 );
301  *tau11 = *tau1;
302 
303  // FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
305  m_behind,
306  a01, rs_A,
307  t01, rs_T );
308 
309  // FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE,
310  // FLA_ONE, A02, a12t, FLA_ONE, t01 );
313  m_behind,
314  n_ahead,
315  buff_1,
316  A02, rs_A, cs_A,
317  a12t, cs_A,
318  buff_1,
319  t01, rs_T );
320 
321  /*------------------------------------------------------------*/
322 
323  }
324 
325 
326  return FLA_SUCCESS;
327 }
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
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_Accum_T_UT_fr_unb_var1()

FLA_Error FLA_Accum_T_UT_fr_unb_var1 ( FLA_Obj  A,
FLA_Obj  t,
FLA_Obj  T 
)

References FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Copy_external(), FLA_Copyt_external(), FLA_Gemvc_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), and FLA_Repart_2x2_to_3x3().

14 {
15  FLA_Obj ATL, ATR, A00, a01, A02,
16  ABL, ABR, a10t, alpha11, a12t,
17  A20, a21, A22;
18 
19  FLA_Obj tauT, tau0,
20  tauB, tau1,
21  tau2;
22 
23  FLA_Obj TTL, TTR, T00, t01, T02,
24  TBL, TBR, t10t, tau11, t12t,
25  T20, t21, T22;
26 
27 
28  FLA_Part_2x2( A, &ATL, &ATR,
29  &ABL, &ABR, 0, 0, FLA_TL );
30 
31  FLA_Part_2x1( tau, &tauT,
32  &tauB, 0, FLA_TOP );
33 
34  FLA_Part_2x2( T, &TTL, &TTR,
35  &TBL, &TBR, 0, 0, FLA_TL );
36 
37  while ( FLA_Obj_length( tauB ) > 0 ){
38 
39  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
40  /* ************* */ /* ************************** */
41  &a10t, /**/ &alpha11, &a12t,
42  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
43  1, 1, FLA_BR );
44 
45  FLA_Repart_2x1_to_3x1( tauT, &tau0,
46  /* ** */ /* ** */
47  &tau1,
48  tauB, &tau2, 1, FLA_BOTTOM );
49 
50  FLA_Repart_2x2_to_3x3( TTL, /**/ TTR, &T00, /**/ &t01, &T02,
51  /* ************* */ /* ************************ */
52  &t10t, /**/ &tau11, &t12t,
53  TBL, /**/ TBR, &T20, /**/ &t21, &T22,
54  1, 1, FLA_BR );
55 
56  /*------------------------------------------------------------*/
57 
58  // tau11 = tau1;
59  FLA_Copy_external( tau1, tau11 );
60 
61  // t01 = conj(a01) + conj(A02) * u12t^T;
62  FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, a01, t01 );
63  FLA_Gemvc_external( FLA_CONJ_NO_TRANSPOSE, FLA_NO_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, t01 );
64 
65  /*------------------------------------------------------------*/
66 
67  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
68  a10t, alpha11, /**/ a12t,
69  /* ************** */ /* ************************ */
70  &ABL, /**/ &ABR, A20, a21, /**/ A22,
71  FLA_TL );
72 
73  FLA_Cont_with_3x1_to_2x1( &tauT, tau0,
74  tau1,
75  /* ** */ /* ** */
76  &tauB, tau2, FLA_TOP );
77 
78  FLA_Cont_with_3x3_to_2x2( &TTL, /**/ &TTR, T00, t01, /**/ T02,
79  t10t, tau11, /**/ t12t,
80  /* ************** */ /* ********************** */
81  &TBL, /**/ &TBR, T20, t21, /**/ T22,
82  FLA_TL );
83 
84  }
85 
86  return FLA_SUCCESS;
87 }
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:226
FLA_Error FLA_Repart_2x2_to_3x3(FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:142
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition: FLA_View.c:428
FLA_Error FLA_Copyt_external(FLA_Trans trans, FLA_Obj A, FLA_Obj B)
Definition: FLA_Copyt_external.c:13
FLA_Error FLA_Part_2x2(FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant)
Definition: FLA_View.c:17
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
FLA_Error FLA_Copy_external(FLA_Obj A, FLA_Obj B)
Definition: FLA_Copy_external.c:13
Definition: FLA_type_defs.h:158
FLA_Error FLA_Gemvc_external(FLA_Trans transa, FLA_Conj conjx, FLA_Obj alpha, FLA_Obj A, FLA_Obj x, FLA_Obj beta, FLA_Obj y)
Definition: FLA_Gemvc_external.c:13
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition: FLA_View.c:76
FLA_Error FLA_Cont_with_3x3_to_2x2(FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Quadrant quadrant)
Definition: FLA_View.c:304
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116