Functions | |
FLA_Error | FLA_Apply_Q_UT_internal (FLA_Side side, FLA_Trans trans, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl) |
Variables | |
fla_apqut_t * | flash_apqut_cntl |
fla_apqut_t * | flash_apqut_cntl_leaf |
fla_apqut_t * | fla_apqut_cntl_leaf |
FLA_Error FLA_Apply_Q_UT_internal | ( | FLA_Side | side, | |
FLA_Trans | trans, | |||
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(), FLA_Apply_Q_UT_internal_check(), FLA_Apply_Q_UT_lhc(), FLA_Check_error_level(), FLA_Obj_elemtype(), and FLASH_Queue_get_enabled().
Referenced by FLA_Apply_Q_UT(), FLA_Apply_Q_UT_inc_lhc_blk_var1(), FLA_Apply_Q_UT_internal(), FLA_Apply_Q_UT_lhc_blk_var2(), FLA_Apply_Q_UT_lhc_task(), FLA_Apply_Q_UT_task(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), and FLASH_Apply_Q_UT().
00040 { 00041 FLA_Error r_val = FLA_SUCCESS; 00042 00043 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00044 FLA_Apply_Q_UT_internal_check( side, trans, storev, A, T, W, B, cntl ); 00045 00046 if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00047 FLA_Obj_elemtype( A ) == FLA_MATRIX && 00048 FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM ) 00049 { 00050 // Recurse 00051 r_val = FLA_Apply_Q_UT_internal( side, 00052 trans, 00053 storev, 00054 *FLASH_OBJ_PTR_AT( A ), 00055 *FLASH_OBJ_PTR_AT( T ), 00056 *FLASH_OBJ_PTR_AT( W ), 00057 *FLASH_OBJ_PTR_AT( B ), 00058 flash_apqut_cntl_leaf ); 00059 } 00060 else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00061 FLA_Obj_elemtype( A ) == FLA_SCALAR && 00062 FLASH_Queue_get_enabled( ) ) 00063 { 00064 // Enqueue 00065 ENQUEUE_FLASH_Apply_Q_UT( side, trans, storev, A, T, W, B, cntl ); 00066 } 00067 else 00068 { 00069 if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00070 FLA_Obj_elemtype( A ) == FLA_SCALAR && 00071 !FLASH_Queue_get_enabled( ) ) 00072 { 00073 // Execute leaf. 00074 // NOTE: This may be redundant since we execute _internal() with 00075 // fla_apqut_cntl_leaf (in lieu of an _external() function) in 00076 // the helper function below. 00077 cntl = fla_apqut_cntl_leaf; 00078 } 00079 00080 if ( side == FLA_LEFT ) 00081 { 00082 if ( trans == FLA_NO_TRANSPOSE ) 00083 { 00084 if ( storev == FLA_COLUMNWISE ) 00085 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00086 else if ( storev == FLA_ROWWISE ) 00087 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00088 } 00089 else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE ) 00090 { 00091 if ( storev == FLA_COLUMNWISE ) 00092 r_val = FLA_Apply_Q_UT_lhc( A, T, W, B, cntl ); 00093 else if ( storev == FLA_ROWWISE ) 00094 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00095 } 00096 } 00097 else if ( side == FLA_RIGHT ) 00098 { 00099 if ( trans == FLA_NO_TRANSPOSE ) 00100 { 00101 if ( storev == FLA_COLUMNWISE ) 00102 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00103 else if ( storev == FLA_ROWWISE ) 00104 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00105 } 00106 else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE ) 00107 { 00108 if ( storev == FLA_COLUMNWISE ) 00109 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00110 else if ( storev == FLA_ROWWISE ) 00111 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00112 } 00113 } 00114 } 00115 00116 return r_val; 00117 }