libflame  revision_anchor
Functions | Variables
FLA_Apply_Q_UT_internal.c File Reference

(r)

Functions

FLA_Error FLA_Apply_Q_UT_internal (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
 

Variables

fla_apqut_tflash_apqut_cntl
 
fla_apqut_tflash_apqut_cntl_leaf
 
fla_apqut_tfla_apqut_cntl_leaf
 

Function Documentation

◆ FLA_Apply_Q_UT_internal()

FLA_Error FLA_Apply_Q_UT_internal ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  A,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  B,
fla_apqut_t cntl 
)

References FLA_Apply_Q_UT_internal_check(), FLA_Apply_Q_UT_lhbc(), FLA_Apply_Q_UT_lhbr(), FLA_Apply_Q_UT_lhfc(), FLA_Apply_Q_UT_lhfr(), FLA_Apply_Q_UT_lnbc(), FLA_Apply_Q_UT_lnbr(), FLA_Apply_Q_UT_lnfc(), FLA_Apply_Q_UT_lnfr(), FLA_Apply_Q_UT_rhbc(), FLA_Apply_Q_UT_rhbr(), FLA_Apply_Q_UT_rhfc(), FLA_Apply_Q_UT_rhfr(), FLA_Apply_Q_UT_rnbc(), FLA_Apply_Q_UT_rnbr(), FLA_Apply_Q_UT_rnfc(), FLA_Apply_Q_UT_rnfr(), fla_apqut_cntl_leaf, FLA_Check_error_level(), FLA_Obj_elemtype(), and FLASH_Queue_get_enabled().

Referenced by FLA_Apply_Q_UT(), FLA_Apply_Q_UT_inc_lhfc_blk_var1(), FLA_Apply_Q_UT_inc_lnfc_blk_var1(), FLA_Apply_Q_UT_lhbc_blk_var2(), FLA_Apply_Q_UT_lhbc_task(), FLA_Apply_Q_UT_lhbr_blk_var2(), FLA_Apply_Q_UT_lhbr_task(), FLA_Apply_Q_UT_lhfc_blk_var2(), FLA_Apply_Q_UT_lhfc_task(), FLA_Apply_Q_UT_lhfr_blk_var2(), FLA_Apply_Q_UT_lhfr_task(), FLA_Apply_Q_UT_lnbc_blk_var2(), FLA_Apply_Q_UT_lnbc_task(), FLA_Apply_Q_UT_lnbr_blk_var2(), FLA_Apply_Q_UT_lnbr_task(), FLA_Apply_Q_UT_lnfc_blk_var2(), FLA_Apply_Q_UT_lnfc_task(), FLA_Apply_Q_UT_lnfr_blk_var2(), FLA_Apply_Q_UT_lnfr_task(), FLA_Apply_Q_UT_rhbc_blk_var2(), FLA_Apply_Q_UT_rhbc_task(), FLA_Apply_Q_UT_rhbr_blk_var2(), FLA_Apply_Q_UT_rhbr_task(), FLA_Apply_Q_UT_rhfc_blk_var2(), FLA_Apply_Q_UT_rhfc_task(), FLA_Apply_Q_UT_rhfr_blk_var2(), FLA_Apply_Q_UT_rhfr_task(), FLA_Apply_Q_UT_rnbc_blk_var2(), FLA_Apply_Q_UT_rnbc_task(), FLA_Apply_Q_UT_rnbr_blk_var2(), FLA_Apply_Q_UT_rnbr_task(), FLA_Apply_Q_UT_rnfc_blk_var2(), FLA_Apply_Q_UT_rnfc_task(), FLA_Apply_Q_UT_rnfr_blk_var2(), FLA_Apply_Q_UT_rnfr_task(), FLA_Apply_Q_UT_task(), FLA_LQ_UT_blk_var1(), FLA_LQ_UT_blk_var2(), FLA_LQ_UT_blk_var3(), FLA_QR_UT_blk_var1(), FLA_QR_UT_blk_var2(), FLA_QR_UT_blk_var3(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), and FLASH_Apply_Q_UT().

