libflame  revision_anchor
Functions
FLA_Ttmm_u.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Ttmm_u_blk_var1 (FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Ttmm_u_blk_var2 (FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Ttmm_u_blk_var3 (FLA_Obj A, fla_ttmm_t *cntl)
 
FLA_Error FLA_Ttmm_u_unb_var1 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_unb_var2 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_unb_var3 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_opt_var1 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_ops_var1 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opd_var1 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opc_var1 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opz_var1 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opt_var2 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_ops_var2 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opd_var2 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opc_var2 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opz_var2 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opt_var3 (FLA_Obj A)
 
FLA_Error FLA_Ttmm_u_ops_var3 (int mn_A, float *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opd_var3 (int mn_A, double *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opc_var3 (int mn_A, scomplex *A, int rs_A, int cs_A)
 
FLA_Error FLA_Ttmm_u_opz_var3 (int mn_A, dcomplex *A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Ttmm_u_blk_var1()

FLA_Error FLA_Ttmm_u_blk_var1 ( FLA_Obj  A,
fla_ttmm_t cntl 
)
14 {
15  FLA_Obj ATL, ATR, A00, A01, A02,
16  ABL, ABR, A10, A11, A12,
17  A20, A21, A22;
18 
19  dim_t b;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
27 
28  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
29  /* ************* */ /* ******************** */
30  &A10, /**/ &A11, &A12,
31  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
32  b, b, FLA_BR );
33 
34  /*------------------------------------------------------------*/
35 
36  // A00 = A00 + A01 * A01'
37  FLA_Herk_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
38  FLA_ONE, A01, FLA_ONE, A00,
39  FLA_Cntl_sub_herk( cntl ) );
40 
41  // A01 = A01 * triu( A11 )'
42  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
43  FLA_ONE, A11, A01,
44  FLA_Cntl_sub_trmm( cntl ) );
45 
46  // A11 = triu( A11 ) * triu( A11 )'
47  FLA_Ttmm_internal( FLA_UPPER_TRIANGULAR, A11,
48  FLA_Cntl_sub_ttmm( cntl ) );
49 
50  /*------------------------------------------------------------*/
51 
52  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
53  A10, A11, /**/ A12,
54  /* ************** */ /* ****************** */
55  &ABL, /**/ &ABR, A20, A21, /**/ A22,
56  FLA_TL );
57 
58  }
59 
60  return FLA_SUCCESS;
61 }
FLA_Error FLA_Herk_internal(FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj beta, FLA_Obj C, fla_herk_t *cntl)
Definition: FLA_Herk_internal.c:16
FLA_Error FLA_Trmm_internal(FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trmm_t *cntl)
Definition: FLA_Trmm_internal.c:16
FLA_Error FLA_Ttmm_internal(FLA_Uplo uplo, FLA_Obj A, fla_ttmm_t *cntl)
Definition: FLA_Ttmm_internal.c:16
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
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_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
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
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
dim_t FLA_Determine_blocksize(FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t *cntl_blocksizes)
Definition: FLA_Blocksize.c:234
unsigned long dim_t
Definition: FLA_type_defs.h:71
Definition: FLA_type_defs.h:159

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Herk_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_Ttmm_internal().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_blk_var2()

