libflame  revision_anchor
Functions
FLA_Lyap_h_opt_var2.c File Reference

(r)

Functions

FLA_Error FLA_Lyap_h_opt_var2 (FLA_Obj isgn, FLA_Obj A, FLA_Obj C)
 
FLA_Error FLA_Lyap_h_ops_var2 (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_h_opd_var2 (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_h_opc_var2 (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_h_opz_var2 (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_h_opc_var2()

FLA_Error FLA_Lyap_h_opc_var2 ( 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 
)

References bl1_caxpysv(), bl1_ccopymrt(), bl1_cdot2s(), bl1_cgemv(), bl1_cger(), bl1_cscalm(), bl1_cshiftdiag(), bl1_ctrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

346 {
347  scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
348  scomplex* buff_m1 = FLA_COMPLEX_PTR( FLA_MINUS_ONE );
349  int i;
350 
352  m_AC,
353  m_AC,
354  buff_sgn,
355  buff_C, rs_C, cs_C );
356 
357  for ( i = 0; i < m_AC; ++i )
358  {
359  scomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
360  scomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
361  scomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
362  scomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
363  scomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
364 
365  scomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
366  scomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
367  scomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
368  scomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
369 
370  scomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
371 
372  scomplex omega;
373 
374  int m_behind = i;
375  int m_ahead = m_AC - i - 1;
376 
377  /*------------------------------------------------------------*/
378 
379  // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
380  // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
381  // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
384  m_behind,
385  m_behind,
386  A00, rs_A, cs_A,
387  W00, rs_W, cs_W );
388 
390  0,
391  m_behind,
392  m_behind,
393  alpha11,
394  W00, rs_W, cs_W );
395 
399  m_behind,
400  W00, rs_W, cs_W,
401  c01, rs_C );
402 
403  // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
405  m_behind,
406  buff_m1,
407  a01, rs_A,
408  c01, rs_C,
409  buff_1,
410  gamma11 );
411 
412  // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
413  // FLA_Mult_add( FLA_ONE, alpha11, omega );
414  // FLA_Inv_scal( omega, gamma11 );
415  bl1_ccopyconj( alpha11, &omega );
416  bl1_cadd3( alpha11, &omega, &omega );
417  bl1_cinvscals( &omega, gamma11 );
418 
419  // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
422  m_behind,
423  m_ahead,
424  buff_m1,
425  c01, rs_C,
426  a12t, cs_A,
427  C02, rs_C, cs_C );
428 
429  // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
430  // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
431  bl1_caxpysv( m_ahead,
432  buff_m1,
433  gamma11,
434  a12t, cs_A,
435  buff_1,
436  c12t, cs_C );
437 
440  m_behind,
441  m_ahead,
442  buff_m1,
443  A02, rs_A, cs_A,
444  c01, rs_C,
445  buff_1,
446  c12t, cs_C );
447 
448  /*------------------------------------------------------------*/
449  }
450 
451  return FLA_SUCCESS;
452 }
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
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
Definition: blis_type_defs.h:54
Definition: blis_type_defs.h:132
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_caxpysv(int n, scomplex *alpha0, scomplex *alpha1, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition: bl1_axpysv.c:51
void bl1_cgemv(trans1_t transa, conj1_t conjx, int m, int n, scomplex *alpha, scomplex *a, int a_rs, int a_cs, scomplex *x, int incx, scomplex *beta, scomplex *y, int incy)
Definition: bl1_gemv.c:125
void bl1_cger(conj1_t conjx, conj1_t conjy, int m, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:111
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
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
Definition: blis_type_defs.h:63
void bl1_cdot2s(conj1_t conj, int n, scomplex *alpha, scomplex *x, int incx, scomplex *y, int incy, scomplex *beta, scomplex *rho)
Definition: bl1_dot2s.c:39

◆ FLA_Lyap_h_opd_var2()

FLA_Error FLA_Lyap_h_opd_var2 ( 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 
)

References bl1_daxpysv(), bl1_dcopymrt(), bl1_ddot2s(), bl1_dgemv(), bl1_dger(), bl1_dscalm(), bl1_dshiftdiag(), bl1_dtrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

231 {
232  double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
233  double* buff_m1 = FLA_DOUBLE_PTR( FLA_MINUS_ONE );
234  int i;
235 
237  m_AC,
238  m_AC,
239  buff_sgn,
240  buff_C, rs_C, cs_C );
241 
242  for ( i = 0; i < m_AC; ++i )
243  {
244  double* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
245  double* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
246  double* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
247  double* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
248  double* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
249 
250  double* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
251  double* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
252  double* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
253  double* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
254 
255  double* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
256 
257  double omega;
258 
259  int m_behind = i;
260  int m_ahead = m_AC - i - 1;
261 
262  /*------------------------------------------------------------*/
263 
264  // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
265  // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
266  // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
269  m_behind,
270  m_behind,
271  A00, rs_A, cs_A,
272  W00, rs_W, cs_W );
273 
275  0,
276  m_behind,
277  m_behind,
278  alpha11,
279  W00, rs_W, cs_W );
280 
284  m_behind,
285  W00, rs_W, cs_W,
286  c01, rs_C );
287 
288  // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
290  m_behind,
291  buff_m1,
292  a01, rs_A,
293  c01, rs_C,
294  buff_1,
295  gamma11 );
296 
297  // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
298  // FLA_Mult_add( FLA_ONE, alpha11, omega );
299  // FLA_Inv_scal( omega, gamma11 );
300  bl1_dcopyconj( alpha11, &omega );
301  bl1_dadd3( alpha11, &omega, &omega );
302  bl1_dinvscals( &omega, gamma11 );
303 
304  // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
307  m_behind,
308  m_ahead,
309  buff_m1,
310  c01, rs_C,
311  a12t, cs_A,
312  C02, rs_C, cs_C );
313 
314  // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
315  // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
316  bl1_daxpysv( m_ahead,
317  buff_m1,
318  gamma11,
319  a12t, cs_A,
320  buff_1,
321  c12t, cs_C );
322 
325  m_behind,
326  m_ahead,
327  buff_m1,
328  A02, rs_A, cs_A,
329  c01, rs_C,
330  buff_1,
331  c12t, cs_C );
332 
333  /*------------------------------------------------------------*/
334  }
335 
336  return FLA_SUCCESS;
337 }
void bl1_dgemv(trans1_t transa, conj1_t conjx, int m, int n, double *alpha, double *a, int a_rs, int a_cs, double *x, int incx, double *beta, double *y, int incy)
Definition: bl1_gemv.c:69
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
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_ddot2s(conj1_t conj, int n, double *alpha, double *x, int incx, double *y, int incy, double *beta, double *rho)
Definition: bl1_dot2s.c:26
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_dger(conj1_t conjx, conj1_t conjy, int m, int n, double *alpha, double *x, int incx, double *y, int incy, double *a, int a_rs, int a_cs)
Definition: bl1_ger.c:62
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
Definition: blis_type_defs.h:54
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
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
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
Definition: blis_type_defs.h:63

