libflame  revision_anchor
Functions | Variables
FLA_Eig_gest_internal.c File Reference

(r)

Functions

FLA_Error FLA_Eig_gest_internal (FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
 

Variables

fla_eig_gest_tflash_eig_gest_cntl
 
fla_eig_gest_tfla_eig_gest_ix_cntl_leaf
 
fla_eig_gest_tfla_eig_gest_nx_cntl_leaf
 

Function Documentation

◆ FLA_Eig_gest_internal()

FLA_Error FLA_Eig_gest_internal ( FLA_Inv  inv,
FLA_Uplo  uplo,
FLA_Obj  A,
FLA_Obj  Y,
FLA_Obj  B,
fla_eig_gest_t cntl 
)

References FLA_Check_error_level(), FLA_Eig_gest_il(), FLA_Eig_gest_internal_check(), FLA_Eig_gest_iu(), fla_eig_gest_ix_cntl_leaf, FLA_Eig_gest_nl(), FLA_Eig_gest_nu(), fla_eig_gest_nx_cntl_leaf, FLA_Obj_elemtype(), and FLASH_Queue_get_enabled().

Referenced by FLA_Eig_gest(), FLA_Eig_gest_il_blk_var1(), FLA_Eig_gest_il_blk_var2(), FLA_Eig_gest_il_blk_var3(), FLA_Eig_gest_il_blk_var4(), FLA_Eig_gest_il_blk_var5(), FLA_Eig_gest_il_task(), FLA_Eig_gest_iu_blk_var1(), FLA_Eig_gest_iu_blk_var2(), FLA_Eig_gest_iu_blk_var3(), FLA_Eig_gest_iu_blk_var4(), FLA_Eig_gest_iu_blk_var5(), FLA_Eig_gest_iu_task(), FLA_Eig_gest_nl_blk_var1(), FLA_Eig_gest_nl_blk_var2(), FLA_Eig_gest_nl_blk_var4(), FLA_Eig_gest_nl_blk_var5(), FLA_Eig_gest_nl_task(), FLA_Eig_gest_nu_blk_var1(), FLA_Eig_gest_nu_blk_var2(), FLA_Eig_gest_nu_blk_var4(), FLA_Eig_gest_nu_blk_var5(), FLA_Eig_gest_nu_task(), FLA_Eig_gest_task(), and FLASH_Eig_gest().

18 {
19  FLA_Error r_val = FLA_SUCCESS;
20 
21  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
22  FLA_Eig_gest_internal_check( inv, uplo, A, Y, B, cntl );
23 
24  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
25  FLA_Obj_elemtype( A ) == FLA_MATRIX &&
26  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
27  {
28  // Recurse
29  r_val = FLA_Eig_gest_internal( inv,
30  uplo,
31  *FLASH_OBJ_PTR_AT( A ),
32  *FLASH_OBJ_PTR_AT( Y ),
33  *FLASH_OBJ_PTR_AT( B ),
35  }
36  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
37  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
39  {
40  // Enqueue
41  ENQUEUE_FLASH_Eig_gest( inv, uplo, A, Y, B, cntl );
42  }
43  else
44  {
45  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
46  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
48  {
49  // Execute leaf
50  if ( inv == FLA_INVERSE )
52  else
54  }
55 
56  // Parameter combinations
57  if ( inv == FLA_INVERSE )
58  {
59  if ( uplo == FLA_LOWER_TRIANGULAR )
60  {
61  r_val = FLA_Eig_gest_il( A, Y, B, cntl );
62  }
63  else if ( uplo == FLA_UPPER_TRIANGULAR )
64  {
65  r_val = FLA_Eig_gest_iu( A, Y, B, cntl );
66  }
67  }
68  else if ( inv == FLA_NO_INVERSE )
69  {
70  if ( uplo == FLA_LOWER_TRIANGULAR )
71  {
72  r_val = FLA_Eig_gest_nl( A, Y, B, cntl );
73  }
74  else if ( uplo == FLA_UPPER_TRIANGULAR )
75  {
76  r_val = FLA_Eig_gest_nu( A, Y, B, cntl );
77  }
78  }
79  }
80 
81  return r_val;
82 }
FLA_Error FLA_Eig_gest_nl(FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_nl.c:13
fla_eig_gest_t * flash_eig_gest_cntl
Definition: FLASH_Eig_gest_cntl_init.c:21
fla_eig_gest_t * fla_eig_gest_nx_cntl_leaf
Definition: FLA_Eig_gest_cntl_init.c:23
FLA_Error FLA_Eig_gest_internal_check(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_internal_check.c:13
FLA_Error FLA_Eig_gest_nu(FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_nu.c:13
FLA_Error FLA_Eig_gest_il(FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_il.c:13
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_Eig_gest_internal(FLA_Inv inv, FLA_Uplo uplo, FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_internal.c:17
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51
FLA_Error FLA_Eig_gest_iu(FLA_Obj A, FLA_Obj Y, FLA_Obj B, fla_eig_gest_t *cntl)
Definition: FLA_Eig_gest_iu.c:13
fla_eig_gest_t * fla_eig_gest_ix_cntl_leaf
Definition: FLA_Eig_gest_cntl_init.c:22

Variable Documentation

◆ fla_eig_gest_ix_cntl_leaf

fla_eig_gest_t* fla_eig_gest_ix_cntl_leaf

Referenced by FLA_Eig_gest_internal().

◆ fla_eig_gest_nx_cntl_leaf

fla_eig_gest_t* fla_eig_gest_nx_cntl_leaf

Referenced by FLA_Eig_gest_internal().

◆ flash_eig_gest_cntl

fla_eig_gest_t* flash_eig_gest_cntl