FLA_Error FLA_Ttmm_u_blk_var2 ( FLA_Obj  A,
fla_ttmm_t cntl 
)
16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  dim_t b;
22 
23  FLA_Part_2x2( A, &ATL, &ATR,
24  &ABL, &ABR, 0, 0, FLA_TL );
25 
26  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27 
28  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
29 
30  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31  /* ************* */ /* ******************** */
32  &A10, /**/ &A11, &A12,
33  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34  b, b, FLA_BR );
35 
36  /*------------------------------------------------------------*/
37 
38  // A01 = A01 * triu( A11 )'
39  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
40  FLA_ONE, A11, A01,
41  FLA_Cntl_sub_trmm( cntl ) );
42 
43  // A01 = A01 + A02 * A12'
44  FLA_Gemm_internal( FLA_NO_TRANSPOSE, FLA_CONJ_TRANSPOSE,
45  FLA_ONE, A02, A12, FLA_ONE, A01,
46  FLA_Cntl_sub_gemm( cntl ) );
47 
48  // A11 = triu( A11 ) * triu( A11 )'
49  FLA_Ttmm_internal( FLA_UPPER_TRIANGULAR, A11,
50  FLA_Cntl_sub_ttmm( cntl ) );
51 
52  // A11 = A11 + A12 * A12'
53  FLA_Herk_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
54  FLA_ONE, A12, FLA_ONE, A11,
55  FLA_Cntl_sub_herk( cntl ) );
56 
57  /*------------------------------------------------------------*/
58 
59  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
60  A10, A11, /**/ A12,
61  /* ************** */ /* ****************** */
62  &ABL, /**/ &ABR, A20, A21, /**/ A22,
63  FLA_TL );
64 
65  }
66 
67  return FLA_SUCCESS;
68 }
FLA_Error FLA_Gemm_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C, fla_gemm_t *cntl)
Definition: FLA_Gemm_internal.c:16

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Gemm_internal(), FLA_Herk_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_Ttmm_internal().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_blk_var3()

FLA_Error FLA_Ttmm_u_blk_var3 ( FLA_Obj  A,
fla_ttmm_t cntl 
)
16 {
17  FLA_Obj ATL, ATR, A00, A01, A02,
18  ABL, ABR, A10, A11, A12,
19  A20, A21, A22;
20 
21  dim_t b;
22 
23  FLA_Part_2x2( A, &ATL, &ATR,
24  &ABL, &ABR, 0, 0, FLA_TL );
25 
26  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
27 
28  b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
29 
30  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
31  /* ************* */ /* ******************** */
32  &A10, /**/ &A11, &A12,
33  ABL, /**/ ABR, &A20, /**/ &A21, &A22,
34  b, b, FLA_BR );
35 
36  /*------------------------------------------------------------*/
37 
38  // A11 = triu( A11 ) * triu( A11 )'
39  FLA_Ttmm_internal( FLA_UPPER_TRIANGULAR, A11,
40  FLA_Cntl_sub_ttmm( cntl ) );
41 
42  // A11 = A11 + A12 * A12'
43  FLA_Herk_internal( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE,
44  FLA_ONE, A12, FLA_ONE, A11,
45  FLA_Cntl_sub_herk( cntl ) );
46 
47  // A12 = A12 * triu( A22 )'
48  FLA_Trmm_internal( FLA_RIGHT, FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
49  FLA_ONE, A22, A12,
50  FLA_Cntl_sub_trmm( cntl ) );
51 
52  /*------------------------------------------------------------*/
53 
54  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
55  A10, A11, /**/ A12,
56  /* ************** */ /* ****************** */
57  &ABL, /**/ &ABR, A20, A21, /**/ A22,
58  FLA_TL );
59 
60  }
61 
62  return FLA_SUCCESS;
63 }

References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Herk_internal(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Trmm_internal(), and FLA_Ttmm_internal().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_opc_var1()

FLA_Error FLA_Ttmm_u_opc_var1 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
160 {
161  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
162  int i;
163 
164  for ( i = 0; i < mn_A; ++i )
165  {
166  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
167  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
168  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
169 
170  int mn_behind = i;
171 
172  /*------------------------------------------------------------*/
173 
174  // FLA_Her_external( FLA_UPPER_TRIANGULAR, FLA_ONE, a01, A00 );
177  mn_behind,
178  buff_1,
179  a01, rs_A,
180  A00, rs_A, cs_A );
181 
182  // FLA_Scal_external( alpha11, a01 );
184  mn_behind,
185  alpha11,
186  a01, rs_A );
187 
188  // FLA_Absolute_square( alpha11 );
189  bl1_cabsqr( alpha11 );
190 
191  /*------------------------------------------------------------*/
192 
193  }
194 
195  return FLA_SUCCESS;
196 }
int i
Definition: bl1_axmyv2.c:145
void bl1_cher(uplo1_t uplo, conj1_t conj, int m, float *alpha, scomplex *x, int incx, scomplex *a, int a_rs, int a_cs)
Definition: bl1_her.c:31
void bl1_cscalv(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx)
Definition: bl1_scalv.c:46
@ BLIS1_UPPER_TRIANGULAR
Definition: blis_type_defs.h:63
@ BLIS1_NO_CONJUGATE
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:133