◆ FLA_Lyap_h_ops_var2()

FLA_Error FLA_Lyap_h_ops_var2 ( 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 
)

References bl1_saxpysv(), bl1_scopymrt(), bl1_sdot2s(), bl1_sgemv(), bl1_sger(), bl1_sscalm(), bl1_sshiftdiag(), bl1_strsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

116 {
117  float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
118  float* buff_m1 = FLA_FLOAT_PTR( FLA_MINUS_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 = 0; i < m_AC; ++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  float* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
133  float* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
134 
135  float* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
136  float* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
137  float* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
138  float* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
139 
140  float* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
141 
142  float omega;
143 
144  int m_behind = i;
145  int m_ahead = m_AC - i - 1;
146 
147  /*------------------------------------------------------------*/
148 
149  // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
150  // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
151  // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
154  m_behind,
155  m_behind,
156  A00, rs_A, cs_A,
157  W00, rs_W, cs_W );
158 
160  0,
161  m_behind,
162  m_behind,
163  alpha11,
164  W00, rs_W, cs_W );
165 
169  m_behind,
170  W00, rs_W, cs_W,
171  c01, rs_C );
172 
173  // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
175  m_behind,
176  buff_m1,
177  a01, rs_A,
178  c01, rs_C,
179  buff_1,
180  gamma11 );
181 
182  // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
183  // FLA_Mult_add( FLA_ONE, alpha11, omega );
184  // FLA_Inv_scal( omega, gamma11 );
185  bl1_scopyconj( alpha11, &omega );
186  bl1_sadd3( alpha11, &omega, &omega );
187  bl1_sinvscals( &omega, gamma11 );
188 
189  // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
192  m_behind,
193  m_ahead,
194  buff_m1,
195  c01, rs_C,
196  a12t, cs_A,
197  C02, rs_C, cs_C );
198 
199  // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
200  // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
201  bl1_saxpysv( m_ahead,
202  buff_m1,
203  gamma11,
204  a12t, cs_A,
205  buff_1,
206  c12t, cs_C );
207 
210  m_behind,
211  m_ahead,
212  buff_m1,
213  A02, rs_A, cs_A,
214  c01, rs_C,
215  buff_1,
216  c12t, cs_C );
217 
218  /*------------------------------------------------------------*/
219  }
220 
221  return FLA_SUCCESS;
222 }
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
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_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
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_sgemv(trans1_t transa, conj1_t conjx, int m, int n, float *alpha, float *a, int a_rs, int a_cs, float *x, int incx, float *beta, float *y, int incy)
Definition: bl1_gemv.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
Definition: blis_type_defs.h:54
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_sdot2s(conj1_t conj, int n, float *alpha, float *x, int incx, float *y, int incy, float *beta, float *rho)
Definition: bl1_dot2s.c:13
void bl1_sger(conj1_t conjx, conj1_t conjy, int m, int n, float *alpha, float *x, int incx, float *y, int incy, float *a, int a_rs, int a_cs)
Definition: bl1_ger.c:13
int i
Definition: bl1_axmyv2.c:145
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:63

