libflame  revision_anchor
Functions
FLA_Apply_Q2_UT.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLASH_Apply_Q2_UT (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E)
 
FLA_Error FLA_Apply_Q2_UT_internal (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 
FLA_Error FLA_Apply_Q2_UT_lhfc (FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 
FLA_Error FLA_Apply_Q2_UT_lnfc (FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
 

Function Documentation

◆ FLA_Apply_Q2_UT_internal()

FLA_Error FLA_Apply_Q2_UT_internal ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)
20 {
21  FLA_Error r_val = FLA_SUCCESS;
22 
23  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
24  FLA_Apply_Q2_UT_internal_check( side, trans, direct, storev, D, T, W, C, E, cntl );
25 
26  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
27  FLA_Obj_elemtype( D ) == FLA_MATRIX &&
28  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
29  {
30  // Recurse
31  r_val = FLA_Apply_Q2_UT_internal( side,
32  trans,
33  direct,
34  storev,
35  *FLASH_OBJ_PTR_AT( D ),
36  *FLASH_OBJ_PTR_AT( T ),
37  *FLASH_OBJ_PTR_AT( W ),
38  *FLASH_OBJ_PTR_AT( C ),
39  *FLASH_OBJ_PTR_AT( E ),
41  }
42  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
43  FLA_Obj_elemtype( D ) == FLA_SCALAR &&
45  {
46  // Enqueue
47  ENQUEUE_FLASH_Apply_Q2_UT( side, trans, direct, storev, D, T, W, C, E, cntl );
48  }
49  else
50  {
51  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
52  FLA_Obj_elemtype( D ) == FLA_SCALAR &&
54  {
55  // Execute leaf.
56  cntl = fla_apq2ut_cntl_leaf;
57  }
58 
59  if ( side == FLA_LEFT )
60  {
61  if ( trans == FLA_NO_TRANSPOSE )
62  {
63  if ( direct == FLA_FORWARD )
64  {
65  if ( storev == FLA_COLUMNWISE )
66  r_val = FLA_Apply_Q2_UT_lnfc( D, T, W, C, E, cntl );
67  else if ( storev == FLA_ROWWISE )
68  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
69  }
70  else if ( direct == FLA_BACKWARD )
71  {
72  if ( storev == FLA_COLUMNWISE )
73  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
74  else if ( storev == FLA_ROWWISE )
75  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
76  }
77  }
78  else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE )
79  {
80  if ( direct == FLA_FORWARD )
81  {
82  if ( storev == FLA_COLUMNWISE )
83  r_val = FLA_Apply_Q2_UT_lhfc( D, T, W, C, E, cntl );
84  else if ( storev == FLA_ROWWISE )
85  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
86  }
87  else if ( direct == FLA_BACKWARD )
88  {
89  if ( storev == FLA_COLUMNWISE )
90  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
91  else if ( storev == FLA_ROWWISE )
92  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
93  }
94  }
95  }
96  else if ( side == FLA_RIGHT )
97  {
98  if ( trans == FLA_NO_TRANSPOSE )
99  {
100  if ( direct == FLA_FORWARD )
101  {
102  if ( storev == FLA_COLUMNWISE )
103  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
104  else if ( storev == FLA_ROWWISE )
105  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
106  }
107  else if ( direct == FLA_BACKWARD )
108  {
109  if ( storev == FLA_COLUMNWISE )
110  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
111  else if ( storev == FLA_ROWWISE )
112  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
113  }
114  }
115  else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE )
116  {
117  if ( direct == FLA_FORWARD )
118  {
119  if ( storev == FLA_COLUMNWISE )
120  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
121  else if ( storev == FLA_ROWWISE )
122  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
123  }
124  else if ( direct == FLA_BACKWARD )
125  {
126  if ( storev == FLA_COLUMNWISE )
127  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
128  else if ( storev == FLA_ROWWISE )
129  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
130  }
131  }
132  }
133  }
134 
135  return r_val;
136 }
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Error FLA_Apply_Q2_UT_lnfc(FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lnfc.c:15
FLA_Error FLA_Apply_Q2_UT_lhfc(FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lhfc.c:15
FLA_Error FLA_Apply_Q2_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_internal.c:17
fla_apq2ut_t * fla_apq2ut_cntl_leaf
Definition: FLA_Apply_Q2_UT_cntl_init.c:18
fla_apq2ut_t * flash_apq2ut_cntl_leaf
Definition: FLASH_Apply_Q2_UT_cntl_init.c:13
FLA_Error FLA_Apply_Q2_UT_internal_check(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_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_Apply_Q2_UT_internal(), FLA_Apply_Q2_UT_internal_check(), FLA_Apply_Q2_UT_lhfc(), FLA_Apply_Q2_UT_lnfc(), fla_apq2ut_cntl_leaf, FLA_Check_error_level(), FLA_Obj_elemtype(), flash_apq2ut_cntl_leaf, and FLASH_Queue_get_enabled().

Referenced by FLA_Apply_Q2_UT_internal(), FLA_Apply_Q2_UT_lhfc_blk_var2(), FLA_Apply_Q2_UT_lhfc_blk_var3(), FLA_Apply_Q2_UT_lhfc_task(), FLA_Apply_Q2_UT_lnfc_blk_var2(), FLA_Apply_Q2_UT_lnfc_blk_var3(), FLA_Apply_Q2_UT_task(), FLA_Apply_Q_UT_inc_lhfc_blk_var1(), FLA_Apply_Q_UT_inc_lnfc_blk_var1(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), and FLASH_Apply_Q2_UT().

◆ FLA_Apply_Q2_UT_lhfc()

FLA_Error FLA_Apply_Q2_UT_lhfc ( FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)
17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
21  {
22  r_val = FLA_Apply_Q2_UT_lhfc_blk_var1( D, T, W, C, E, cntl );
23  }
24  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
25  {
26  r_val = FLA_Apply_Q2_UT_lhfc_blk_var2( D, T, W, C, E, cntl );
27  }
28  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT3 )
29  {
30  r_val = FLA_Apply_Q2_UT_lhfc_blk_var3( D, T, W, C, E, cntl );
31  }
32  else
33  {
34  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
35  }
36 
37  return r_val;
38 }
FLA_Error FLA_Apply_Q2_UT_lhfc_blk_var1(FLA_Obj D, FLA_Obj T, FLA_Obj W1, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lhfc_blk_var1.c:13
FLA_Error FLA_Apply_Q2_UT_lhfc_blk_var2(FLA_Obj D, FLA_Obj T, FLA_Obj W1, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lhfc_blk_var2.c:13
FLA_Error FLA_Apply_Q2_UT_lhfc_blk_var3(FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lhfc_blk_var3.c:13

References FLA_Apply_Q2_UT_lhfc_blk_var1(), FLA_Apply_Q2_UT_lhfc_blk_var2(), and FLA_Apply_Q2_UT_lhfc_blk_var3().

Referenced by FLA_Apply_Q2_UT_internal().

◆ FLA_Apply_Q2_UT_lnfc()

FLA_Error FLA_Apply_Q2_UT_lnfc ( FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E,
fla_apq2ut_t cntl 
)
17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
21  {
22  r_val = FLA_Apply_Q2_UT_lnfc_blk_var1( D, T, W, C, E, cntl );
23  }
24  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
25  {
26  r_val = FLA_Apply_Q2_UT_lnfc_blk_var2( D, T, W, C, E, cntl );
27  }
28  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT3 )
29  {
30  r_val = FLA_Apply_Q2_UT_lnfc_blk_var3( D, T, W, C, E, cntl );
31  }
32  else
33  {
34  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
35  }
36 
37  return r_val;
38 }
FLA_Error FLA_Apply_Q2_UT_lnfc_blk_var2(FLA_Obj D, FLA_Obj T, FLA_Obj W1, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lnfc_blk_var2.c:13
FLA_Error FLA_Apply_Q2_UT_lnfc_blk_var3(FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lnfc_blk_var3.c:13
FLA_Error FLA_Apply_Q2_UT_lnfc_blk_var1(FLA_Obj D, FLA_Obj T, FLA_Obj W1, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_lnfc_blk_var1.c:13

References FLA_Apply_Q2_UT_lnfc_blk_var1(), FLA_Apply_Q2_UT_lnfc_blk_var2(), and FLA_Apply_Q2_UT_lnfc_blk_var3().

Referenced by FLA_Apply_Q2_UT_internal().

◆ FLASH_Apply_Q2_UT()

FLA_Error FLASH_Apply_Q2_UT ( FLA_Side  side,
FLA_Trans  trans,
FLA_Direct  direct,
FLA_Store  storev,
FLA_Obj  D,
FLA_Obj  T,
FLA_Obj  W,
FLA_Obj  C,
FLA_Obj  E 
)
20 {
21  FLA_Error r_val;
22 
23  // Check parameters.
24  if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
25  FLA_Apply_Q2_UT_check( side, trans, direct, storev, D, T, W, C, E );
26 
27  // Begin a parallel region.
29 
30  // Invoke FLA_Apply_Q2_UT_internal() with the standard control tree.
31  r_val = FLA_Apply_Q2_UT_internal( side, trans, direct, storev, D, T, W, C, E, flash_apq2ut_cntl );
32 
33  // End the parallel region.
35 
36  return r_val;
37 }
fla_apq2ut_t * flash_apq2ut_cntl
Definition: FLASH_Apply_Q2_UT_cntl_init.c:15
void FLASH_Queue_begin(void)
Definition: FLASH_Queue.c:59
void FLASH_Queue_end(void)
Definition: FLASH_Queue.c:81
FLA_Error FLA_Apply_Q2_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apq2ut_t *cntl)
Definition: FLA_Apply_Q2_UT_internal.c:17
FLA_Error FLA_Apply_Q2_UT_check(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E)
Definition: FLA_Apply_Q2_UT_check.c:13