Functions | |
FLA_Error | FLA_Trmm (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_trmm_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_trmm_t * | fla_trmm_cntl_bp |
fla_trmm_t * | fla_trmm_cntl_mp |
fla_trmm_t * | fla_trmm_cntl_mm |
fla_blocksize_t * | fla_trmm_var2_bsize |
fla_blocksize_t * | fla_trmm_var3_bsize |
FLA_Error FLA_Trmm | ( | 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_Trmm_check(), FLA_Trmm_external(), and FLA_Trmm_internal().
Referenced by fla_trmm_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_TRMM_VAR2_BLOCKSIZE; 00048 int FLA_TRMM_VAR3_BLOCKSIZE; 00049 #endif 00050 00051 // Check parameters. 00052 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00053 FLA_Trmm_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_TRMM_VAR2_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_trmm_var2_bsize ); 00061 FLA_TRMM_VAR3_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_trmm_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_Trmm_internal() with the appropriate control tree. 00073 if ( FLA_TRMM_VAR2_BLOCKSIZE < m_A && FLA_TRMM_VAR3_BLOCKSIZE < nrhs_B ) 00074 { 00075 r_val = FLA_Trmm_internal( side, uplo, trans, diag, alpha, A, B, fla_trmm_cntl_mm ); 00076 } 00077 else if ( FLA_TRMM_VAR2_BLOCKSIZE < m_A && nrhs_B <= FLA_TRMM_VAR3_BLOCKSIZE ) 00078 { 00079 r_val = FLA_Trmm_internal( side, uplo, trans, diag, alpha, A, B, fla_trmm_cntl_mp ); 00080 } 00081 else if ( m_A <= FLA_TRMM_VAR2_BLOCKSIZE && FLA_TRMM_VAR3_BLOCKSIZE < nrhs_B ) 00082 { 00083 r_val = FLA_Trmm_internal( side, uplo, trans, diag, alpha, A, B, fla_trmm_cntl_bp ); 00084 } 00085 else if ( m_A <= FLA_TRMM_VAR2_BLOCKSIZE && nrhs_B <= FLA_TRMM_VAR3_BLOCKSIZE ) 00086 { 00087 r_val = FLA_Trmm_external( side, uplo, trans, diag, alpha, A, B ); 00088 } 00089 #else 00090 r_val = FLA_Trmm_external( side, uplo, trans, diag, alpha, A, B ); 00091 #endif 00092 00093 return r_val; 00094 }
void FLA_F2C() fla_trmm_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 | |||
) |