libflame  revision_anchor
Functions | Variables
FLA_Sylv_internal.c File Reference

(r)

Functions

FLA_Error FLA_Sylv_internal (FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
 

Variables

fla_sylv_tflash_sylv_cntl
 
fla_sylv_tfla_sylv_cntl_leaf
 

Function Documentation

◆ FLA_Sylv_internal()

FLA_Error FLA_Sylv_internal ( FLA_Trans  transa,
FLA_Trans  transb,
FLA_Obj  isgn,
FLA_Obj  A,
FLA_Obj  B,
FLA_Obj  C,
FLA_Obj  scale,
fla_sylv_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), fla_sylv_cntl_leaf, FLA_Sylv_hh(), FLA_Sylv_hn(), FLA_Sylv_internal_check(), FLA_Sylv_nh(), FLA_Sylv_nn(), and FLASH_Queue_get_enabled().

Referenced by FLA_Lyap_h_blk_var1(), FLA_Lyap_h_blk_var2(), FLA_Lyap_h_blk_var3(), FLA_Lyap_h_blk_var4(), FLA_Lyap_n_blk_var1(), FLA_Lyap_n_blk_var2(), FLA_Lyap_n_blk_var3(), FLA_Lyap_n_blk_var4(), FLA_Sylv(), FLA_Sylv_hh_blk_var1(), FLA_Sylv_hh_blk_var10(), FLA_Sylv_hh_blk_var11(), FLA_Sylv_hh_blk_var12(), FLA_Sylv_hh_blk_var13(), FLA_Sylv_hh_blk_var14(), FLA_Sylv_hh_blk_var15(), FLA_Sylv_hh_blk_var16(), FLA_Sylv_hh_blk_var17(), FLA_Sylv_hh_blk_var18(), FLA_Sylv_hh_blk_var2(), FLA_Sylv_hh_blk_var3(), FLA_Sylv_hh_blk_var4(), FLA_Sylv_hh_blk_var5(), FLA_Sylv_hh_blk_var6(), FLA_Sylv_hh_blk_var7(), FLA_Sylv_hh_blk_var8(), FLA_Sylv_hh_blk_var9(), FLA_Sylv_hh_task(), FLA_Sylv_hn_blk_var1(), FLA_Sylv_hn_blk_var10(), FLA_Sylv_hn_blk_var11(), FLA_Sylv_hn_blk_var12(), FLA_Sylv_hn_blk_var13(), FLA_Sylv_hn_blk_var14(), FLA_Sylv_hn_blk_var15(), FLA_Sylv_hn_blk_var16(), FLA_Sylv_hn_blk_var17(), FLA_Sylv_hn_blk_var18(), FLA_Sylv_hn_blk_var2(), FLA_Sylv_hn_blk_var3(), FLA_Sylv_hn_blk_var4(), FLA_Sylv_hn_blk_var5(), FLA_Sylv_hn_blk_var6(), FLA_Sylv_hn_blk_var7(), FLA_Sylv_hn_blk_var8(), FLA_Sylv_hn_blk_var9(), FLA_Sylv_hn_task(), FLA_Sylv_nh_blk_var1(), FLA_Sylv_nh_blk_var10(), FLA_Sylv_nh_blk_var11(), FLA_Sylv_nh_blk_var12(), FLA_Sylv_nh_blk_var13(), FLA_Sylv_nh_blk_var14(), FLA_Sylv_nh_blk_var15(), FLA_Sylv_nh_blk_var16(), FLA_Sylv_nh_blk_var17(), FLA_Sylv_nh_blk_var18(), FLA_Sylv_nh_blk_var2(), FLA_Sylv_nh_blk_var3(), FLA_Sylv_nh_blk_var4(), FLA_Sylv_nh_blk_var5(), FLA_Sylv_nh_blk_var6(), FLA_Sylv_nh_blk_var7(), FLA_Sylv_nh_blk_var8(), FLA_Sylv_nh_blk_var9(), FLA_Sylv_nh_task(), FLA_Sylv_nn_blk_var1(), FLA_Sylv_nn_blk_var10(), FLA_Sylv_nn_blk_var11(), FLA_Sylv_nn_blk_var12(), FLA_Sylv_nn_blk_var13(), FLA_Sylv_nn_blk_var14(), FLA_Sylv_nn_blk_var15(), FLA_Sylv_nn_blk_var16(), FLA_Sylv_nn_blk_var17(), FLA_Sylv_nn_blk_var18(), FLA_Sylv_nn_blk_var2(), FLA_Sylv_nn_blk_var3(), FLA_Sylv_nn_blk_var4(), FLA_Sylv_nn_blk_var5(), FLA_Sylv_nn_blk_var6(), FLA_Sylv_nn_blk_var7(), FLA_Sylv_nn_blk_var8(), FLA_Sylv_nn_blk_var9(), FLA_Sylv_nn_task(), FLA_Sylv_task(), and FLASH_Sylv().

17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
21  FLA_Sylv_internal_check( transa, transb, isgn, A, B, C, scale, cntl );
22 
23  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
24  FLA_Obj_elemtype( A ) == FLA_MATRIX &&
25  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
26  {
27  // Recurse
28  r_val = FLA_Sylv_internal( transa,
29  transb,
30  isgn,
31  *FLASH_OBJ_PTR_AT( A ),
32  *FLASH_OBJ_PTR_AT( B ),
33  *FLASH_OBJ_PTR_AT( C ),
34  scale,
36  }
37  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
38  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
40  {
41  // Enqueue
42  ENQUEUE_FLASH_Sylv( transa, transb, isgn, A, B, C, scale, cntl );
43  }
44  else
45  {
46  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
47  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
49  {
50  // Execute leaf
51  cntl = fla_sylv_cntl_leaf;
52  }
53 
54  // Parameter combinations
55  if ( transa == FLA_NO_TRANSPOSE )
56  {
57  if ( transb == FLA_NO_TRANSPOSE )
58  r_val = FLA_Sylv_nn( isgn, A, B, C, scale, cntl );
59  else if ( transb == FLA_TRANSPOSE || transb == FLA_CONJ_TRANSPOSE )
60  r_val = FLA_Sylv_nh( isgn, A, B, C, scale, cntl );
61  }
62  else if ( transa == FLA_TRANSPOSE || transa == FLA_CONJ_TRANSPOSE )
63  {
64  if ( transb == FLA_NO_TRANSPOSE )
65  r_val = FLA_Sylv_hn( isgn, A, B, C, scale, cntl );
66  else if ( transb == FLA_TRANSPOSE || transb == FLA_CONJ_TRANSPOSE )
67  r_val = FLA_Sylv_hh( isgn, A, B, C, scale, cntl );
68  }
69  }
70 
71  return r_val;
72 }
FLA_Error FLA_Sylv_hh(FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_hh.c:13
FLA_Error FLA_Sylv_nh(FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_nh.c:13
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
fla_sylv_t * flash_sylv_cntl
Definition: FLASH_Sylv_cntl_init.c:18
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_Sylv_internal_check(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_internal_check.c:13
fla_sylv_t * fla_sylv_cntl_leaf
Definition: FLA_Sylv_cntl_init.c:15
FLA_Error FLA_Sylv_nn(FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_nn.c:13
FLA_Error FLA_Sylv_hn(FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_hn.c:13
FLA_Error FLA_Sylv_internal(FLA_Trans transa, FLA_Trans transb, FLA_Obj isgn, FLA_Obj A, FLA_Obj B, FLA_Obj C, FLA_Obj scale, fla_sylv_t *cntl)
Definition: FLA_Sylv_internal.c:16
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51

Variable Documentation

◆ fla_sylv_cntl_leaf

fla_sylv_t* fla_sylv_cntl_leaf

Referenced by FLA_Sylv_internal().

◆ flash_sylv_cntl

fla_sylv_t* flash_sylv_cntl