Functions | |
FLA_Error | FLA_Apply_Q_UT_UD_internal (FLA_Side side, FLA_Trans trans, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apqutud_t *cntl) |
Variables | |
fla_apqutud_t * | flash_apqutud_cntl |
fla_apqutud_t * | flash_apqutud_cntl_leaf |
fla_apqutud_t * | fla_apqutud_cntl_leaf |
FLA_Error FLA_Apply_Q_UT_UD_internal | ( | FLA_Side | side, | |
FLA_Trans | trans, | |||
FLA_Store | storev, | |||
FLA_Obj | D, | |||
FLA_Obj | T, | |||
FLA_Obj | W, | |||
FLA_Obj | C, | |||
FLA_Obj | E, | |||
fla_apqutud_t * | cntl | |||
) |
References FLA_Apply_Q_UT_UD_internal(), FLA_Apply_Q_UT_UD_internal_check(), FLA_Apply_Q_UT_UD_lhc(), FLA_Check_error_level(), FLA_Obj_elemtype(), and FLASH_Queue_get_enabled().
Referenced by FLA_Apply_Q_UT_inc_lhc_blk_var1(), FLA_Apply_Q_UT_UD_internal(), FLA_Apply_Q_UT_UD_lhc_blk_var2(), FLA_Apply_Q_UT_UD_lhc_blk_var3(), FLA_Apply_Q_UT_UD_lhc_task(), FLA_Apply_Q_UT_UD_task(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), and FLASH_Apply_Q_UT_UD().
00042 { 00043 FLA_Error r_val = FLA_SUCCESS; 00044 00045 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00046 FLA_Apply_Q_UT_UD_internal_check( side, trans, storev, D, T, W, C, E, cntl ); 00047 00048 if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00049 FLA_Obj_elemtype( D ) == FLA_MATRIX && 00050 FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM ) 00051 { 00052 // Recurse 00053 r_val = FLA_Apply_Q_UT_UD_internal( side, 00054 trans, 00055 storev, 00056 *FLASH_OBJ_PTR_AT( D ), 00057 *FLASH_OBJ_PTR_AT( T ), 00058 *FLASH_OBJ_PTR_AT( W ), 00059 *FLASH_OBJ_PTR_AT( C ), 00060 *FLASH_OBJ_PTR_AT( E ), 00061 flash_apqutud_cntl_leaf ); 00062 } 00063 else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00064 FLA_Obj_elemtype( D ) == FLA_SCALAR && 00065 FLASH_Queue_get_enabled( ) ) 00066 { 00067 // Enqueue 00068 ENQUEUE_FLASH_Apply_Q_UT_UD( side, trans, storev, D, T, W, C, E, cntl ); 00069 } 00070 else 00071 { 00072 if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00073 FLA_Obj_elemtype( D ) == FLA_SCALAR && 00074 !FLASH_Queue_get_enabled( ) ) 00075 { 00076 // Execute leaf. 00077 // NOTE: This may be redundant since we execute _internal() with 00078 // fla_apqutud_cntl_leaf (in lieu of an _external() function) in 00079 // the helper function below. 00080 cntl = fla_apqutud_cntl_leaf; 00081 } 00082 00083 if ( side == FLA_LEFT ) 00084 { 00085 if ( trans == FLA_NO_TRANSPOSE ) 00086 { 00087 if ( storev == FLA_COLUMNWISE ) 00088 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00089 else if ( storev == FLA_ROWWISE ) 00090 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00091 } 00092 else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE ) 00093 { 00094 if ( storev == FLA_COLUMNWISE ) 00095 r_val = FLA_Apply_Q_UT_UD_lhc( D, T, W, C, E, cntl ); 00096 else if ( storev == FLA_ROWWISE ) 00097 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00098 } 00099 } 00100 else if ( side == FLA_RIGHT ) 00101 { 00102 if ( trans == FLA_NO_TRANSPOSE ) 00103 { 00104 if ( storev == FLA_COLUMNWISE ) 00105 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00106 else if ( storev == FLA_ROWWISE ) 00107 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00108 } 00109 else if ( trans == FLA_TRANSPOSE || trans == FLA_CONJ_TRANSPOSE ) 00110 { 00111 if ( storev == FLA_COLUMNWISE ) 00112 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00113 else if ( storev == FLA_ROWWISE ) 00114 FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); 00115 } 00116 } 00117 } 00118 00119 return r_val; 00120 }