References bl1_cher(), bl1_cscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var1().

◆ FLA_Ttmm_u_opc_var2()

FLA_Error FLA_Ttmm_u_opc_var2 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
188 {
189  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
190  int i;
191 
192  for ( i = 0; i < mn_A; ++i )
193  {
194  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
195  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
196  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
197  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
198 
199  int mn_ahead = mn_A - i - 1;
200  int mn_behind = i;
201 
202  /*------------------------------------------------------------*/
203 
204  // FLA_Scal_external( alpha11, a01 );
206  mn_behind,
207  alpha11,
208  a01, rs_A );
209 
210  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, a01 );
213  mn_behind,
214  mn_ahead,
215  buff_1,
216  A02, rs_A, cs_A,
217  a12t, cs_A,
218  buff_1,
219  a01, rs_A );
220 
221  // FLA_Absolute_square( alpha11 );
222  bl1_cabsqr( alpha11 );
223 
224  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a21, a21, FLA_ONE, alpha11 );
226  mn_ahead,
227  buff_1,
228  a12t, cs_A,
229  a12t, cs_A,
230  buff_1,
231  alpha11 );
232 
233  /*------------------------------------------------------------*/
234 
235  }
236 
237  return FLA_SUCCESS;
238 }
void bl1_cdots(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition: bl1_dots.c:39
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_NO_TRANSPOSE
Definition: blis_type_defs.h:54
@ BLIS1_CONJUGATE
Definition: blis_type_defs.h:82

References bl1_cdots(), bl1_cgemv(), bl1_cscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var2().

◆ FLA_Ttmm_u_opc_var3()

FLA_Error FLA_Ttmm_u_opc_var3 ( int  mn_A,
scomplex A,
int  rs_A,
int  cs_A 
)
168 {
169  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
170  int i;
171 
172  for ( i = 0; i < mn_A; ++i )
173  {
174  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
175  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
176  scomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
177 
178  int mn_ahead = mn_A - i - 1;
179 
180  /*------------------------------------------------------------*/
181 
182  // FLA_Absolute_square( alpha11 );
183  bl1_cabsqr( alpha11 );
184 
185  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
187  mn_ahead,
188  buff_1,
189  a12t, cs_A,
190  a12t, cs_A,
191  buff_1,
192  alpha11 );
193 
194  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
198  mn_ahead,
199  A22, rs_A, cs_A,
200  a12t, cs_A );
201 
202  /*------------------------------------------------------------*/
203 
204  }
205 
206  return FLA_SUCCESS;
207 }
void bl1_ctrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition: bl1_trmv.c:99
@ BLIS1_NONUNIT_DIAG
Definition: blis_type_defs.h:74
@ BLIS1_CONJ_NO_TRANSPOSE
Definition: blis_type_defs.h:56

References bl1_cdots(), bl1_ctrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var3().

◆ FLA_Ttmm_u_opd_var1()

FLA_Error FLA_Ttmm_u_opd_var1 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)
119 {
120  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
121  int i;
122 
123  for ( i = 0; i < mn_A; ++i )
124  {
125  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
126  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
127  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
128 
129  int mn_behind = i;
130 
131  /*------------------------------------------------------------*/
132 
133  // FLA_Her_external( FLA_UPPER_TRIANGULAR, FLA_ONE, a01, A00 );
135  mn_behind,
136  buff_1,
137  a01, rs_A,
138  A00, rs_A, cs_A );
139 
140  // FLA_Scal_external( alpha11, a01 );
142  mn_behind,
143  alpha11,
144  a01, rs_A );
145 
146  // FLA_Absolute_square( alpha11 );
147  bl1_dabsqr( alpha11 );
148 
149  /*------------------------------------------------------------*/
150 
151  }
152 
153  return FLA_SUCCESS;
154 }
void bl1_dscalv(conj1_t conj, int n, double *alpha, double *x, int incx)
Definition: bl1_scalv.c:24
void bl1_dsyr(uplo1_t uplo, int m, double *alpha, double *x, int incx, double *a, int a_rs, int a_cs)
Definition: bl1_syr.c:57

