FLA_Symm.c File Reference

(r)


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_tfla_symm_cntl_bp
fla_symm_tfla_symm_cntl_mp
fla_symm_tfla_symm_cntl_mm
fla_blocksize_tfla_symm_var4_bsize
fla_blocksize_tfla_symm_var9_bsize

Function Documentation

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 
)

References FLA_Symm().

00099 {
00100   *IERROR = FLA_Symm( *( ( FLA_Side * ) side  ),
00101                       *( ( FLA_Uplo * ) uplo  ),
00102                       *( ( FLA_Obj  * ) alpha ),
00103                       *( ( FLA_Obj  * ) A     ),
00104                       *( ( FLA_Obj  * ) B     ),
00105                       *( ( FLA_Obj  * ) beta  ),
00106                       *( ( FLA_Obj  * ) C     ) );
00107 }


Variable Documentation


Generated on Mon Jul 6 05:45:55 2009 for libflame by  doxygen 1.5.9