FLA_Trmm.c File Reference

(r)


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_tfla_trmm_cntl_bp
fla_trmm_tfla_trmm_cntl_mp
fla_trmm_tfla_trmm_cntl_mm
fla_blocksize_tfla_trmm_var2_bsize
fla_blocksize_tfla_trmm_var3_bsize

Function Documentation

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 
)

References FLA_Trmm().

00098 {
00099   *IERROR = FLA_Trmm( *( ( FLA_Side  * ) side  ),
00100                       *( ( FLA_Uplo  * ) uplo  ),
00101                       *( ( FLA_Trans * ) trans ),
00102                       *( ( FLA_Diag  * ) diag  ),
00103                       *( ( FLA_Obj   * ) alpha ),
00104                       *( ( FLA_Obj   * ) A     ),
00105                       *( ( FLA_Obj   * ) B     ) );
00106 }


Variable Documentation


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