Functions | |
FLA_Error | FLA_Symm (FLA_Side side, FLA_Uplo uplo, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C) |
void FLA_F2C() | fla_symm_f (F_INT *side, F_INT *uplo, F_INT *alpha, F_INT *A, F_INT *B, F_INT *beta, F_INT *C, F_INT *IERROR) |
Variables | |
fla_symm_t * | fla_symm_cntl_bp |
fla_symm_t * | fla_symm_cntl_mp |
fla_symm_t * | fla_symm_cntl_mm |
fla_blocksize_t * | fla_symm_var4_bsize |
fla_blocksize_t * | fla_symm_var9_bsize |
FLA_Error FLA_Symm | ( | FLA_Side | side, | |
FLA_Uplo | uplo, | |||
FLA_Obj | alpha, | |||
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C | |||
) |
References FLA_Blocksize_extract(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_width(), FLA_Symm_check(), FLA_Symm_external(), and FLA_Symm_internal().
Referenced by fla_symm_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_SYMM_VAR4_BLOCKSIZE; 00048 int FLA_SYMM_VAR9_BLOCKSIZE; 00049 #endif 00050 00051 // Check parameters. 00052 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00053 FLA_Symm_check( side, uplo, alpha, A, B, beta, C ); 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_SYMM_VAR4_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_symm_var4_bsize ); 00061 FLA_SYMM_VAR9_BLOCKSIZE = FLA_Blocksize_extract( datatype, fla_symm_var9_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 (ie: the number of columns 00067 // when side == FLA_LEFT and rows when side == FLA_RIGHT). 00068 if ( side == FLA_LEFT ) 00069 nrhs_B = FLA_Obj_width( B ); 00070 else 00071 nrhs_B = FLA_Obj_length( B ); 00072 00073 // Invoke FLA_Symm_internal() with the appropriate control tree. 00074 if ( FLA_SYMM_VAR4_BLOCKSIZE < m_A && FLA_SYMM_VAR9_BLOCKSIZE < nrhs_B ) 00075 { 00076 r_val = FLA_Symm_internal( side, uplo, alpha, A, B, beta, C, fla_symm_cntl_mm ); 00077 } 00078 else if ( FLA_SYMM_VAR4_BLOCKSIZE < m_A && nrhs_B <= FLA_SYMM_VAR9_BLOCKSIZE ) 00079 { 00080 r_val = FLA_Symm_internal( side, uplo, alpha, A, B, beta, C, fla_symm_cntl_mp ); 00081 } 00082 else if ( m_A <= FLA_SYMM_VAR4_BLOCKSIZE && FLA_SYMM_VAR9_BLOCKSIZE < nrhs_B ) 00083 { 00084 r_val = FLA_Symm_internal( side, uplo, alpha, A, B, beta, C, fla_symm_cntl_bp ); 00085 } 00086 else if ( m_A <= FLA_SYMM_VAR4_BLOCKSIZE && nrhs_B <= FLA_SYMM_VAR9_BLOCKSIZE ) 00087 { 00088 r_val = FLA_Symm_external( side, uplo, alpha, A, B, beta, C ); 00089 } 00090 #else 00091 r_val = FLA_Symm_external( side, uplo, alpha, A, B, beta, C ); 00092 #endif 00093 00094 return r_val; 00095 }
void FLA_F2C() fla_symm_f | ( | F_INT * | side, | |
F_INT * | uplo, | |||
F_INT * | alpha, | |||
F_INT * | A, | |||
F_INT * | B, | |||
F_INT * | beta, | |||
F_INT * | C, | |||
F_INT * | IERROR | |||
) |