18 {
19  FLA_Error r_val = FLA_SUCCESS;
20 
21  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
22  FLA_Apply_Q_UT_internal_check( side, trans, direct, storev, A, T, W, 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_Apply_Q_UT_internal( side,
30  trans,
31  direct,
32  storev,
33  *FLASH_OBJ_PTR_AT( A ),
34  *FLASH_OBJ_PTR_AT( T ),
35  *FLASH_OBJ_PTR_AT( W ),
36  *FLASH_OBJ_PTR_AT( B ),
38  }
39  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
40  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
42  {
43  // Enqueue
44  ENQUEUE_FLASH_Apply_Q_UT( side, trans, direct, storev, A, T, W, B, cntl );
45  }
46  else
47  {
48  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
49  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
51  {
52  // Execute leaf.
53  cntl = fla_apqut_cntl_leaf;
54  }
55 
56  if ( side == FLA_LEFT )
57  {
58  if ( trans == FLA_NO_TRANSPOSE )
59  {
60  if ( direct == FLA_FORWARD )
61  {
62  if ( storev == FLA_COLUMNWISE )
63  r_val = FLA_Apply_Q_UT_lnfc( A, T, W, B, cntl );
64  else if ( storev == FLA_ROWWISE )
65  r_val = FLA_Apply_Q_UT_lnfr( A, T, W, B, cntl );
66  }
67  else if ( direct == FLA_BACKWARD )
68  {
69  if ( storev == FLA_COLUMNWISE )
70  r_val = FLA_Apply_Q_UT_lnbc( A, T, W, B, cntl );
71  else if ( storev == FLA_ROWWISE )
72  r_val = FLA_Apply_Q_UT_lnbr( A, T, W, B, cntl );
73  }
74  }
75  else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE )
76  {
77  if ( direct == FLA_FORWARD )
78  {
79  if ( storev == FLA_COLUMNWISE )
80  r_val = FLA_Apply_Q_UT_lhfc( A, T, W, B, cntl );
81  else if ( storev == FLA_ROWWISE )
82  r_val = FLA_Apply_Q_UT_lhfr( A, T, W, B, cntl );
83  }
84  else if ( direct == FLA_BACKWARD )
85  {
86  if ( storev == FLA_COLUMNWISE )
87  r_val = FLA_Apply_Q_UT_lhbc( A, T, W, B, cntl );
88  else if ( storev == FLA_ROWWISE )
89  r_val = FLA_Apply_Q_UT_lhbr( A, T, W, B, cntl );
90  }
91  }
92  }
93  else if ( side == FLA_RIGHT )
94  {
95  if ( trans == FLA_NO_TRANSPOSE )
96  {
97  if ( direct == FLA_FORWARD )
98  {
99  if ( storev == FLA_COLUMNWISE )
100  r_val = FLA_Apply_Q_UT_rnfc( A, T, W, B, cntl );
101  else if ( storev == FLA_ROWWISE )
102  r_val = FLA_Apply_Q_UT_rnfr( A, T, W, B, cntl );
103  }
104  else if ( direct == FLA_BACKWARD )
105  {
106  if ( storev == FLA_COLUMNWISE )
107  r_val = FLA_Apply_Q_UT_rnbc( A, T, W, B, cntl );
108  else if ( storev == FLA_ROWWISE )
109  r_val = FLA_Apply_Q_UT_rnbr( A, T, W, B, cntl );
110  }
111  }
112  else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE )
113  {
114  if ( direct == FLA_FORWARD )
115  {
116  if ( storev == FLA_COLUMNWISE )
117  r_val = FLA_Apply_Q_UT_rhfc( A, T, W, B, cntl );
118  else if ( storev == FLA_ROWWISE )
119  r_val = FLA_Apply_Q_UT_rhfr( A, T, W, B, cntl );
120  }
121  else if ( direct == FLA_BACKWARD )
122  {
123  if ( storev == FLA_COLUMNWISE )
124  r_val = FLA_Apply_Q_UT_rhbc( A, T, W, B, cntl );
125  else if ( storev == FLA_ROWWISE )
126  r_val = FLA_Apply_Q_UT_rhbr( A, T, W, B, cntl );
127  }
128  }
129  }
130  }
131 
132  return r_val;
133 }
fla_apqut_t * fla_apqut_cntl_leaf
Definition: FLA_Apply_Q_UT_cntl_init.c:19
FLA_Error FLA_Apply_Q_UT_internal_check(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_internal_check.c:13
fla_apqut_t * flash_apqut_cntl
Definition: FLASH_Apply_Q_UT_cntl_init.c:22
FLA_Error FLA_Apply_Q_UT_rhfr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rhfr.c:15
FLA_Error FLA_Apply_Q_UT_lnbc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lnbc.c:15
FLA_Error FLA_Apply_Q_UT_lhbc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lhbc.c:15
FLA_Error FLA_Apply_Q_UT_lhfc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lhfc.c:15
FLA_Error FLA_Apply_Q_UT_rhbc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rhbc.c:15
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Error FLA_Apply_Q_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_internal.c:17
FLA_Error FLA_Apply_Q_UT_rnbr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rnbr.c:15
FLA_Error FLA_Apply_Q_UT_rnfc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rnfc.c:15
FLA_Error FLA_Apply_Q_UT_rnfr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rnfr.c:15
FLA_Error FLA_Apply_Q_UT_rhfc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rhfc.c:15
FLA_Error FLA_Apply_Q_UT_lhfr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lhfr.c:15
FLA_Error FLA_Apply_Q_UT_rnbc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rnbc.c:15
FLA_Error FLA_Apply_Q_UT_lhbr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lhbr.c:15
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_Apply_Q_UT_lnfc(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lnfc.c:15
FLA_Error FLA_Apply_Q_UT_lnfr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lnfr.c:15
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51
FLA_Error FLA_Apply_Q_UT_rhbr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_rhbr.c:15
FLA_Error FLA_Apply_Q_UT_lnbr(FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition: FLA_Apply_Q_UT_lnbr.c:15

Variable Documentation

◆ fla_apqut_cntl_leaf

fla_apqut_t* fla_apqut_cntl_leaf

Referenced by FLA_Apply_Q_UT_internal().

◆ flash_apqut_cntl

fla_apqut_t* flash_apqut_cntl

◆ flash_apqut_cntl_leaf

fla_apqut_t* flash_apqut_cntl_leaf