libflame  revision_anchor
Functions
FLA_Tridiag_UT_shift_U.c File Reference

(r)

Functions

FLA_Error FLA_Tridiag_UT_shift_U (FLA_Uplo uplo, FLA_Obj A)
 
FLA_Error FLA_Tridiag_UT_shift_U_l_ops (int m_A, float *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Tridiag_UT_shift_U_l_opd (int m_A, double *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Tridiag_UT_shift_U_l_opc (int m_A, scomplex *buff_A, int rs_A, int cs_A)
 
FLA_Error FLA_Tridiag_UT_shift_U_l_opz (int m_A, dcomplex *buff_A, int rs_A, int cs_A)
 

Function Documentation

◆ FLA_Tridiag_UT_shift_U()

FLA_Error FLA_Tridiag_UT_shift_U ( FLA_Uplo  uplo,
FLA_Obj  A 
)

References FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Tridiag_UT_shift_U_check(), FLA_Tridiag_UT_shift_U_l_opc(), FLA_Tridiag_UT_shift_U_l_opd(), FLA_Tridiag_UT_shift_U_l_ops(), and FLA_Tridiag_UT_shift_U_l_opz().

Referenced by FLA_Tridiag_UT_form_Q().

14 {
15  FLA_Datatype datatype;
16  int m_A;
17  int rs_A, cs_A;
18 
19  if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
21 
22  datatype = FLA_Obj_datatype( A );
23 
24  // Play with swapping of cs rs; we do not need "u" version.
25  if ( uplo == FLA_LOWER_TRIANGULAR )
26  {
27  m_A = FLA_Obj_length( A );
28  rs_A = FLA_Obj_row_stride( A );
29  cs_A = FLA_Obj_col_stride( A );
30  }
31  else
32  {
33  m_A = FLA_Obj_width( A );
34  cs_A = FLA_Obj_row_stride( A );
35  rs_A = FLA_Obj_col_stride( A );
36  }
37 
38  switch ( datatype )
39  {
40  case FLA_FLOAT:
41  {
42  float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
44  buff_A, rs_A, cs_A );
45  break;
46  }
47 
48  case FLA_DOUBLE:
49  {
50  double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
52  buff_A, rs_A, cs_A );
53  break;
54  }
55 
56  case FLA_COMPLEX:
57  {
58  scomplex* buff_A = ( scomplex* ) FLA_COMPLEX_PTR( A );
60  buff_A, rs_A, cs_A );
61  break;
62  }
63 
64  case FLA_DOUBLE_COMPLEX:
65  {
66  dcomplex* buff_A = ( dcomplex* ) FLA_DOUBLE_COMPLEX_PTR( A );
68  buff_A, rs_A, cs_A );
69  break;
70  }
71  }
72 
73  return FLA_SUCCESS;
74 }
FLA_Error FLA_Tridiag_UT_shift_U_l_opc(int m_A, scomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Tridiag_UT_shift_U.c:146
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
FLA_Error FLA_Tridiag_UT_shift_U_l_opz(int m_A, dcomplex *buff_A, int rs_A, int cs_A)
Definition: FLA_Tridiag_UT_shift_U.c:180
dim_t FLA_Obj_width(FLA_Obj obj)
Definition: FLA_Query.c:123
FLA_Error FLA_Tridiag_UT_shift_U_check(FLA_Uplo uplo, FLA_Obj A)
Definition: FLA_Tridiag_UT_shift_U_check.c:13
Definition: blis_type_defs.h:132
FLA_Error FLA_Tridiag_UT_shift_U_l_opd(int m_A, double *buff_A, int rs_A, int cs_A)
Definition: FLA_Tridiag_UT_shift_U.c:112
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
FLA_Error FLA_Tridiag_UT_shift_U_l_ops(int m_A, float *buff_A, int rs_A, int cs_A)
Definition: FLA_Tridiag_UT_shift_U.c:78
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Tridiag_UT_shift_U_l_opc()

FLA_Error FLA_Tridiag_UT_shift_U_l_opc ( int  m_A,
scomplex buff_A,
int  rs_A,
int  cs_A 
)

References bl1_c0(), bl1_c1(), bl1_ccopyv(), bl1_csetv(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Tridiag_UT_shift_U().

148 {
149  scomplex* a00 = buff_A;
150  scomplex* a10 = buff_A + rs_A;
151  scomplex zero = bl1_c0();
152  scomplex one = bl1_c1();
153  int j;
154 
155  for ( j = m_A - 1; j > 0; --j )
156  {
157  scomplex* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
158  scomplex* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
159  scomplex* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
160  scomplex* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
161 
162  int m_ahead = m_A - j - 1;
163 
164  *alpha01 = zero;
165  *alpha11 = one;
167  m_ahead,
168  a20, rs_A,
169  a21, rs_A );
170  }
171 
172  *a00 = one;
173  bl1_csetv( m_A - 1,
174  &zero,
175  a10, rs_A );
176 
177  return FLA_SUCCESS;
178 }
void bl1_csetv(int m, scomplex *sigma, scomplex *x, int incx)
Definition: bl1_setv.c:52
Definition: blis_type_defs.h:81
scomplex bl1_c1(void)
Definition: bl1_constants.c:61
scomplex bl1_c0(void)
Definition: bl1_constants.c:125
Definition: blis_type_defs.h:132
void bl1_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition: bl1_copyv.c:49

◆ FLA_Tridiag_UT_shift_U_l_opd()

FLA_Error FLA_Tridiag_UT_shift_U_l_opd ( int  m_A,
double *  buff_A,
int  rs_A,
int  cs_A 
)

References bl1_d0(), bl1_d1(), bl1_dcopyv(), bl1_dsetv(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Tridiag_UT_shift_U().

114 {
115  double* a00 = buff_A;
116  double* a10 = buff_A + rs_A;
117  double zero = bl1_d0();
118  double one = bl1_d1();
119  int j;
120 
121  for ( j = m_A - 1; j > 0; --j )
122  {
123  double* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
124  double* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
125  double* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
126  double* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
127 
128  int m_ahead = m_A - j - 1;
129 
130  *alpha01 = zero;
131  *alpha11 = one;
133  m_ahead,
134  a20, rs_A,
135  a21, rs_A );
136  }
137 
138  *a00 = one;
139  bl1_dsetv( m_A - 1,
140  &zero,
141  a10, rs_A );
142 
143  return FLA_SUCCESS;
144 }
Definition: blis_type_defs.h:81
double bl1_d0(void)
Definition: bl1_constants.c:118
void bl1_dsetv(int m, double *sigma, double *x, int incx)
Definition: bl1_setv.c:39
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition: bl1_copyv.c:42
double bl1_d1(void)
Definition: bl1_constants.c:54

◆ FLA_Tridiag_UT_shift_U_l_ops()

FLA_Error FLA_Tridiag_UT_shift_U_l_ops ( int  m_A,
float *  buff_A,
int  rs_A,
int  cs_A 
)

References bl1_s0(), bl1_s1(), bl1_scopyv(), bl1_ssetv(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Tridiag_UT_shift_U().

80 {
81  float* a00 = buff_A;
82  float* a10 = buff_A + rs_A;
83  float zero = bl1_s0();
84  float one = bl1_s1();
85  int j;
86 
87  for ( j = m_A - 1; j > 0; --j )
88  {
89  float* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
90  float* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
91  float* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
92  float* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
93 
94  int m_ahead = m_A - j - 1;
95 
96  *alpha01 = zero;
97  *alpha11 = one;
99  m_ahead,
100  a20, rs_A,
101  a21, rs_A );
102  }
103 
104  *a00 = one;
105  bl1_ssetv( m_A - 1,
106  &zero,
107  a10, rs_A );
108 
109  return FLA_SUCCESS;
110 }
float bl1_s1(void)
Definition: bl1_constants.c:47
Definition: blis_type_defs.h:81
void bl1_ssetv(int m, float *sigma, float *x, int incx)
Definition: bl1_setv.c:26
void bl1_scopyv(conj1_t conj, int m, float *x, int incx, float *y, int incy)
Definition: bl1_copyv.c:35
float bl1_s0(void)
Definition: bl1_constants.c:111

◆ FLA_Tridiag_UT_shift_U_l_opz()

FLA_Error FLA_Tridiag_UT_shift_U_l_opz ( int  m_A,
dcomplex buff_A,
int  rs_A,
int  cs_A 
)

References bl1_z0(), bl1_z1(), bl1_zcopyv(), bl1_zsetv(), and BLIS1_NO_CONJUGATE.

Referenced by FLA_Tridiag_UT_shift_U().

182 {
183  dcomplex* a00 = buff_A;
184  dcomplex* a10 = buff_A + rs_A;
185  dcomplex zero = bl1_z0();
186  dcomplex one = bl1_z1();
187  int j;
188 
189  for ( j = m_A - 1; j > 0; --j )
190  {
191  dcomplex* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
192  dcomplex* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
193  dcomplex* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
194  dcomplex* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
195 
196  int m_ahead = m_A - j - 1;
197 
198  *alpha01 = zero;
199  *alpha11 = one;
201  m_ahead,
202  a20, rs_A,
203  a21, rs_A );
204  }
205 
206  *a00 = one;
207  bl1_zsetv( m_A - 1,
208  &zero,
209  a10, rs_A );
210 
211  return FLA_SUCCESS;
212 }
void bl1_zsetv(int m, dcomplex *sigma, dcomplex *x, int incx)
Definition: bl1_setv.c:66
dcomplex bl1_z0(void)
Definition: bl1_constants.c:133
Definition: blis_type_defs.h:81
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
dcomplex bl1_z1(void)
Definition: bl1_constants.c:69