FLA_QR_UT_UD_internal.c File Reference

(r)


Functions

FLA_Error FLA_QR_UT_UD_internal (FLA_Obj B, FLA_Obj D, FLA_Obj T, fla_qrutud_t *cntl)

Variables

fla_qrutud_tfla_qrutud_cntl_leaf
fla_qrutud_tflash_qrutud_cntl
fla_qrutud_tflash_qrutud_cntl_leaf

Function Documentation

FLA_Error FLA_QR_UT_UD_internal ( FLA_Obj  B,
FLA_Obj  D,
FLA_Obj  T,
fla_qrutud_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_QR_UT_UD_Accum_T_opt_var1(), FLA_QR_UT_UD_Accum_T_unb_var1(), FLA_QR_UT_UD_blk_var1(), FLA_QR_UT_UD_blk_var2(), FLA_QR_UT_UD_internal(), FLA_QR_UT_UD_internal_check(), FLA_QR_UT_UD_task(), and FLASH_Queue_get_enabled().

Referenced by FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_inc_blk_var2(), FLA_QR_UT_UD_blk_var1(), FLA_QR_UT_UD_blk_var2(), FLA_QR_UT_UD_internal(), FLA_QR_UT_UD_task(), and FLASH_QR_UT_UD().

00041 {
00042     FLA_Error r_val = FLA_SUCCESS;
00043     
00044     if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00045         FLA_QR_UT_UD_internal_check( B, D, T, cntl );
00046 
00047     if      ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00048               FLA_Obj_elemtype( B ) == FLA_MATRIX &&
00049               FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00050     {
00051         // Recurse
00052         r_val = FLA_QR_UT_UD_internal( *FLASH_OBJ_PTR_AT( B ),
00053                                        *FLASH_OBJ_PTR_AT( D ),
00054                                        *FLASH_OBJ_PTR_AT( T ),
00055                                        flash_qrutud_cntl );
00056     }
00057     else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00058               FLA_Obj_elemtype( B ) == FLA_SCALAR &&
00059               FLASH_Queue_get_enabled( ) )
00060     {
00061         // Enqueue
00062         ENQUEUE_FLASH_QR_UT_UD( B, D, T, cntl );
00063     }
00064     else
00065     {
00066         if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00067              FLA_Obj_elemtype( B ) == FLA_SCALAR &&
00068              !FLASH_Queue_get_enabled( ) )
00069         {
00070             // Execute leaf.
00071             // NOTE: This may be redundant since we execute _internal() with
00072             // fla_qrutud_cntl_leaf (in lieu of an _external() function).
00073             cntl = fla_qrutud_cntl_leaf;
00074         }
00075 
00076         if      ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00077         {
00078             r_val = FLA_QR_UT_UD_task( B, D, T, fla_qrutud_cntl_leaf );
00079         }
00080         else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_VARIANT1 )
00081         {
00082             r_val = FLA_QR_UT_UD_Accum_T_unb_var1( B, D, T );
00083         }
00084         else if ( FLA_Cntl_variant( cntl ) == FLA_UNB_OPT_VARIANT1 )
00085         {
00086             r_val = FLA_QR_UT_UD_Accum_T_opt_var1( B, D, T );
00087         }
00088         else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
00089         {
00090             r_val = FLA_QR_UT_UD_blk_var1( B, D, T, cntl );
00091         }
00092         else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
00093         {
00094             r_val = FLA_QR_UT_UD_blk_var2( B, D, T, cntl );
00095         }
00096     }
00097 
00098     return r_val;
00099 }


Variable Documentation


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