libflame  revision_anchor
Functions | Variables
FLA_Trinv_internal.c File Reference

(r)

Functions

FLA_Error FLA_Trinv_internal (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
 

Variables

fla_trinv_tflash_trinv_cntl
 
fla_trinv_tfla_trinv_cntl_leaf
 

Function Documentation

◆ FLA_Trinv_internal()

FLA_Error FLA_Trinv_internal ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A,
fla_trinv_t cntl 
)
17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
21  FLA_Trinv_internal_check( uplo, diag, A, 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_Trinv_internal( uplo,
29  diag,
30  *FLASH_OBJ_PTR_AT( A ),
32  }
33  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
34  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
36  {
37  // Enqueue
38  ENQUEUE_FLASH_Trinv( uplo, diag, A, cntl );
39  }
40  else
41  {
42  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
43  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
45  {
46  // Execute leaf
47  cntl = fla_trinv_cntl_leaf;
48  }
49 
50  // Parameter combinations
51  if ( uplo == FLA_LOWER_TRIANGULAR )
52  {
53  if ( diag == FLA_NONUNIT_DIAG )
54  {
55  r_val = FLA_Trinv_ln( A, cntl );
56  }
57  else if ( diag == FLA_UNIT_DIAG )
58  {
59  r_val = FLA_Trinv_lu( A, cntl );
60  }
61  }
62  else if ( uplo == FLA_UPPER_TRIANGULAR )
63  {
64  if ( diag == FLA_NONUNIT_DIAG )
65  {
66  r_val = FLA_Trinv_un( A, cntl );
67  }
68  else if ( diag == FLA_UNIT_DIAG )
69  {
70  r_val = FLA_Trinv_uu( A, cntl );
71  }
72  }
73  }
74 
75  return r_val;
76 }
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Error FLA_Trinv_ln(FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_ln.c:13
FLA_Error FLA_Trinv_uu(FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_uu.c:13
FLA_Error FLA_Trinv_un(FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_un.c:13
FLA_Error FLA_Trinv_lu(FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_lu.c:13
fla_trinv_t * flash_trinv_cntl
Definition: FLASH_Trinv_cntl_init.c:17
fla_trinv_t * fla_trinv_cntl_leaf
Definition: FLA_Trinv_cntl_init.c:17
FLA_Error FLA_Trinv_internal(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal.c:16
FLA_Error FLA_Trinv_internal_check(FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)
Definition: FLA_Trinv_internal_check.c:13
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51
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_elemtype(), fla_trinv_cntl_leaf, FLA_Trinv_internal(), FLA_Trinv_internal_check(), FLA_Trinv_ln(), FLA_Trinv_lu(), FLA_Trinv_un(), FLA_Trinv_uu(), FLASH_Queue_get_enabled(), and flash_trinv_cntl.

Referenced by FLA_SPDinv_internal(), FLA_Trinv(), FLA_Trinv_internal(), FLA_Trinv_ln_blk_var1(), FLA_Trinv_ln_blk_var2(), FLA_Trinv_ln_blk_var3(), FLA_Trinv_ln_blk_var4(), FLA_Trinv_ln_task(), FLA_Trinv_lu_blk_var1(), FLA_Trinv_lu_blk_var2(), FLA_Trinv_lu_blk_var3(), FLA_Trinv_lu_blk_var4(), FLA_Trinv_lu_task(), FLA_Trinv_task(), FLA_Trinv_un_blk_var1(), FLA_Trinv_un_blk_var2(), FLA_Trinv_un_blk_var3(), FLA_Trinv_un_blk_var4(), FLA_Trinv_un_task(), FLA_Trinv_uu_blk_var1(), FLA_Trinv_uu_blk_var2(), FLA_Trinv_uu_blk_var3(), FLA_Trinv_uu_blk_var4(), FLA_Trinv_uu_task(), and FLASH_Trinv().

Variable Documentation

◆ fla_trinv_cntl_leaf

fla_trinv_t* fla_trinv_cntl_leaf
extern

◆ flash_trinv_cntl

fla_trinv_t* flash_trinv_cntl
extern

Referenced by FLA_Trinv_internal().