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 
)
14{
15 FLA_Datatype datatype;
16 int m_A;
17 int rs_A, cs_A;
18
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 );
30 }
31 else
32 {
33 m_A = FLA_Obj_width( 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 {
60 buff_A, rs_A, cs_A );
61 break;
62 }
63
65 {
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_ops(int m_A, float *buff_A, int rs_A, int cs_A)
Definition FLA_Tridiag_UT_shift_U.c:78
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
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
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
FLA_Error FLA_Tridiag_UT_shift_U_check(FLA_Uplo uplo, FLA_Obj A)
Definition FLA_Tridiag_UT_shift_U_check.c:13
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
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
int i
Definition bl1_axmyv2.c:145
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

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(), FLA_Tridiag_UT_shift_U_l_opz(), and i.

Referenced by FLA_Tridiag_UT_form_Q().

◆ 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 
)
148{
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_ccopyv(conj1_t conj, int m, scomplex *x, int incx, scomplex *y, int incy)
Definition bl1_copyv.c:49
scomplex bl1_c1(void)
Definition bl1_constants.c:61
void bl1_csetv(int m, scomplex *sigma, scomplex *x, int incx)
Definition bl1_setv.c:52
scomplex bl1_c0(void)
Definition bl1_constants.c:125
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81

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

Referenced by FLA_Tridiag_UT_shift_U().

◆ 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 
)
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}
void bl1_dcopyv(conj1_t conj, int m, double *x, int incx, double *y, int incy)
Definition bl1_copyv.c:42
void bl1_dsetv(int m, double *sigma, double *x, int incx)
Definition bl1_setv.c:39
double bl1_d0(void)
Definition bl1_constants.c:118
double bl1_d1(void)
Definition bl1_constants.c:54

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

Referenced by FLA_Tridiag_UT_shift_U().

◆ 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 
)
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}
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
void bl1_ssetv(int m, float *sigma, float *x, int incx)
Definition bl1_setv.c:26
float bl1_s1(void)
Definition bl1_constants.c:47

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

Referenced by FLA_Tridiag_UT_shift_U().

◆ 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 
)
182{
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_zcopyv(conj1_t conj, int m, dcomplex *x, int incx, dcomplex *y, int incy)
Definition bl1_copyv.c:63
dcomplex bl1_z0(void)
Definition bl1_constants.c:133
void bl1_zsetv(int m, dcomplex *sigma, dcomplex *x, int incx)
Definition bl1_setv.c:66
dcomplex bl1_z1(void)
Definition bl1_constants.c:69

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

Referenced by FLA_Tridiag_UT_shift_U().