FLA_Apply_Q_UT_internal.c File Reference

(r)


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_tflash_apqut_cntl
fla_apqut_tflash_apqut_cntl_leaf
fla_apqut_tfla_apqut_cntl_leaf

Function Documentation

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 }


Variable Documentation


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