References bl1_dscalv(), bl1_dsyr(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var1().

◆ FLA_Ttmm_u_opd_var2()

FLA_Error FLA_Ttmm_u_opd_var2 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)
132 {
133  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
134  int i;
135 
136  for ( i = 0; i < mn_A; ++i )
137  {
138  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
139  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
140  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
141  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
142 
143  int mn_ahead = mn_A - i - 1;
144  int mn_behind = i;
145 
146  /*------------------------------------------------------------*/
147 
148  // FLA_Scal_external( alpha11, a01 );
150  mn_behind,
151  alpha11,
152  a01, rs_A );
153 
154  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, a01 );
157  mn_behind,
158  mn_ahead,
159  buff_1,
160  A02, rs_A, cs_A,
161  a12t, cs_A,
162  buff_1,
163  a01, rs_A );
164 
165  // FLA_Absolute_square( alpha11 );
166  bl1_dabsqr( alpha11 );
167 
168  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a21, a21, FLA_ONE, alpha11 );
170  mn_ahead,
171  buff_1,
172  a12t, cs_A,
173  a12t, cs_A,
174  buff_1,
175  alpha11 );
176 
177  /*------------------------------------------------------------*/
178 
179  }
180 
181  return FLA_SUCCESS;
182 }
void bl1_ddots(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition: bl1_dots.c:26
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_ddots(), bl1_dgemv(), bl1_dscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var2().

◆ FLA_Ttmm_u_opd_var3()

FLA_Error FLA_Ttmm_u_opd_var3 ( int  mn_A,
double *  A,
int  rs_A,
int  cs_A 
)
123 {
124  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
125  int i;
126 
127  for ( i = 0; i < mn_A; ++i )
128  {
129  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
130  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
131  double* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
132 
133  int mn_ahead = mn_A - i - 1;
134 
135  /*------------------------------------------------------------*/
136 
137  // FLA_Absolute_square( alpha11 );
138  bl1_dabsqr( alpha11 );
139 
140  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
142  mn_ahead,
143  buff_1,
144  a12t, cs_A,
145  a12t, cs_A,
146  buff_1,
147  alpha11 );
148 
149  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
153  mn_ahead,
154  A22, rs_A, cs_A,
155  a12t, cs_A );
156 
157  /*------------------------------------------------------------*/
158 
159  }
160 
161  return FLA_SUCCESS;
162 }
void bl1_dtrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition: bl1_trmv.c:56

References bl1_ddots(), bl1_dtrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var3().

◆ FLA_Ttmm_u_ops_var1()

FLA_Error FLA_Ttmm_u_ops_var1 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)
78 {
79  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
80  int i;
81 
82  for ( i = 0; i < mn_A; ++i )
83  {
84  float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
85  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
86  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
87 
88  int mn_behind = i;
89 
90  /*------------------------------------------------------------*/
91 
92  // FLA_Her_external( FLA_UPPER_TRIANGULAR, FLA_ONE, a01, A00 );
94  mn_behind,
95  buff_1,
96  a01, rs_A,
97  A00, rs_A, cs_A );
98 
99  // FLA_Scal_external( alpha11, a01 );
101  mn_behind,
102  alpha11,
103  a01, rs_A );
104 
105  // FLA_Absolute_square( alpha11 );
106  bl1_sabsqr( alpha11 );
107 
108  /*------------------------------------------------------------*/
109 
110  }
111 
112  return FLA_SUCCESS;
113 }
void bl1_sscalv(conj1_t conj, int n, float *alpha, float *x, int incx)
Definition: bl1_scalv.c:13
void bl1_ssyr(uplo1_t uplo, int m, float *alpha, float *x, int incx, float *a, int a_rs, int a_cs)
Definition: bl1_syr.c:13

