libflame revision_anchor
Functions
FLA_Lyap_n_opt_var4.c File Reference

(r)

Functions

FLA_Error FLA_Lyap_n_opt_var4 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_n_ops_var4 (int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_n_opd_var4 (int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_n_opc_var4 (int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
 
FLA_Error FLA_Lyap_n_opz_var4 (int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
 

Function Documentation

◆ FLA_Lyap_n_opc_var4()

FLA_Error FLA_Lyap_n_opc_var4 ( int  m_AC,
scomplex buff_sgn,
scomplex buff_A,
int  rs_A,
int  cs_A,
scomplex buff_W,
int  rs_W,
int  cs_W,
scomplex buff_C,
int  rs_C,
int  cs_C 
)
296{
299 int i;
300
302 m_AC,
303 m_AC,
304 buff_sgn,
305 buff_C, rs_C, cs_C );
306
307 for ( i = m_AC - 1; i >= 0; --i )
308 {
309 scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
310 scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
311 scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
312
313 scomplex* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
314 scomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
315 scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
316
317 scomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
318
320
321 int m_behind = i;
322
323 /*------------------------------------------------------------*/
324
325 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
326 // FLA_Mult_add( FLA_ONE, alpha11, omega );
327 // FLA_Inv_scal( omega, gamma11 );
331
332 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a01, FLA_ONE, c01 );
334 buff_m1,
335 gamma11,
336 a01, rs_A,
337 buff_1,
338 c01, rs_C );
339
340 // FLA_Copyrt( BLIS1_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
341 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
342 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
345 m_behind,
346 m_behind,
347 A00, rs_A, cs_A,
348 W00, rs_W, cs_W );
349
351 0,
352 m_behind,
353 m_behind,
354 alpha11,
355 W00, rs_W, cs_W );
356
360 m_behind,
361 W00, rs_W, cs_W,
362 c01, rs_C );
363
364 // FLA_Her2( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a01, c01, C00 );
367 m_behind,
368 buff_m1,
369 a01, rs_A,
370 c01, rs_C,
371 C00, rs_C, cs_C );
372
373 /*------------------------------------------------------------*/
374 }
375
376 return FLA_SUCCESS;
377}
FLA_Obj FLA_MINUS_ONE
Definition FLA_Init.c:22
FLA_Obj FLA_ONE
Definition FLA_Init.c:18
int i
Definition bl1_axmyv2.c:145
void bl1_caxpysv(int n, scomplex *alpha0, scomplex *alpha1, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition bl1_axpysv.c:51
void bl1_ccopymrt(uplo1_t uplo, trans1_t trans, int m, int n, scomplex *a, int a_rs, int a_cs, scomplex *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:223
void bl1_cher2(uplo1_t uplo, conj1_t conj, int m, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:33
void bl1_cscalm(conj1_t conj, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs)
Definition bl1_scalm.c:169
void bl1_ctrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx)
Definition bl1_trsv.c:99
void bl1_cshiftdiag(conj1_t conj, int offset, int m, int n, scomplex *sigma, scomplex *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:97
@ BLIS1_UPPER_TRIANGULAR
Definition blis_type_defs.h:63
@ BLIS1_NONUNIT_DIAG
Definition blis_type_defs.h:74
@ BLIS1_NO_TRANSPOSE
Definition blis_type_defs.h:54
@ BLIS1_CONJUGATE
Definition blis_type_defs.h:82
@ BLIS1_NO_CONJUGATE
Definition blis_type_defs.h:81
Definition blis_type_defs.h:133

References bl1_caxpysv(), bl1_ccopymrt(), bl1_cher2(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_n_opt_var4().

◆ FLA_Lyap_n_opd_var4()

FLA_Error FLA_Lyap_n_opd_var4 ( int  m_AC,
double buff_sgn,
double buff_A,
int  rs_A,
int  cs_A,
double buff_W,
int  rs_W,
int  cs_W,
double buff_C,
int  rs_C,
int  cs_C 
)
206{
207 double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
209 int i;
210
212 m_AC,
213 m_AC,
214 buff_sgn,
215 buff_C, rs_C, cs_C );
216
217 for ( i = m_AC - 1; i >= 0; --i )
218 {
219 double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
220 double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
221 double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
222
223 double* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
224 double* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
225 double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
226
227 double* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
228
229 double omega;
230
231 int m_behind = i;
232
233 /*------------------------------------------------------------*/
234
235 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
236 // FLA_Mult_add( FLA_ONE, alpha11, omega );
237 // FLA_Inv_scal( omega, gamma11 );
241
242 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a01, FLA_ONE, c01 );
244 buff_m1,
245 gamma11,
246 a01, rs_A,
247 buff_1,
248 c01, rs_C );
249
250 // FLA_Copyrt( BLIS1_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
251 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
252 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
255 m_behind,
256 m_behind,
257 A00, rs_A, cs_A,
258 W00, rs_W, cs_W );
259
261 0,
262 m_behind,
263 m_behind,
264 alpha11,
265 W00, rs_W, cs_W );
266
270 m_behind,
271 W00, rs_W, cs_W,
272 c01, rs_C );
273
274 // FLA_Her2( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a01, c01, C00 );
277 m_behind,
278 buff_m1,
279 a01, rs_A,
280 c01, rs_C,
281 C00, rs_C, cs_C );
282
283 /*------------------------------------------------------------*/
284 }
285
286 return FLA_SUCCESS;
287}
void bl1_daxpysv(int n, double *alpha0, double *alpha1, double *x, int incx, double *beta, double *y, int incy)
Definition bl1_axpysv.c:32
void bl1_dcopymrt(uplo1_t uplo, trans1_t trans, int m, int n, double *a, int a_rs, int a_cs, double *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:118
void bl1_dher2(uplo1_t uplo, conj1_t conj, int m, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition bl1_her2.c:23
void bl1_dscalm(conj1_t conj, int m, int n, double *alpha, double *a, int a_rs, int a_cs)
Definition bl1_scalm.c:65
void bl1_dtrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, double *a, int a_rs, int a_cs, double *x, int incx)
Definition bl1_trsv.c:56
void bl1_dshiftdiag(conj1_t conj, int offset, int m, int n, double *sigma, double *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:34

References bl1_daxpysv(), bl1_dcopymrt(), bl1_dher2(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_n_opt_var4().

◆ FLA_Lyap_n_ops_var4()

FLA_Error FLA_Lyap_n_ops_var4 ( int  m_AC,
float buff_sgn,
float buff_A,
int  rs_A,
int  cs_A,
float buff_W,
int  rs_W,
int  cs_W,
float buff_C,
int  rs_C,
int  cs_C 
)
116{
117 float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
119 int i;
120
122 m_AC,
123 m_AC,
124 buff_sgn,
125 buff_C, rs_C, cs_C );
126
127 for ( i = m_AC - 1; i >= 0; --i )
128 {
129 float* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
130 float* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
131 float* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
132
133 float* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
134 float* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
135 float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
136
137 float* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
138
139 float omega;
140
141 int m_behind = i;
142
143 /*------------------------------------------------------------*/
144
145 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
146 // FLA_Mult_add( FLA_ONE, alpha11, omega );
147 // FLA_Inv_scal( omega, gamma11 );
151
152 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a01, FLA_ONE, c01 );
154 buff_m1,
155 gamma11,
156 a01, rs_A,
157 buff_1,
158 c01, rs_C );
159
160 // FLA_Copyrt( BLIS1_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
161 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
162 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
165 m_behind,
166 m_behind,
167 A00, rs_A, cs_A,
168 W00, rs_W, cs_W );
169
171 0,
172 m_behind,
173 m_behind,
174 alpha11,
175 W00, rs_W, cs_W );
176
180 m_behind,
181 W00, rs_W, cs_W,
182 c01, rs_C );
183
184 // FLA_Her2( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a01, c01, C00 );
187 m_behind,
188 buff_m1,
189 a01, rs_A,
190 c01, rs_C,
191 C00, rs_C, cs_C );
192
193 /*------------------------------------------------------------*/
194 }
195
196 return FLA_SUCCESS;
197}
void bl1_saxpysv(int n, float *alpha0, float *alpha1, float *x, int incx, float *beta, float *y, int incy)
Definition bl1_axpysv.c:13
void bl1_scopymrt(uplo1_t uplo, trans1_t trans, int m, int n, float *a, int a_rs, int a_cs, float *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:13
void bl1_sher2(uplo1_t uplo, conj1_t conj, int m, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition bl1_her2.c:13
void bl1_sscalm(conj1_t conj, int m, int n, float *alpha, float *a, int a_rs, int a_cs)
Definition bl1_scalm.c:13
void bl1_strsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, float *a, int a_rs, int a_cs, float *x, int incx)
Definition bl1_trsv.c:13
void bl1_sshiftdiag(conj1_t conj, int offset, int m, int n, float *sigma, float *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:13

References bl1_saxpysv(), bl1_scopymrt(), bl1_sher2(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_n_opt_var4().

◆ FLA_Lyap_n_opt_var4()

FLA_Error FLA_Lyap_n_opt_var4 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)
14{
15 FLA_Datatype datatype;
16 int m_AC;
17 int rs_A, cs_A;
18 int rs_W, cs_W;
19 int rs_C, cs_C;
20 FLA_Obj W;
21
23
24 datatype = FLA_Obj_datatype( A );
25
27
30
33
36
37 switch ( datatype )
38 {
39 case FLA_FLOAT:
40 {
41 float* buff_A = FLA_FLOAT_PTR( A );
42 float* buff_W = FLA_FLOAT_PTR( W );
43 float* buff_C = FLA_FLOAT_PTR( C );
44 float* buff_sgn = FLA_FLOAT_PTR( isgn );
45
50 buff_C, rs_C, cs_C );
51
52 break;
53 }
54
55 case FLA_DOUBLE:
56 {
57 double* buff_A = FLA_DOUBLE_PTR( A );
58 double* buff_W = FLA_DOUBLE_PTR( W );
59 double* buff_C = FLA_DOUBLE_PTR( C );
60 double* buff_sgn = FLA_DOUBLE_PTR( isgn );
61
66 buff_C, rs_C, cs_C );
67
68 break;
69 }
70
71 case FLA_COMPLEX:
72 {
77
82 buff_C, rs_C, cs_C );
83
84 break;
85 }
86
88 {
93
98 buff_C, rs_C, cs_C );
99
100 break;
101 }
102 }
103
104 FLA_Obj_free( &W );
105
106 return FLA_SUCCESS;
107}
FLA_Error FLA_Lyap_n_opz_var4(int m_AC, dcomplex *buff_sgn, dcomplex *buff_A, int rs_A, int cs_A, dcomplex *buff_W, int rs_W, int cs_W, dcomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_n_opt_var4.c:381
FLA_Error FLA_Lyap_n_ops_var4(int m_AC, float *buff_sgn, float *buff_A, int rs_A, int cs_A, float *buff_W, int rs_W, int cs_W, float *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_n_opt_var4.c:111
FLA_Error FLA_Lyap_n_opc_var4(int m_AC, scomplex *buff_sgn, scomplex *buff_A, int rs_A, int cs_A, scomplex *buff_W, int rs_W, int cs_W, scomplex *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_n_opt_var4.c:291
FLA_Error FLA_Lyap_n_opd_var4(int m_AC, double *buff_sgn, double *buff_A, int rs_A, int cs_A, double *buff_W, int rs_W, int cs_W, double *buff_C, int rs_C, int cs_C)
Definition FLA_Lyap_n_opt_var4.c:201
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
FLA_Error FLA_Obj_create_conf_to(FLA_Trans trans, FLA_Obj old, FLA_Obj *obj)
Definition FLA_Obj.c:286
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition FLA_Obj.c:588
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition FLA_Query.c:13
int FLA_Datatype
Definition FLA_type_defs.h:49
Definition FLA_type_defs.h:159
Definition blis_type_defs.h:138

References FLA_Lyap_n_opc_var4(), FLA_Lyap_n_opd_var4(), FLA_Lyap_n_ops_var4(), FLA_Lyap_n_opz_var4(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Obj_row_stride(), and i.

Referenced by FLA_Lyap_n().

◆ FLA_Lyap_n_opz_var4()

FLA_Error FLA_Lyap_n_opz_var4 ( int  m_AC,
dcomplex buff_sgn,
dcomplex buff_A,
int  rs_A,
int  cs_A,
dcomplex buff_W,
int  rs_W,
int  cs_W,
dcomplex buff_C,
int  rs_C,
int  cs_C 
)
386{
389 int i;
390
392 m_AC,
393 m_AC,
394 buff_sgn,
395 buff_C, rs_C, cs_C );
396
397 for ( i = m_AC - 1; i >= 0; --i )
398 {
399 dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
400 dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
401 dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
402
403 dcomplex* C00 = buff_C + (0 )*cs_C + (0 )*rs_C;
404 dcomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
405 dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
406
407 dcomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
408
410
411 int m_behind = i;
412
413 /*------------------------------------------------------------*/
414
415 // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
416 // FLA_Mult_add( FLA_ONE, alpha11, omega );
417 // FLA_Inv_scal( omega, gamma11 );
421
422 // FLA_Axpys( FLA_MINUS_ONE, gamma11, a01, FLA_ONE, c01 );
424 buff_m1,
425 gamma11,
426 a01, rs_A,
427 buff_1,
428 c01, rs_C );
429
430 // FLA_Copyrt( BLIS1_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
431 // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
432 // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
435 m_behind,
436 m_behind,
437 A00, rs_A, cs_A,
438 W00, rs_W, cs_W );
439
441 0,
442 m_behind,
443 m_behind,
444 alpha11,
445 W00, rs_W, cs_W );
446
450 m_behind,
451 W00, rs_W, cs_W,
452 c01, rs_C );
453
454 // FLA_Her2( FLA_UPPER_TRIANGULAR, FLA_MINUS_ONE, a01, c01, C00 );
457 m_behind,
458 buff_m1,
459 a01, rs_A,
460 c01, rs_C,
461 C00, rs_C, cs_C );
462
463 /*------------------------------------------------------------*/
464 }
465
466 return FLA_SUCCESS;
467}
void bl1_zaxpysv(int n, dcomplex *alpha0, dcomplex *alpha1, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition bl1_axpysv.c:71
void bl1_zcopymrt(uplo1_t uplo, trans1_t trans, int m, int n, dcomplex *a, int a_rs, int a_cs, dcomplex *b, int b_rs, int b_cs)
Definition bl1_copymrt.c:328
void bl1_zher2(uplo1_t uplo, conj1_t conj, int m, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition bl1_her2.c:121
void bl1_zscalm(conj1_t conj, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs)
Definition bl1_scalm.c:273
void bl1_ztrsv(uplo1_t uplo, trans1_t trans, diag1_t diag, int m, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx)
Definition bl1_trsv.c:177
void bl1_zshiftdiag(conj1_t conj, int offset, int m, int n, dcomplex *sigma, dcomplex *a, int a_rs, int a_cs)
Definition bl1_shiftdiag.c:122

References bl1_zaxpysv(), bl1_zcopymrt(), bl1_zher2(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_n_opt_var4().