libflame revision_anchor
Functions
FLA_Bidiag_UT_extract_diagonals.c File Reference

(r)

Functions

FLA_Error FLA_Bidiag_UT_extract_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_u_extract_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_l_extract_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 

Function Documentation

◆ FLA_Bidiag_UT_extract_diagonals()

FLA_Error FLA_Bidiag_UT_extract_diagonals ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)
14{
16
19
20 if ( FLA_Obj_length( A ) >= FLA_Obj_width( A ) )
22 else
24
25 return r_val;
26}
FLA_Error FLA_Bidiag_UT_l_extract_diagonals(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_diagonals.c:165
FLA_Error FLA_Bidiag_UT_u_extract_diagonals(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_diagonals.c:30
FLA_Error FLA_Bidiag_UT_extract_diagonals_check(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_diagonals_check.c:13
dim_t FLA_Obj_width(FLA_Obj obj)
Definition FLA_Query.c:123
dim_t FLA_Obj_length(FLA_Obj obj)
Definition FLA_Query.c:116
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
int FLA_Error
Definition FLA_type_defs.h:47
int i
Definition bl1_axmyv2.c:145

References FLA_Bidiag_UT_extract_diagonals_check(), FLA_Bidiag_UT_l_extract_diagonals(), FLA_Bidiag_UT_u_extract_diagonals(), FLA_Check_error_level(), FLA_Obj_length(), FLA_Obj_width(), and i.

◆ FLA_Bidiag_UT_l_extract_diagonals()

FLA_Error FLA_Bidiag_UT_l_extract_diagonals ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)
166{
167 FLA_Datatype datatype;
168 int m_A;
169 int rs_A, cs_A;
170 int inc_d;
171 int inc_e;
172 int i;
173
174 datatype = FLA_Obj_datatype( A );
175
176 m_A = FLA_Obj_length( A );
177
180
182
183 if ( m_A != 1 )
185 else
186 inc_e = 0;
187
188 switch ( datatype )
189 {
190 case FLA_FLOAT:
191 {
192 float* buff_A = FLA_FLOAT_PTR( A );
193 float* buff_d = FLA_FLOAT_PTR( d );
194 float* buff_e = ( m_A != 1 ? FLA_FLOAT_PTR( e ) : NULL );
195
196 for ( i = 0; i < m_A; ++i )
197 {
198 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
199 float* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
200 float* delta1 = buff_d + (i )*inc_d;
201 float* epsilon1 = buff_e + (i )*inc_e;
202
203 int m_ahead = m_A - i - 1;
204
205 // delta1 = alpha11;
206 *delta1 = *alpha11;
207
208 // epsilon1 = a21_t;
209 if ( m_ahead > 0 )
210 *epsilon1 = *a21_t;
211 }
212
213 break;
214 }
215
216 case FLA_DOUBLE:
217 {
218 double* buff_A = FLA_DOUBLE_PTR( A );
219 double* buff_d = FLA_DOUBLE_PTR( d );
220 double* buff_e = ( m_A != 1 ? FLA_DOUBLE_PTR( e ) : NULL );
221
222 for ( i = 0; i < m_A; ++i )
223 {
224 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
225 double* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
226 double* delta1 = buff_d + (i )*inc_d;
227 double* epsilon1 = buff_e + (i )*inc_e;
228
229 int m_ahead = m_A - i - 1;
230
231 // delta1 = alpha11;
232 *delta1 = *alpha11;
233
234 // epsilon1 = a21_t;
235 if ( m_ahead > 0 )
236 *epsilon1 = *a21_t;
237 }
238
239 break;
240 }
241
242 case FLA_COMPLEX:
243 {
246 scomplex* buff_e = ( m_A != 1 ? FLA_COMPLEX_PTR( e ) : NULL );
247
248 for ( i = 0; i < m_A; ++i )
249 {
250 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
251 scomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
252 scomplex* delta1 = buff_d + (i )*inc_d;
254
255 int m_ahead = m_A - i - 1;
256
257 // delta1 = alpha11;
258 *delta1 = *alpha11;
259
260 // epsilon1 = a21_t;
261 if ( m_ahead > 0 )
262 *epsilon1 = *a21_t;
263 }
264
265 break;
266 }
267
269 {
272 dcomplex* buff_e = ( m_A != 1 ? FLA_DOUBLE_COMPLEX_PTR( e ) : NULL );
273
274 for ( i = 0; i < m_A; ++i )
275 {
276 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
277 dcomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
278 dcomplex* delta1 = buff_d + (i )*inc_d;
280
281 int m_ahead = m_A - i - 1;
282
283 // delta1 = alpha11;
284 *delta1 = *alpha11;
285
286 // epsilon1 = a21_t;
287 if ( m_ahead > 0 )
288 *epsilon1 = *a21_t;
289 }
290
291 break;
292 }
293 }
294
295 return FLA_SUCCESS;
296}
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
dim_t FLA_Obj_vector_inc(FLA_Obj obj)
Definition FLA_Query.c:145
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
Definition blis_type_defs.h:133

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), and i.

Referenced by FLA_Bidiag_UT_extract_diagonals(), and FLA_Tridiag_UT_extract_diagonals().

◆ FLA_Bidiag_UT_u_extract_diagonals()

FLA_Error FLA_Bidiag_UT_u_extract_diagonals ( FLA_Obj  A,
FLA_Obj  d,
FLA_Obj  e 
)
31{
32 FLA_Datatype datatype;
33 int n_A;
34 int rs_A, cs_A;
35 int inc_d;
36 int inc_e;
37 int i;
38
39 datatype = FLA_Obj_datatype( A );
40
41 n_A = FLA_Obj_width( A );
42
45
47
48 if ( n_A != 1 )
50 else
51 inc_e = 0;
52
53 switch ( datatype )
54 {
55 case FLA_FLOAT:
56 {
57 float* buff_A = FLA_FLOAT_PTR( A );
58 float* buff_d = FLA_FLOAT_PTR( d );
59 float* buff_e = ( n_A != 1 ? FLA_FLOAT_PTR( e ) : NULL );
60
61 for ( i = 0; i < n_A; ++i )
62 {
63 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
64 float* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
65 float* delta1 = buff_d + (i )*inc_d;
66 float* epsilon1 = buff_e + (i )*inc_e;
67
68 int n_ahead = n_A - i - 1;
69
70 // delta1 = alpha11;
71 *delta1 = *alpha11;
72
73 // epsilon1 = a12t_l;
74 if ( n_ahead > 0 )
75 *epsilon1 = *a12t_l;
76 }
77
78 break;
79 }
80
81 case FLA_DOUBLE:
82 {
83 double* buff_A = FLA_DOUBLE_PTR( A );
84 double* buff_d = FLA_DOUBLE_PTR( d );
85 double* buff_e = ( n_A != 1 ? FLA_DOUBLE_PTR( e ) : NULL );
86
87 for ( i = 0; i < n_A; ++i )
88 {
89 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
90 double* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
91 double* delta1 = buff_d + (i )*inc_d;
92 double* epsilon1 = buff_e + (i )*inc_e;
93
94 int n_ahead = n_A - i - 1;
95
96 // delta1 = alpha11;
97 *delta1 = *alpha11;
98
99 // epsilon1 = a12t_l;
100 if ( n_ahead > 0 )
101 *epsilon1 = *a12t_l;
102 }
103
104 break;
105 }
106
107 case FLA_COMPLEX:
108 {
111 scomplex* buff_e = ( n_A != 1 ? FLA_COMPLEX_PTR( e ) : NULL );
112
113 for ( i = 0; i < n_A; ++i )
114 {
115 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
116 scomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
117 scomplex* delta1 = buff_d + (i )*inc_d;
119
120 int n_ahead = n_A - i - 1;
121
122 // delta1 = alpha11;
123 *delta1 = *alpha11;
124
125 // epsilon1 = a12t_l;
126 if ( n_ahead > 0 )
127 *epsilon1 = *a12t_l;
128 }
129
130 break;
131 }
132
134 {
137 dcomplex* buff_e = ( n_A != 1 ? FLA_DOUBLE_COMPLEX_PTR( e ) : NULL );
138
139 for ( i = 0; i < n_A; ++i )
140 {
141 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
142 dcomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
143 dcomplex* delta1 = buff_d + (i )*inc_d;
145
146 int n_ahead = n_A - i - 1;
147
148 // delta1 = alpha11;
149 *delta1 = *alpha11;
150
151 // epsilon1 = a12t_l;
152 if ( n_ahead > 0 )
153 *epsilon1 = *a12t_l;
154 }
155
156 break;
157 }
158 }
159
160 return FLA_SUCCESS;
161}

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Obj_width(), and i.

Referenced by FLA_Bidiag_UT_extract_diagonals(), and FLA_Tridiag_UT_extract_diagonals().