References bl1_sscalv(), bl1_ssyr(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var1().

◆ FLA_Ttmm_u_ops_var2()

FLA_Error FLA_Ttmm_u_ops_var2 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)
76 {
77  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
78  int i;
79 
80  for ( i = 0; i < mn_A; ++i )
81  {
82  float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
83  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
84  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
85  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
86 
87  int mn_ahead = mn_A - i - 1;
88  int mn_behind = i;
89 
90  /*------------------------------------------------------------*/
91 
92  // FLA_Scal_external( alpha11, a01 );
94  mn_behind,
95  alpha11,
96  a01, rs_A );
97 
98  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, a01 );
101  mn_behind,
102  mn_ahead,
103  buff_1,
104  A02, rs_A, cs_A,
105  a12t, cs_A,
106  buff_1,
107  a01, rs_A );
108 
109  // FLA_Absolute_square( alpha11 );
110  bl1_sabsqr( alpha11 );
111 
112  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a21, a21, FLA_ONE, alpha11 );
114  mn_ahead,
115  buff_1,
116  a12t, cs_A,
117  a12t, cs_A,
118  buff_1,
119  alpha11 );
120 
121  /*------------------------------------------------------------*/
122 
123  }
124 
125  return FLA_SUCCESS;
126 }
void bl1_sdots(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition: bl1_dots.c:13
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_sdots(), bl1_sgemv(), bl1_sscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var2().

◆ FLA_Ttmm_u_ops_var3()

FLA_Error FLA_Ttmm_u_ops_var3 ( int  mn_A,
float *  A,
int  rs_A,
int  cs_A 
)
78 {
79  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
80  int i;
81 
82  for ( i = 0; i < mn_A; ++i )
83  {
84  float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
85  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
86  float* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
87 
88  int mn_ahead = mn_A - i - 1;
89 
90  /*------------------------------------------------------------*/
91 
92  // FLA_Absolute_square( alpha11 );
93  bl1_sabsqr( alpha11 );
94 
95  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
97  mn_ahead,
98  buff_1,
99  a12t, cs_A,
100  a12t, cs_A,
101  buff_1,
102  alpha11 );
103 
104  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
108  mn_ahead,
109  A22, rs_A, cs_A,
110  a12t, cs_A );
111 
112  /*------------------------------------------------------------*/
113 
114  }
115 
116  return FLA_SUCCESS;
117 }
void bl1_strmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition: bl1_trmv.c:13

References bl1_sdots(), bl1_strmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var3().

◆ FLA_Ttmm_u_opt_var1()

