Functions | |
FLA_Error | FLA_Trsm (FLA_Side side, FLA_Uplo uplo, FLA_Trans trans, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B) |
void FLA_F2C() | fla_trsm_f (F_INT *side, F_INT *uplo, F_INT *trans, F_INT *diag, F_INT *alpha, F_INT *A, F_INT *B, F_INT *IERROR) |
Variables | |
fla_trsm_t * | fla_trsm_cntl_bp |
fla_trsm_t * | fla_trsm_cntl_mp |
fla_trsm_t * | fla_trsm_cntl_mm |
fla_blocksize_t * | fla_trsm_var2_bsize |
fla_blocksize_t * | fla_trsm_var3_bsize |
FLA_Error FLA_Trsm | ( | FLA_Side | side, | |
FLA_Uplo | uplo, | |||
FLA_Trans | trans, | |||
FLA_Diag | diag, | |||
FLA_Obj | alpha, | |||
FLA_Obj | A, | |||
FLA_Obj | B | |||
) |
References FLA_Blocksize_extract(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_width(), FLA_Trsm_check(), FLA_Trsm_external(), and FLA_Trsm_internal().
Referenced by fla_trsm_f().
00042 { 00043 FLA_Error r_val = FLA_SUCCESS; 00044 #ifdef FLA_ENABLE_BLAS3_FRONT_END_CNTL_TREES 00045 FLA_Datatype datatype; 00046 int m_A, nrhs_B; 00047 int FLA_TRSM_VAR2_BLOCKSIZE; 00048 int FLA_TRSM_VAR3_BLOCKSIZE; 00049 #endif 00050 00051 // Check parameters. 00052 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00053 FLA_Trsm_check( side, uplo, trans, diag, alpha, A, B ); 00054 00055 #ifdef FLA_ENABLE_BLAS3_FRONT_END_CNTL_TREES 00056 // Determine the datatype of the operation. 00057 datatype = FLA_Obj_datatype( A ); 00058 00059 // Extract the appropriate blocksize for the given datatype. 00060 FLA_TRSM_VAR2_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_trsm_var2_bsize ); 00061 FLA_TRSM_VAR3_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_trsm_var3_bsize ); 00062 00063 // Determine the dimensions of A. 00064 m_A = FLA_Obj_length( A ); 00065 00066 // Determine the number of right-hand sides of B. 00067 if ( side == FLA_LEFT ) 00068 nrhs_B = FLA_Obj_width( B ); 00069 else 00070 nrhs_B = FLA_Obj_length( B ); 00071 00072 // Invoke FLA_Trsm_internal() with the appropriate control tree. 00073 if ( FLA_TRSM_VAR2_BLOCKSIZE < m_A && FLA_TRSM_VAR3_BLOCKSIZE < nrhs_B ) 00074 { 00075 r_val = FLA_Trsm_internal( side, uplo, trans, diag, alpha, A, B, fla_trsm_cntl_mm ); 00076 } 00077 else if ( FLA_TRSM_VAR2_BLOCKSIZE < m_A && nrhs_B <= FLA_TRSM_VAR3_BLOCKSIZE ) 00078 { 00079 r_val = FLA_Trsm_internal( side, uplo, trans, diag, alpha, A, B, fla_trsm_cntl_mp ); 00080 } 00081 else if ( m_A <= FLA_TRSM_VAR2_BLOCKSIZE && FLA_TRSM_VAR3_BLOCKSIZE < nrhs_B ) 00082 { 00083 r_val = FLA_Trsm_internal( side, uplo, trans, diag, alpha, A, B, fla_trsm_cntl_bp ); 00084 } 00085 else if ( m_A <= FLA_TRSM_VAR2_BLOCKSIZE && nrhs_B <= FLA_TRSM_VAR3_BLOCKSIZE ) 00086 { 00087 r_val = FLA_Trsm_external( side, uplo, trans, diag, alpha, A, B ); 00088 } 00089 #else 00090 r_val = FLA_Trsm_external( side, uplo, trans, diag, alpha, A, B ); 00091 #endif 00092 00093 return r_val; 00094 }
void FLA_F2C() fla_trsm_f | ( | F_INT * | side, | |
F_INT * | uplo, | |||
F_INT * | trans, | |||
F_INT * | diag, | |||
F_INT * | alpha, | |||
F_INT * | A, | |||
F_INT * | B, | |||
F_INT * | IERROR | |||
) |