Functions | |
FLA_Error | FLA_Trsv_internal (FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x, fla_trsv_t *cntl) |
Variables | |
fla_trsv_t * | flash_trsv_cntl_blas |
fla_trsv_t * | flash_trsv_cntl |
FLA_Error FLA_Trsv_internal | ( | FLA_Uplo | uplo, | |
FLA_Trans | transa, | |||
FLA_Diag | diag, | |||
FLA_Obj | A, | |||
FLA_Obj | x, | |||
fla_trsv_t * | cntl | |||
) |
References FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Trsv_internal(), FLA_Trsv_internal_check(), FLA_Trsv_lc(), FLA_Trsv_ln(), FLA_Trsv_lt(), FLA_Trsv_uc(), FLA_Trsv_un(), FLA_Trsv_ut(), and FLASH_Queue_get_enabled().
Referenced by FLA_Trsv(), FLA_Trsv_internal(), FLA_Trsv_lc_blk_var1(), FLA_Trsv_lc_blk_var2(), FLA_Trsv_ln_blk_var1(), FLA_Trsv_ln_blk_var2(), FLA_Trsv_lt_blk_var1(), FLA_Trsv_lt_blk_var2(), FLA_Trsv_uc_blk_var1(), FLA_Trsv_uc_blk_var2(), FLA_Trsv_un_blk_var1(), FLA_Trsv_un_blk_var2(), FLA_Trsv_ut_blk_var1(), FLA_Trsv_ut_blk_var2(), and FLASH_Trsv().
00039 { 00040 FLA_Error r_val = FLA_SUCCESS; 00041 00042 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00043 FLA_Trsv_internal_check( uplo, transa, diag, A, x, 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_Trsv_internal( uplo, 00051 transa, 00052 diag, 00053 *FLASH_OBJ_PTR_AT( A ), 00054 *FLASH_OBJ_PTR_AT( x ), 00055 flash_trsv_cntl ); 00056 } 00057 else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00058 FLA_Obj_elemtype( A ) == FLA_SCALAR && 00059 FLASH_Queue_get_enabled( ) ) 00060 { 00061 // Enqueue 00062 ENQUEUE_FLASH_Trsv( uplo, transa, diag, A, x, cntl ); 00063 } 00064 else 00065 { 00066 if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER && 00067 FLA_Obj_elemtype( A ) == FLA_SCALAR && 00068 !FLASH_Queue_get_enabled( ) ) 00069 { 00070 // Execute leaf 00071 cntl = flash_trsv_cntl_blas; 00072 } 00073 00074 // Parameter combinations 00075 if ( uplo == FLA_LOWER_TRIANGULAR ) 00076 { 00077 if ( transa == FLA_NO_TRANSPOSE ) 00078 r_val = FLA_Trsv_ln( diag, A, x, cntl ); 00079 else if ( transa == FLA_TRANSPOSE ) 00080 r_val = FLA_Trsv_lt( diag, A, x, cntl ); 00081 else if ( transa == FLA_CONJ_TRANSPOSE ) 00082 r_val = FLA_Trsv_lc( diag, A, x, cntl ); 00083 } 00084 else if ( uplo == FLA_UPPER_TRIANGULAR ) 00085 { 00086 if ( transa == FLA_NO_TRANSPOSE ) 00087 r_val = FLA_Trsv_un( diag, A, x, cntl ); 00088 else if ( transa == FLA_TRANSPOSE ) 00089 r_val = FLA_Trsv_ut( diag, A, x, cntl ); 00090 else if ( transa == FLA_CONJ_TRANSPOSE ) 00091 r_val = FLA_Trsv_uc( diag, A, x, cntl ); 00092 } 00093 } 00094 00095 return r_val; 00096 }