libflame revision_anchor
FLA_Tridiag_UT_realify.c File Reference

(r)

Functions

FLA_Error FLA_Tridiag_UT_realify (FLA_Uplo uplo, FLA_Obj A, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_l_realify_unb (FLA_Obj A, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_l_realify_opt (FLA_Obj A, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_u_realify_unb (FLA_Obj A, FLA_Obj d)
 
FLA_Error FLA_Tridiag_UT_u_realify_opt (FLA_Obj A, FLA_Obj d)
 

Function Documentation

◆ FLA_Tridiag_UT_l_realify_opt()

FLA_Error FLA_Tridiag_UT_l_realify_opt ( FLA_Obj A,
FLA_Obj d )
120{
121 FLA_Datatype datatype;
122 int m_A;
123 int rs_A, cs_A;
124 int inc_d;
125 int i;
126
127 datatype = FLA_Obj_datatype( A );
128
129 m_A = FLA_Obj_length( A );
130
131 rs_A = FLA_Obj_row_stride( A );
132 cs_A = FLA_Obj_col_stride( A );
133
134 inc_d = FLA_Obj_vector_inc( d );
135
136
137 switch ( datatype )
138 {
139 case FLA_FLOAT:
140 {
141 float* buff_d = FLA_FLOAT_PTR( d );
142 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
143
144 bl1_ssetv( m_A,
145 buff_1,
146 buff_d, inc_d );
147
148 break;
149 }
150
151 case FLA_DOUBLE:
152 {
153 double* buff_d = FLA_DOUBLE_PTR( d );
154 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
155
156 bl1_dsetv( m_A,
157 buff_1,
158 buff_d, inc_d );
159
160 break;
161 }
162
163 case FLA_COMPLEX:
164 {
165 scomplex* buff_A = FLA_COMPLEX_PTR( A );
166 scomplex* buff_d = FLA_COMPLEX_PTR( d );
167 scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
168
169 bl1_csetv( 1,
170 buff_1,
171 buff_d, inc_d );
172
173 for ( i = 1; i < m_A; ++i )
174 {
175 scomplex* a10t_r = buff_A + (i-1)*cs_A + (i )*rs_A;
176 scomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
177 scomplex* delta1 = buff_d + (i )*inc_d;
178 scomplex absv;
179 scomplex conj_delta1;
180
181 int m_ahead = m_A - i - 1;
182
183 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a10t_r, delta1 );
184 // FLA_Copyt( FLA_NO_TRANSPOSE, a10t_r, absv );
185 // FLA_Absolute_value( absv );
186 // FLA_Inv_scal( absv, delta1 );
187 bl1_ccopys( BLIS1_CONJUGATE, a10t_r, delta1 );
188 bl1_cabsval2( a10t_r, &absv );
189 bl1_cinvscals( &absv, delta1 );
190
191 // FLA_Copyt( FLA_NO_TRANSPOSE, absv, a10t_r );
192 // FLA_Scalc( FLA_CONJUGATE, delta1, a21_t );
193 *a10t_r = absv;
194 if ( m_ahead > 0 )
195 {
196 bl1_ccopyconj( delta1, &conj_delta1 );
197 bl1_cscals( &conj_delta1, a21_t );
198 }
199 }
200
201 break;
202 }
203
204 case FLA_DOUBLE_COMPLEX:
205 {
206 dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
207 dcomplex* buff_d = FLA_DOUBLE_COMPLEX_PTR( d );
208 dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
209
210 bl1_zsetv( 1,
211 buff_1,
212 buff_d, inc_d );
213
214 for ( i = 1; i < m_A; ++i )
215 {
216 dcomplex* a10t_r = buff_A + (i-1)*cs_A + (i )*rs_A;
217 dcomplex* a21_t = buff_A + (i )*cs_A + (i+1)*rs_A;
218 dcomplex* delta1 = buff_d + (i )*inc_d;
219 dcomplex absv;
220 dcomplex conj_delta1;
221
222 int m_ahead = m_A - i - 1;
223
224 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a10t_r, delta1 );
225 // FLA_Copyt( FLA_NO_TRANSPOSE, a10t_r, absv );
226 // FLA_Absolute_value( absv );
227 // FLA_Inv_scal( absv, delta1 );
228 bl1_zcopys( BLIS1_CONJUGATE, a10t_r, delta1 );
229 bl1_zabsval2( a10t_r, &absv );
230 bl1_zinvscals( &absv, delta1 );
231
232 // FLA_Copyt( FLA_NO_TRANSPOSE, absv, a10t_r );
233 // FLA_Scalc( FLA_CONJUGATE, delta1, a21_t );
234 *a10t_r = absv;
235 if ( m_ahead > 0 )
236 {
237 bl1_zcopyconj( delta1, &conj_delta1 );
238 bl1_zscals( &conj_delta1, a21_t );
239 }
240 }
241
242 break;
243 }
244 }
245
246 return FLA_SUCCESS;
247}
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
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
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
int i
Definition bl1_axmyv2.c:145
bl1_zscals(beta, rho_yz)
void bl1_dsetv(int m, double *sigma, double *x, int incx)
Definition bl1_setv.c:39
void bl1_zsetv(int m, dcomplex *sigma, dcomplex *x, int incx)
Definition bl1_setv.c:66
void bl1_csetv(int m, scomplex *sigma, scomplex *x, int incx)
Definition bl1_setv.c:52
void bl1_ssetv(int m, float *sigma, float *x, int incx)
Definition bl1_setv.c:26
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
Definition blis_type_defs.h:138
Definition blis_type_defs.h:133

References bl1_csetv(), bl1_dsetv(), bl1_ssetv(), bl1_zscals(), bl1_zsetv(), BLIS1_CONJUGATE, FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_ONE, and i.

Referenced by FLA_Tridiag_UT_realify().

◆ FLA_Tridiag_UT_l_realify_unb()

FLA_Error FLA_Tridiag_UT_l_realify_unb ( FLA_Obj A,
FLA_Obj d )
38{
39 FLA_Obj ATL, ATR, A00, a01, A02,
40 ABL, ABR, a10t, alpha11, a12t,
41 A20, a21, A22;
42
43 FLA_Obj dT, d0,
44 dB, delta1,
45 d2;
46
47 FLA_Obj a10t_l, a10t_r;
48
49 FLA_Obj a21_t,
50 a21_b;
51
52 FLA_Obj absv;
53
54
55 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &absv );
56
57 FLA_Part_2x2( A, &ATL, &ATR,
58 &ABL, &ABR, 1, 1, FLA_TL );
59
60 FLA_Part_2x1( d, &dT,
61 &dB, 1, FLA_TOP );
62
63 // Set first element of vector d to one.
64 FLA_Set( FLA_ONE, dT );
65
66 while ( FLA_Obj_min_dim( ABR ) > 0 )
67 {
68 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
69 /* ************* */ /* ************************** */
70 &a10t, /**/ &alpha11, &a12t,
71 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
72 1, 1, FLA_BR );
73
74 FLA_Repart_2x1_to_3x1( dT, &d0,
75 /* ** */ /* ****** */
76 &delta1,
77 dB, &d2, 1, FLA_BOTTOM );
78
79 /*------------------------------------------------------------*/
80
81 FLA_Part_1x2( a10t, &a10t_l, &a10t_r, 1, FLA_RIGHT );
82
83 FLA_Part_2x1( a21, &a21_t,
84 &a21_b, 1, FLA_TOP );
85
86 // delta1 = conj(a10t_r) / abs(a10t_r);
87 FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a10t_r, delta1 );
88 FLA_Copyt( FLA_NO_TRANSPOSE, a10t_r, absv );
89 FLA_Absolute_value( absv );
90 FLA_Inv_scal( absv, delta1 );
91
92 // a10t_r = delta1 * a10t_r;
93 // = abs(a10t_r);
94 // alpha11 = delta1 * alpha11 * conj(delta1);
95 // = alpha11;
96 // a21_t = a21_t * conj(delta1);
97 FLA_Copyt( FLA_NO_TRANSPOSE, absv, a10t_r );
98 FLA_Scalc( FLA_CONJUGATE, delta1, a21_t );
99
100 /*------------------------------------------------------------*/
101
102 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
103 a10t, alpha11, /**/ a12t,
104 /* ************** */ /* ************************ */
105 &ABL, /**/ &ABR, A20, a21, /**/ A22,
106 FLA_TL );
107
108 FLA_Cont_with_3x1_to_2x1( &dT, d0,
109 delta1,
110 /* ** */ /* ****** */
111 &dB, d2, FLA_TOP );
112 }
113
114 FLA_Obj_free( &absv );
115
116 return FLA_SUCCESS;
117}
FLA_Error FLA_Scalc(FLA_Conj conjalpha, FLA_Obj alpha, FLA_Obj A)
Definition FLA_Scalc.c:13
FLA_Error FLA_Inv_scal(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Inv_scal.c:13
FLA_Error FLA_Copyt(FLA_Trans trans, FLA_Obj A, FLA_Obj B)
Definition FLA_Copyt.c:15
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
FLA_Error FLA_Cont_with_3x1_to_2x1(FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, FLA_Side side)
Definition FLA_View.c:428
FLA_Error FLA_Repart_2x1_to_3x1(FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:226
FLA_Error FLA_Obj_create(FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj)
Definition FLA_Obj.c:55
FLA_Error FLA_Part_1x2(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t nb, FLA_Side side)
Definition FLA_View.c:110
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76
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_Obj_min_dim(FLA_Obj obj)
Definition FLA_Query.c:153
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition FLA_Obj.c:588
FLA_Error FLA_Absolute_value(FLA_Obj alpha)
Definition FLA_Absolute_value.c:13
FLA_Error FLA_Set(FLA_Obj alpha, FLA_Obj A)
Definition FLA_Set.c:13
Definition FLA_type_defs.h:159

References FLA_Absolute_value(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyt(), FLA_Inv_scal(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Scalc(), and FLA_Set().

◆ FLA_Tridiag_UT_realify()

FLA_Error FLA_Tridiag_UT_realify ( FLA_Uplo uplo,
FLA_Obj A,
FLA_Obj d )
14{
15 FLA_Error r_val = FLA_SUCCESS;
16
17 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
18 FLA_Tridiag_UT_realify_check( uplo, A, d );
19
20 if ( FLA_Obj_is_real( A ) )
21 {
22 FLA_Set( FLA_ONE, d );
23 return FLA_SUCCESS;
24 }
25
26 if ( uplo == FLA_LOWER_TRIANGULAR )
27 //r_val = FLA_Tridiag_UT_l_realify_unb( A, d );
28 r_val = FLA_Tridiag_UT_l_realify_opt( A, d );
29 else
30 //r_val = FLA_Tridiag_UT_u_realify_unb( A, d );
31 r_val = FLA_Tridiag_UT_u_realify_opt( A, d );
32
33 return r_val;
34}
FLA_Error FLA_Tridiag_UT_l_realify_opt(FLA_Obj A, FLA_Obj d)
Definition FLA_Tridiag_UT_realify.c:119
FLA_Error FLA_Tridiag_UT_u_realify_opt(FLA_Obj A, FLA_Obj d)
Definition FLA_Tridiag_UT_realify.c:335
FLA_Error FLA_Tridiag_UT_realify_check(FLA_Uplo uplo, FLA_Obj A, FLA_Obj d)
Definition FLA_Tridiag_UT_realify_check.c:13
FLA_Bool FLA_Obj_is_real(FLA_Obj A)
Definition FLA_Query.c:307
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
int FLA_Error
Definition FLA_type_defs.h:47

References FLA_Check_error_level(), FLA_Obj_is_real(), FLA_ONE, FLA_Set(), FLA_Tridiag_UT_l_realify_opt(), FLA_Tridiag_UT_realify_check(), and FLA_Tridiag_UT_u_realify_opt().

Referenced by FLA_Hevd_lv_unb_var1(), and FLA_Hevd_lv_unb_var2().

◆ FLA_Tridiag_UT_u_realify_opt()

FLA_Error FLA_Tridiag_UT_u_realify_opt ( FLA_Obj A,
FLA_Obj d )
336{
337 FLA_Datatype datatype;
338 int m_A;
339 int rs_A, cs_A;
340 int inc_d;
341 int i;
342
343 datatype = FLA_Obj_datatype( A );
344
345 m_A = FLA_Obj_length( A );
346
347 rs_A = FLA_Obj_row_stride( A );
348 cs_A = FLA_Obj_col_stride( A );
349
350 inc_d = FLA_Obj_vector_inc( d );
351
352
353 switch ( datatype )
354 {
355 case FLA_FLOAT:
356 {
357 float* buff_d = FLA_FLOAT_PTR( d );
358 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
359
360 bl1_ssetv( m_A,
361 buff_1,
362 buff_d, inc_d );
363
364 break;
365 }
366
367 case FLA_DOUBLE:
368 {
369 double* buff_d = FLA_DOUBLE_PTR( d );
370 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
371
372 bl1_dsetv( m_A,
373 buff_1,
374 buff_d, inc_d );
375
376 break;
377 }
378
379 case FLA_COMPLEX:
380 {
381 scomplex* buff_A = FLA_COMPLEX_PTR( A );
382 scomplex* buff_d = FLA_COMPLEX_PTR( d );
383 scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
384
385 bl1_csetv( 1,
386 buff_1,
387 buff_d, inc_d );
388
389 for ( i = 1; i < m_A; ++i )
390 {
391 scomplex* a01_b = buff_A + (i )*cs_A + (i-1)*rs_A;
392 scomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
393 scomplex* delta1 = buff_d + (i )*inc_d;
394 scomplex absv;
395 scomplex conj_delta1;
396
397 int m_ahead = m_A - i - 1;
398
399 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a01_b, delta1 );
400 // FLA_Copyt( FLA_NO_TRANSPOSE, a01_b, absv );
401 // FLA_Absolute_value( absv );
402 // FLA_Inv_scal( absv, delta1 );
403 bl1_ccopys( BLIS1_CONJUGATE, a01_b, delta1 );
404 bl1_cabsval2( a01_b, &absv );
405 bl1_cinvscals( &absv, delta1 );
406
407 // FLA_Copyt( FLA_NO_TRANSPOSE, absv, a01_b );
408 // FLA_Scalc( FLA_CONJUGATE, delta1, a12t_l );
409 *a01_b = absv;
410 if ( m_ahead > 0 )
411 {
412 bl1_ccopyconj( delta1, &conj_delta1 );
413 bl1_cscals( &conj_delta1, a12t_l );
414 }
415 }
416
417 break;
418 }
419
420 case FLA_DOUBLE_COMPLEX:
421 {
422 dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
423 dcomplex* buff_d = FLA_DOUBLE_COMPLEX_PTR( d );
424 dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
425
426 bl1_zsetv( 1,
427 buff_1,
428 buff_d, inc_d );
429
430 for ( i = 1; i < m_A; ++i )
431 {
432 dcomplex* a01_b = buff_A + (i )*cs_A + (i-1)*rs_A;
433 dcomplex* a12t_l = buff_A + (i+1)*cs_A + (i )*rs_A;
434 dcomplex* delta1 = buff_d + (i )*inc_d;
435 dcomplex absv;
436 dcomplex conj_delta1;
437
438 int m_ahead = m_A - i - 1;
439
440 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a01_b, delta1 );
441 // FLA_Copyt( FLA_NO_TRANSPOSE, a01_b, absv );
442 // FLA_Absolute_value( absv );
443 // FLA_Inv_scal( absv, delta1 );
444 bl1_zcopys( BLIS1_CONJUGATE, a01_b, delta1 );
445 bl1_zabsval2( a01_b, &absv );
446 bl1_zinvscals( &absv, delta1 );
447
448 // FLA_Copyt( FLA_NO_TRANSPOSE, absv, a01_b );
449 // FLA_Scalc( FLA_CONJUGATE, delta1, a12t_l );
450 *a01_b = absv;
451 if ( m_ahead > 0 )
452 {
453 bl1_zcopyconj( delta1, &conj_delta1 );
454 bl1_zscals( &conj_delta1, a12t_l );
455 }
456 }
457
458 break;
459 }
460 }
461
462 return FLA_SUCCESS;
463}

References bl1_csetv(), bl1_dsetv(), bl1_ssetv(), bl1_zscals(), bl1_zsetv(), BLIS1_CONJUGATE, FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_ONE, and i.

Referenced by FLA_Tridiag_UT_realify().

◆ FLA_Tridiag_UT_u_realify_unb()

FLA_Error FLA_Tridiag_UT_u_realify_unb ( FLA_Obj A,
FLA_Obj d )
253{
254 FLA_Obj ATL, ATR, A00, a01, A02,
255 ABL, ABR, a10t, alpha11, a12t,
256 A20, a21, A22;
257
258 FLA_Obj dT, d0,
259 dB, delta1,
260 d2;
261
262 FLA_Obj a01_t,
263 a01_b;
264
265 FLA_Obj a12t_l, a12t_r;
266
267
268 FLA_Obj absv;
269
270
271 FLA_Obj_create( FLA_Obj_datatype( A ), 1, 1, 0, 0, &absv );
272
273 FLA_Part_2x2( A, &ATL, &ATR,
274 &ABL, &ABR, 1, 1, FLA_TL );
275
276 FLA_Part_2x1( d, &dT,
277 &dB, 1, FLA_TOP );
278
279 // Set first element of vector d to one.
280 FLA_Set( FLA_ONE, dT );
281
282 while ( FLA_Obj_min_dim( ABR ) > 0 )
283 {
284 FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
285 /* ************* */ /* ************************** */
286 &a10t, /**/ &alpha11, &a12t,
287 ABL, /**/ ABR, &A20, /**/ &a21, &A22,
288 1, 1, FLA_BR );
289
290 FLA_Repart_2x1_to_3x1( dT, &d0,
291 /* ** */ /* ****** */
292 &delta1,
293 dB, &d2, 1, FLA_BOTTOM );
294
295 /*------------------------------------------------------------*/
296
297 FLA_Part_2x1( a01, &a01_t,
298 &a01_b, 1, FLA_BOTTOM );
299
300 FLA_Part_1x2( a12t, &a12t_l, &a12t_r, 1, FLA_LEFT );
301
302 // delta1 = conj(a01_b) / abs(a01_b);
303 FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, a01_b, delta1 );
304 FLA_Copyt( FLA_NO_TRANSPOSE, a01_b, absv );
305 FLA_Absolute_value( absv );
306 FLA_Inv_scal( absv, delta1 );
307
308 // a01_b = delta1 * a01_b;
309 // = abs(a01_b);
310 // alpha11 = delta1 * alpha11 * conj(delta1);
311 // = alpha11;
312 // a12t_l = a12t_l * conj(delta1);
313 FLA_Copyt( FLA_NO_TRANSPOSE, absv, a01_b );
314 FLA_Scalc( FLA_CONJUGATE, delta1, a12t_l );
315
316 /*------------------------------------------------------------*/
317
318 FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
319 a10t, alpha11, /**/ a12t,
320 /* ************** */ /* ************************ */
321 &ABL, /**/ &ABR, A20, a21, /**/ A22,
322 FLA_TL );
323
324 FLA_Cont_with_3x1_to_2x1( &dT, d0,
325 delta1,
326 /* ** */ /* ****** */
327 &dB, d2, FLA_TOP );
328 }
329
330 FLA_Obj_free( &absv );
331
332 return FLA_SUCCESS;
333}

References FLA_Absolute_value(), FLA_Cont_with_3x1_to_2x1(), FLA_Cont_with_3x3_to_2x2(), FLA_Copyt(), FLA_Inv_scal(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_min_dim(), FLA_ONE, FLA_Part_1x2(), FLA_Part_2x1(), FLA_Part_2x2(), FLA_Repart_2x1_to_3x1(), FLA_Repart_2x2_to_3x3(), FLA_Scalc(), and FLA_Set().