FLA_QR_UT_internal.c File Reference

(r)


Functions

FLA_Error FLA_QR_UT_internal (FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)

Variables

fla_qrut_tfla_qrut_cntl_leaf
fla_qrut_tflash_qrut_cntl
fla_qrut_tflash_qrut_cntl_leaf

Function Documentation

FLA_Error FLA_QR_UT_internal ( FLA_Obj  A,
FLA_Obj  T,
fla_qrut_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_QR_UT_Accum_T_blk_var1(), FLA_QR_UT_Accum_T_opt_var1(), FLA_QR_UT_Accum_T_unb_var1(), FLA_QR_UT_blk_var2(), FLA_QR_UT_internal(), FLA_QR_UT_internal_check(), FLA_QR_UT_task(), and FLASH_Queue_get_enabled().

Referenced by FLA_QR_UT(), FLA_QR_UT_Accum_T_blk_var1(), FLA_QR_UT_blk_var2(), FLA_QR_UT_copy_task(), FLA_QR_UT_inc_blk_var1(), FLA_QR_UT_internal(), and FLA_QR_UT_task().

00040 {
00041     FLA_Error r_val = FLA_SUCCESS;
00042     
00043     if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00044         FLA_QR_UT_internal_check( A, T, 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_QR_UT_internal( *FLASH_OBJ_PTR_AT( A ),
00052                                     *FLASH_OBJ_PTR_AT( T ),
00053                                     flash_qrut_cntl_leaf );
00054     }
00055     else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00056               FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00057               FLASH_Queue_get_enabled( ) )
00058     {
00059         // Enqueue
00060         ENQUEUE_FLASH_QR_UT( A, T, cntl );
00061     }
00062     else
00063     {
00064         if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00065              FLA_Obj_elemtype( A ) == FLA_SCALAR &&
00066              !FLASH_Queue_get_enabled( ) )
00067         {
00068             // Execute leaf.
00069             // NOTE: This may be redundant since we execute _internal() with
00070             // fla_qrut_cntl_leaf (in lieu of an _external() function).
00071             cntl = fla_qrut_cntl_leaf;
00072         }
00073 
00074         if      ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00075         {
00076             r_val = FLA_QR_UT_task( A, T, fla_qrut_cntl_leaf );
00077         }
00078         else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_VARIANT1 )
00079         {
00080             r_val = FLA_QR_UT_Accum_T_unb_var1( A, T );
00081         }
00082         else if ( FLA_Cntl_variant( cntl ) == FLA_UNB_OPT_VARIANT1 )
00083         {
00084             r_val = FLA_QR_UT_Accum_T_opt_var1( A, T );
00085         }
00086         else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
00087         {
00088             r_val = FLA_QR_UT_Accum_T_blk_var1( A, T, cntl );
00089         }
00090         else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
00091         {
00092             r_val = FLA_QR_UT_blk_var2( A, T, cntl );
00093         }
00094     }
00095 
00096     return r_val;
00097 }


Variable Documentation


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