FLA_Trinv_internal.c File Reference

(r)


Functions

FLA_Error FLA_Trinv_internal (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl)

Variables

fla_trinv_tflash_trinv_cntl_lapack
fla_trinv_tflash_trinv_cntl

Function Documentation

FLA_Error FLA_Trinv_internal ( FLA_Uplo  uplo,
FLA_Diag  diag,
FLA_Obj  A,
fla_trinv_t cntl 
)

References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Trinv_internal(), FLA_Trinv_internal_check(), FLA_Trinv_l(), FLA_Trinv_u(), and FLASH_Queue_get_enabled().

Referenced by FLA_SPDinv_internal(), FLA_Trinv(), FLA_Trinv_internal(), FLA_Trinv_l_blk_var1(), FLA_Trinv_l_blk_var2(), FLA_Trinv_l_blk_var3(), FLA_Trinv_l_blk_var4(), FLA_Trinv_u_blk_var1(), FLA_Trinv_u_blk_var2(), FLA_Trinv_u_blk_var3(), FLA_Trinv_u_blk_var4(), and FLASH_Trinv().

00039 {
00040     FLA_Error r_val = FLA_SUCCESS;
00041 
00042     if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
00043         FLA_Trinv_internal_check( uplo, diag, A, cntl );
00044 
00045     if      ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
00046               FLA_Obj_elemtype( A ) == FLA_MATRIX &&
00047               FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
00048     {
00049         // Recurse
00050         r_val = FLA_Trinv_internal( uplo,
00051                                     diag,
00052                                     *FLASH_OBJ_PTR_AT( A ),
00053                                     flash_trinv_cntl );
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_Trinv( uplo, diag, A, 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             cntl = flash_trinv_cntl_lapack;
00070         }
00071 
00072         // Parameter combinations
00073         if      ( uplo == FLA_LOWER_TRIANGULAR )
00074         {
00075             r_val = FLA_Trinv_l( diag, A, cntl );
00076         }
00077         else if ( uplo == FLA_UPPER_TRIANGULAR )
00078         {
00079             r_val = FLA_Trinv_u( diag, A, cntl );
00080         }
00081     }
00082 
00083     return r_val;
00084 }


Variable Documentation


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