Functions | |
FLA_Error | FLA_Trinv_internal (FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t *cntl) |
Variables | |
fla_trinv_t * | flash_trinv_cntl_lapack |
fla_trinv_t * | flash_trinv_cntl |
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 }