FLA_Error FLA_Ttmm_u_opt_var1 ( FLA_Obj  A)
16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27 
28  switch ( datatype )
29  {
30  case FLA_FLOAT:
31  {
32  float* buff_A = FLA_FLOAT_PTR( A );
33 
34  FLA_Ttmm_u_ops_var1( mn_A,
35  buff_A, rs_A, cs_A );
36 
37  break;
38  }
39 
40  case FLA_DOUBLE:
41  {
42  double* buff_A = FLA_DOUBLE_PTR( A );
43 
44  FLA_Ttmm_u_opd_var1( mn_A,
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49 
50  case FLA_COMPLEX:
51  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
54  FLA_Ttmm_u_opc_var1( mn_A,
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
63 
64  FLA_Ttmm_u_opz_var1( mn_A,
65  buff_A, rs_A, cs_A );
66 
67  break;
68  }
69  }
70 
71  return FLA_SUCCESS;
72 }
FLA_Error FLA_Ttmm_u_ops_var1(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var1.c:76
FLA_Error FLA_Ttmm_u_opd_var1(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var1.c:117
FLA_Error FLA_Ttmm_u_opz_var1(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var1.c:200
FLA_Error FLA_Ttmm_u_opc_var1(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var1.c:158
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
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_Ttmm_u_opc_var1(), FLA_Ttmm_u_opd_var1(), FLA_Ttmm_u_ops_var1(), and FLA_Ttmm_u_opz_var1().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_opt_var2()

FLA_Error FLA_Ttmm_u_opt_var2 ( FLA_Obj  A)
14 {
15  FLA_Datatype datatype;
16  int mn_A;
17  int rs_A, cs_A;
18 
19  datatype = FLA_Obj_datatype( A );
20 
21  mn_A = FLA_Obj_length( A );
22  rs_A = FLA_Obj_row_stride( A );
23  cs_A = FLA_Obj_col_stride( A );
24 
25 
26  switch ( datatype )
27  {
28  case FLA_FLOAT:
29  {
30  float* buff_A = FLA_FLOAT_PTR( A );
31 
32  FLA_Ttmm_u_ops_var2( mn_A,
33  buff_A, rs_A, cs_A );
34 
35  break;
36  }
37 
38  case FLA_DOUBLE:
39  {
40  double* buff_A = FLA_DOUBLE_PTR( A );
41 
42  FLA_Ttmm_u_opd_var2( mn_A,
43  buff_A, rs_A, cs_A );
44 
45  break;
46  }
47 
48  case FLA_COMPLEX:
49  {
50  scomplex* buff_A = FLA_COMPLEX_PTR( A );
51 
52  FLA_Ttmm_u_opc_var2( mn_A,
53  buff_A, rs_A, cs_A );
54 
55  break;
56  }
57 
58  case FLA_DOUBLE_COMPLEX:
59  {
60  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
61 
62  FLA_Ttmm_u_opz_var2( mn_A,
63  buff_A, rs_A, cs_A );
64 
65  break;
66  }
67  }
68 
69  return FLA_SUCCESS;
70 }
FLA_Error FLA_Ttmm_u_ops_var2(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var2.c:74
FLA_Error FLA_Ttmm_u_opc_var2(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var2.c:186
FLA_Error FLA_Ttmm_u_opz_var2(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var2.c:242
FLA_Error FLA_Ttmm_u_opd_var2(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var2.c:130

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Ttmm_u_opc_var2(), FLA_Ttmm_u_opd_var2(), FLA_Ttmm_u_ops_var2(), and FLA_Ttmm_u_opz_var2().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_opt_var3()

FLA_Error FLA_Ttmm_u_opt_var3 ( FLA_Obj  A)
16 {
17  FLA_Datatype datatype;
18  int mn_A;
19  int rs_A, cs_A;
20 
21  datatype = FLA_Obj_datatype( A );
22 
23  mn_A = FLA_Obj_length( A );
24  rs_A = FLA_Obj_row_stride( A );
25  cs_A = FLA_Obj_col_stride( A );
26 
27 
28  switch ( datatype )
29  {
30  case FLA_FLOAT:
31  {
32  float* buff_A = FLA_FLOAT_PTR( A );
33 
34  FLA_Ttmm_u_ops_var3( mn_A,
35  buff_A, rs_A, cs_A );
36 
37  break;
38  }
39 
40  case FLA_DOUBLE:
41  {
42  double* buff_A = FLA_DOUBLE_PTR( A );
43 
44  FLA_Ttmm_u_opd_var3( mn_A,
45  buff_A, rs_A, cs_A );
46 
47  break;
48  }
49 
50  case FLA_COMPLEX:
51  {
52  scomplex* buff_A = FLA_COMPLEX_PTR( A );
53 
54  FLA_Ttmm_u_opc_var3( mn_A,
55  buff_A, rs_A, cs_A );
56 
57  break;
58  }
59 
60  case FLA_DOUBLE_COMPLEX:
61  {
62  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
63 
64  FLA_Ttmm_u_opz_var3( mn_A,
65  buff_A, rs_A, cs_A );
66 
67  break;
68  }
69  }
70 
71  return FLA_SUCCESS;
72 }
FLA_Error FLA_Ttmm_u_opd_var3(int mn_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var3.c:121
FLA_Error FLA_Ttmm_u_opc_var3(int mn_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var3.c:166
FLA_Error FLA_Ttmm_u_opz_var3(int mn_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var3.c:211
FLA_Error FLA_Ttmm_u_ops_var3(int mn_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Ttmm_u_opt_var3.c:76

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Ttmm_u_opc_var3(), FLA_Ttmm_u_opd_var3(), FLA_Ttmm_u_ops_var3(), and FLA_Ttmm_u_opz_var3().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_opz_var1()

FLA_Error FLA_Ttmm_u_opz_var1 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
202 {
203  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
204  int i;
205 
206  for ( i = 0; i < mn_A; ++i )
207  {
208  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
209  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
210  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
211 
212  int mn_behind = i;
213 
214  /*------------------------------------------------------------*/
215 
216  // FLA_Her_external( FLA_UPPER_TRIANGULAR, FLA_ONE, a01, A00 );
219  mn_behind,
220  buff_1,
221  a01, rs_A,
222  A00, rs_A, cs_A );
223 
224  // FLA_Scal_external( alpha11, a01 );
226  mn_behind,
227  alpha11,
228  a01, rs_A );
229 
230  // FLA_Absolute_square( alpha11 );
231  bl1_zabsqr( alpha11 );
232 
233  /*------------------------------------------------------------*/
234 
235  }
236 
237  return FLA_SUCCESS;
238 }
void bl1_zher(uplo1_t uplo, conj1_t conj, int m, double *alpha, dcomplex *x, int incx, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_her.c:101
void bl1_zscalv(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx)
Definition: bl1_scalv.c:72

References bl1_zher(), bl1_zscalv(), BLIS1_NO_CONJUGATE, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var1().

◆ FLA_Ttmm_u_opz_var2()

FLA_Error FLA_Ttmm_u_opz_var2 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
244 {
245  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
246  int i;
247 
248  for ( i = 0; i < mn_A; ++i )
249  {
250  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
251  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
252  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
253  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
254 
255  int mn_ahead = mn_A - i - 1;
256  int mn_behind = i;
257 
258  /*------------------------------------------------------------*/
259 
260  // FLA_Scal_external( alpha11, a01 );
262  mn_behind,
263  alpha11,
264  a01, rs_A );
265 
266  // FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, a01 );
269  mn_behind,
270  mn_ahead,
271  buff_1,
272  A02, rs_A, cs_A,
273  a12t, cs_A,
274  buff_1,
275  a01, rs_A );
276 
277  // FLA_Absolute_square( alpha11 );
278  bl1_zabsqr( alpha11 );
279 
280  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a21, a21, FLA_ONE, alpha11 );
282  mn_ahead,
283  buff_1,
284  a12t, cs_A,
285  a12t, cs_A,
286  buff_1,
287  alpha11 );
288 
289  /*------------------------------------------------------------*/
290 
291  }
292 
293  return FLA_SUCCESS;
294 }
void bl1_zdots(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition: bl1_dots.c: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

References bl1_zdots(), bl1_zgemv(), bl1_zscalv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var2().

◆ FLA_Ttmm_u_opz_var3()

FLA_Error FLA_Ttmm_u_opz_var3 ( int  mn_A,
dcomplex A,
int  rs_A,
int  cs_A 
)
213 {
214  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
215  int i;
216 
217  for ( i = 0; i < mn_A; ++i )
218  {
219  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
220  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
221  dcomplex* A22 = buff_A + (i+1)*cs_A + (i+1)*rs_A;
222 
223  int mn_ahead = mn_A - i - 1;
224 
225  /*------------------------------------------------------------*/
226 
227  // FLA_Absolute_square( alpha11 );
228  bl1_zabsqr( alpha11 );
229 
230  // FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
232  mn_ahead,
233  buff_1,
234  a12t, cs_A,
235  a12t, cs_A,
236  buff_1,
237  alpha11 );
238 
239  // FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
243  mn_ahead,
244  A22, rs_A, cs_A,
245  a12t, cs_A );
246 
247  /*------------------------------------------------------------*/
248 
249  }
250 
251  return FLA_SUCCESS;
252 }
void bl1_ztrmv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition: bl1_trmv.c:177

References bl1_zdots(), bl1_ztrmv(), BLIS1_CONJ_NO_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_ONE, and i.

Referenced by FLA_Ttmm_u_opt_var3().

◆ FLA_Ttmm_u_unb_var1()

FLA_Error FLA_Ttmm_u_unb_var1 ( FLA_Obj  A)
16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // A00 = A00 + a01 * a01'
35  FLA_Her_external( FLA_UPPER_TRIANGULAR, FLA_ONE, a01, A00 );
36 
37  // a10t = alpha11 * a01
38  FLA_Scal_external( alpha11, a01 );
39 
40  // alpha11 = alpha11 * alpha11'
41  FLA_Absolute_square( alpha11 );
42 
43  /*------------------------------------------------------------*/
44 
45  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
46  a10t, alpha11, /**/ a12t,
47  /* ************** */ /* ************************ */
48  &ABL, /**/ &ABR, A20, a21, /**/ A22,
49  FLA_TL );
50 
51  }
52 
53  return FLA_SUCCESS;
54 }
FLA_Error FLA_Scal_external(FLA_Obj alpha, FLA_Obj A)
Definition: FLA_Scal_external.c:13
FLA_Error FLA_Her_external(FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj x, FLA_Obj A)
Definition: FLA_Her_external.c:13
FLA_Error FLA_Absolute_square(FLA_Obj alpha)
Definition: FLA_Absolute_square.c:13

References FLA_Absolute_square(), FLA_Cont_with_3x3_to_2x2(), FLA_Her_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Scal_external().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_unb_var2()

FLA_Error FLA_Ttmm_u_unb_var2 ( FLA_Obj  A)
16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // a10t = alpha11 * a01
35  FLA_Scal_external( alpha11, a01 );
36 
37  // a01 = a01 + A02 * a12t'
38  FLA_Gemvc_external( FLA_NO_TRANSPOSE, FLA_CONJUGATE, FLA_ONE, A02, a12t, FLA_ONE, a01 );
39 
40  // alpha11 = alpha11 * alpha11'
41  FLA_Absolute_square( alpha11 );
42 
43  // alpha11 = alpha11 + a12t * a12t'
44  FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
45 
46  /*------------------------------------------------------------*/
47 
48  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
49  a10t, alpha11, /**/ a12t,
50  /* ************** */ /* ************************ */
51  &ABL, /**/ &ABR, A20, a21, /**/ A22,
52  FLA_TL );
53 
54  }
55 
56  return FLA_SUCCESS;
57 }
FLA_Error FLA_Dotcs_external(FLA_Conj conj, FLA_Obj alpha, FLA_Obj x, FLA_Obj y, FLA_Obj beta, FLA_Obj rho)
Definition: FLA_Dotcs_external.c:13
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

References FLA_Absolute_square(), FLA_Cont_with_3x3_to_2x2(), FLA_Dotcs_external(), FLA_Gemvc_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Scal_external().

Referenced by FLA_Ttmm_u().

◆ FLA_Ttmm_u_unb_var3()

FLA_Error FLA_Ttmm_u_unb_var3 ( FLA_Obj  A)
16 {
17  FLA_Obj ATL, ATR, A00, a01, A02,
18  ABL, ABR, a10t, alpha11, a12t,
19  A20, a21, A22;
20 
21  FLA_Part_2x2( A, &ATL, &ATR,
22  &ABL, &ABR, 0, 0, FLA_TL );
23 
24  while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
25 
26  FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
27  /* ************* */ /* ************************** */
28  &a10t, /**/ &alpha11, &a12t,
29  ABL, /**/ ABR, &A20, /**/ &a21, &A22,
30  1, 1, FLA_BR );
31 
32  /*------------------------------------------------------------*/
33 
34  // alpha11 = alpha11 * alpha11'
35  FLA_Absolute_square( alpha11 );
36 
37  // alpha11 = alpha11 + a12t * a12t'
38  FLA_Dotcs_external( FLA_CONJUGATE, FLA_ONE, a12t, a12t, FLA_ONE, alpha11 );
39 
40  // a12t = a12t * triu( A22 )'
41  // a12t' = triu( A22 ) * a12t'
42  FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_NO_TRANSPOSE, FLA_NONUNIT_DIAG, A22, a12t );
43 
44  /*------------------------------------------------------------*/
45 
46  FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
47  a10t, alpha11, /**/ a12t,
48  /* ************** */ /* ************************ */
49  &ABL, /**/ &ABR, A20, a21, /**/ A22,
50  FLA_TL );
51 
52  }
53 
54  return FLA_SUCCESS;
55 }
FLA_Error FLA_Trmv_external(FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x)
Definition: FLA_Trmv_external.c:13

References FLA_Absolute_square(), FLA_Cont_with_3x3_to_2x2(), FLA_Dotcs_external(), FLA_Obj_length(), FLA_ONE, FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Trmv_external().

Referenced by FLA_Ttmm_u().