FLA_Apply_Q_UT_UD_internal.c File Reference

(r)


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_tflash_apqutud_cntl
fla_apqutud_tflash_apqutud_cntl_leaf
fla_apqutud_tfla_apqutud_cntl_leaf

Function Documentation

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 }


Variable Documentation


Generated on Mon Jul 6 05:45:57 2009 for libflame by  doxygen 1.5.9