libflame revision_anchor
Functions
FLA_Bidiag_UT_extract_real_diagonals.c File Reference

(r)

Functions

FLA_Error FLA_Bidiag_UT_extract_real_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_u_extract_real_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 
FLA_Error FLA_Bidiag_UT_l_extract_real_diagonals (FLA_Obj A, FLA_Obj d, FLA_Obj e)
 

Function Documentation

◆ FLA_Bidiag_UT_extract_real_diagonals()

FLA_Error FLA_Bidiag_UT_extract_real_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_real_diagonals(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_real_diagonals.c:163
FLA_Error FLA_Bidiag_UT_u_extract_real_diagonals(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_real_diagonals.c:28
FLA_Error FLA_Bidiag_UT_extract_real_diagonals_check(FLA_Obj A, FLA_Obj d, FLA_Obj e)
Definition FLA_Bidiag_UT_extract_real_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_real_diagonals_check(), FLA_Bidiag_UT_l_extract_real_diagonals(), FLA_Bidiag_UT_u_extract_real_diagonals(), FLA_Check_error_level(), FLA_Obj_length(), FLA_Obj_width(), and i.

Referenced by FLA_Svd_ext_u_unb_var1(), FLA_Svd_uv_unb_var1(), and FLA_Svd_uv_unb_var2().

◆ FLA_Bidiag_UT_l_extract_real_diagonals()

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

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), i, scomplex::real, and dcomplex::real.

Referenced by FLA_Bidiag_UT_extract_real_diagonals(), and FLA_Tridiag_UT_extract_real_diagonals().

◆ FLA_Bidiag_UT_u_extract_real_diagonals()

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

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Obj_width(), i, scomplex::real, and dcomplex::real.

Referenced by FLA_Bidiag_UT_extract_real_diagonals(), and FLA_Tridiag_UT_extract_real_diagonals().