◆ FLA_Lyap_h_opt_var2()

FLA_Error FLA_Lyap_h_opt_var2 ( FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  C 
)

References FLA_Lyap_h_opc_var2(), FLA_Lyap_h_opd_var2(), FLA_Lyap_h_ops_var2(), FLA_Lyap_h_opz_var2(), FLA_Obj_col_stride(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), and FLA_Obj_row_stride().

Referenced by FLA_Lyap_h().

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 
22  FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, A, &W );
23 
24  datatype = FLA_Obj_datatype( A );
25 
26  m_AC = FLA_Obj_length( A );
27 
28  rs_A = FLA_Obj_row_stride( A );
29  cs_A = FLA_Obj_col_stride( A );
30 
31  rs_W = FLA_Obj_row_stride( W );
32  cs_W = FLA_Obj_col_stride( W );
33 
34  rs_C = FLA_Obj_row_stride( C );
35  cs_C = FLA_Obj_col_stride( C );
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 
46  FLA_Lyap_h_ops_var2( m_AC,
47  buff_sgn,
48  buff_A, rs_A, cs_A,
49  buff_W, rs_W, cs_W,
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 
62  FLA_Lyap_h_opd_var2( m_AC,
63  buff_sgn,
64  buff_A, rs_A, cs_A,
65  buff_W, rs_W, cs_W,
66  buff_C, rs_C, cs_C );
67 
68  break;
69  }
70 
71  case FLA_COMPLEX:
72  {
73  scomplex* buff_A = FLA_COMPLEX_PTR( A );
74  scomplex* buff_W = FLA_COMPLEX_PTR( W );
75  scomplex* buff_C = FLA_COMPLEX_PTR( C );
76  scomplex* buff_sgn = FLA_COMPLEX_PTR( isgn );
77 
78  FLA_Lyap_h_opc_var2( m_AC,
79  buff_sgn,
80  buff_A, rs_A, cs_A,
81  buff_W, rs_W, cs_W,
82  buff_C, rs_C, cs_C );
83 
84  break;
85  }
86 
87  case FLA_DOUBLE_COMPLEX:
88  {
89  dcomplex* buff_A = FLA_DOUBLE_COMPLEX_PTR( A );
90  dcomplex* buff_W = FLA_DOUBLE_COMPLEX_PTR( W );
91  dcomplex* buff_C = FLA_DOUBLE_COMPLEX_PTR( C );
92  dcomplex* buff_sgn = FLA_DOUBLE_COMPLEX_PTR( isgn );
93 
94  FLA_Lyap_h_opz_var2( m_AC,
95  buff_sgn,
96  buff_A, rs_A, cs_A,
97  buff_W, rs_W, cs_W,
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_h_opc_var2(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_h_opt_var2.c:341
FLA_Error FLA_Obj_free(FLA_Obj *obj)
Definition: FLA_Obj.c:588
dim_t FLA_Obj_row_stride(FLA_Obj obj)
Definition: FLA_Query.c:167
FLA_Error FLA_Lyap_h_opz_var2(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_h_opt_var2.c:456
FLA_Error FLA_Lyap_h_opd_var2(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_h_opt_var2.c:226
FLA_Datatype FLA_Obj_datatype(FLA_Obj obj)
Definition: FLA_Query.c:13
Definition: FLA_type_defs.h:158
FLA_Error FLA_Obj_create_conf_to(FLA_Trans trans, FLA_Obj old, FLA_Obj *obj)
Definition: FLA_Obj.c:286
Definition: blis_type_defs.h:132
FLA_Error FLA_Lyap_h_ops_var2(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_h_opt_var2.c:111
int FLA_Datatype
Definition: FLA_type_defs.h:49
dim_t FLA_Obj_col_stride(FLA_Obj obj)
Definition: FLA_Query.c:174
dim_t FLA_Obj_length(FLA_Obj obj)
Definition: FLA_Query.c:116
Definition: blis_type_defs.h:137

◆ FLA_Lyap_h_opz_var2()

FLA_Error FLA_Lyap_h_opz_var2 ( 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 
)

References bl1_zaxpysv(), bl1_zcopymrt(), bl1_zdot2s(), bl1_zgemv(), bl1_zger(), bl1_zscalm(), bl1_zshiftdiag(), bl1_ztrsv(), BLIS1_CONJ_TRANSPOSE, BLIS1_CONJUGATE, BLIS1_NO_CONJUGATE, BLIS1_NO_TRANSPOSE, BLIS1_NONUNIT_DIAG, BLIS1_TRANSPOSE, BLIS1_UPPER_TRIANGULAR, FLA_MINUS_ONE, FLA_ONE, and i.

Referenced by FLA_Lyap_h_opt_var2().

461 {
462  dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
463  dcomplex* buff_m1 = FLA_DOUBLE_COMPLEX_PTR( FLA_MINUS_ONE );
464  int i;
465 
467  m_AC,
468  m_AC,
469  buff_sgn,
470  buff_C, rs_C, cs_C );
471 
472  for ( i = 0; i < m_AC; ++i )
473  {
474  dcomplex* A00 = buff_A + (0 )*cs_A + (0 )*rs_A;
475  dcomplex* a01 = buff_A + (i )*cs_A + (0 )*rs_A;
476  dcomplex* alpha11 = buff_A + (i )*cs_A + (i )*rs_A;
477  dcomplex* A02 = buff_A + (i+1)*cs_A + (0 )*rs_A;
478  dcomplex* a12t = buff_A + (i+1)*cs_A + (i )*rs_A;
479 
480  dcomplex* c01 = buff_C + (i )*cs_C + (0 )*rs_C;
481  dcomplex* gamma11 = buff_C + (i )*cs_C + (i )*rs_C;
482  dcomplex* C02 = buff_C + (i+1)*cs_C + (0 )*rs_C;
483  dcomplex* c12t = buff_C + (i+1)*cs_C + (i )*rs_C;
484 
485  dcomplex* W00 = buff_W + (0 )*cs_W + (0 )*rs_W;
486 
487  dcomplex omega;
488 
489  int m_behind = i;
490  int m_ahead = m_AC - i - 1;
491 
492  /*------------------------------------------------------------*/
493 
494  // FLA_Copyrt( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, A00, W00 );
495  // FLA_Shift_diag( FLA_CONJUGATE, alpha11, W00 );
496  // FLA_Trsv( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG, W00, c01 );
499  m_behind,
500  m_behind,
501  A00, rs_A, cs_A,
502  W00, rs_W, cs_W );
503 
505  0,
506  m_behind,
507  m_behind,
508  alpha11,
509  W00, rs_W, cs_W );
510 
514  m_behind,
515  W00, rs_W, cs_W,
516  c01, rs_C );
517 
518  // FLA_Dot2cs( FLA_CONJUGATE, FLA_MINUS_ONE, a01, c01, FLA_ONE, gamma11 );
520  m_behind,
521  buff_m1,
522  a01, rs_A,
523  c01, rs_C,
524  buff_1,
525  gamma11 );
526 
527  // FLA_Copyt( FLA_CONJ_NO_TRANSPOSE, alpha11, omega );
528  // FLA_Mult_add( FLA_ONE, alpha11, omega );
529  // FLA_Inv_scal( omega, gamma11 );
530  bl1_zcopyconj( alpha11, &omega );
531  bl1_zadd3( alpha11, &omega, &omega );
532  bl1_zinvscals( &omega, gamma11 );
533 
534  // FLA_Ger( FLA_MINUS_ONE, c01, a12t, C02 );
537  m_behind,
538  m_ahead,
539  buff_m1,
540  c01, rs_C,
541  a12t, cs_A,
542  C02, rs_C, cs_C );
543 
544  // FLA_Axpys( FLA_MINUS_ONE, gamma11, a12t, FLA_ONE, c12t );
545  // FLA_Gemvc( FLA_TRANSPOSE, FLA_CONJUGATE, FLA_MINUS_ONE, A02, c01, FLA_ONE, c12t );
546  bl1_zaxpysv( m_ahead,
547  buff_m1,
548  gamma11,
549  a12t, cs_A,
550  buff_1,
551  c12t, cs_C );
552 
555  m_behind,
556  m_ahead,
557  buff_m1,
558  A02, rs_A, cs_A,
559  c01, rs_C,
560  buff_1,
561  c12t, cs_C );
562 
563  /*------------------------------------------------------------*/
564  }
565 
566  return FLA_SUCCESS;
567 }
void bl1_zger(conj1_t conjx, conj1_t conjy, int m, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *a, int a_rs, int a_cs)
Definition: bl1_ger.c:194
FLA_Obj FLA_MINUS_ONE
Definition: FLA_Init.c:22
Definition: blis_type_defs.h:57
Definition: blis_type_defs.h:81
void bl1_zdot2s(conj1_t conj, int n, dcomplex *alpha, dcomplex *x, int incx, dcomplex *y, int incy, dcomplex *beta, dcomplex *rho)
Definition: bl1_dot2s.c:70
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
Definition: blis_type_defs.h:55
Definition: blis_type_defs.h:82
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
FLA_Obj FLA_ONE
Definition: FLA_Init.c:18
void bl1_zaxpysv(int n, dcomplex *alpha0, dcomplex *alpha1, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition: bl1_axpysv.c:71
Definition: blis_type_defs.h:54
void bl1_zgemv(trans1_t transa, conj1_t conjx, int m, int n, dcomplex *alpha, dcomplex *a, int a_rs, int a_cs, dcomplex *x, int incx, dcomplex *beta, dcomplex *y, int incy)
Definition: bl1_gemv.c:255
int i
Definition: bl1_axmyv2.c:145
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
Definition: blis_type_defs.h:74
Definition: blis_type_defs.h:63
Definition: blis_type_defs.h:137
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