Functions | |
FLA_Error | FLA_Hemm_external (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_hemm_external_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) |
FLA_Error FLA_Hemm_external | ( | FLA_Side | side, | |
FLA_Uplo | uplo, | |||
FLA_Obj | alpha, | |||
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C | |||
) |
References cblas_chemm(), cblas_zhemm(), CblasColMajor, chemm(), FLA_Check_error_level(), FLA_Hemm_check(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Param_map_to_blas_side(), FLA_Param_map_to_blas_uplo(), and zhemm().
Referenced by FLA_Hemm(), fla_hemm_external_f(), FLA_Hemm_ll_task(), FLA_Hemm_lu_task(), FLA_Hemm_rl_task(), FLA_Hemm_ru_task(), and FLA_Hemm_task().
00036 { 00037 FLA_Datatype datatype; 00038 int ldim_A; 00039 int ldim_B; 00040 int m_C, n_C, ldim_C; 00041 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00042 CBLAS_ORDER cblas_order = CblasColMajor; 00043 CBLAS_SIDE blas_side; 00044 CBLAS_UPLO blas_uplo; 00045 #else 00046 char blas_side; 00047 char blas_uplo; 00048 #endif 00049 00050 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00051 FLA_Hemm_check( side, uplo, alpha, A, B, beta, C ); 00052 00053 if ( FLA_Obj_has_zero_dim( C ) ) return FLA_SUCCESS; 00054 00055 datatype = FLA_Obj_datatype( A ); 00056 00057 ldim_A = FLA_Obj_ldim( A ); 00058 00059 ldim_B = FLA_Obj_ldim( B ); 00060 00061 m_C = FLA_Obj_length( C ); 00062 n_C = FLA_Obj_width( C ); 00063 ldim_C = FLA_Obj_ldim( C ); 00064 00065 FLA_Param_map_to_blas_side( side, &blas_side ); 00066 FLA_Param_map_to_blas_uplo( uplo, &blas_uplo ); 00067 00068 00069 switch( datatype ){ 00070 00071 case FLA_COMPLEX: 00072 { 00073 scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A ); 00074 scomplex *buff_B = ( scomplex * ) FLA_COMPLEX_PTR( B ); 00075 scomplex *buff_C = ( scomplex * ) FLA_COMPLEX_PTR( C ); 00076 scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha ); 00077 scomplex *buff_beta = ( scomplex * ) FLA_COMPLEX_PTR( beta ); 00078 00079 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00080 cblas_chemm( cblas_order, 00081 blas_side, 00082 blas_uplo, 00083 m_C, 00084 n_C, 00085 buff_alpha, 00086 buff_A, ldim_A, 00087 buff_B, ldim_B, 00088 buff_beta, 00089 buff_C, ldim_C ); 00090 #else 00091 FLA_C2F( chemm )( &blas_side, 00092 &blas_uplo, 00093 &m_C, 00094 &n_C, 00095 buff_alpha, 00096 buff_A, &ldim_A, 00097 buff_B, &ldim_B, 00098 buff_beta, 00099 buff_C, &ldim_C ); 00100 #endif 00101 break; 00102 } 00103 00104 case FLA_DOUBLE_COMPLEX: 00105 { 00106 dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A ); 00107 dcomplex *buff_B = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( B ); 00108 dcomplex *buff_C = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( C ); 00109 dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha ); 00110 dcomplex *buff_beta = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( beta ); 00111 00112 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00113 cblas_zhemm( cblas_order, 00114 blas_side, 00115 blas_uplo, 00116 m_C, 00117 n_C, 00118 buff_alpha, 00119 buff_A, ldim_A, 00120 buff_B, ldim_B, 00121 buff_beta, 00122 buff_C, ldim_C ); 00123 #else 00124 FLA_C2F( zhemm )( &blas_side, 00125 &blas_uplo, 00126 &m_C, 00127 &n_C, 00128 buff_alpha, 00129 buff_A, &ldim_A, 00130 buff_B, &ldim_B, 00131 buff_beta, 00132 buff_C, &ldim_C ); 00133 #endif 00134 break; 00135 } 00136 00137 } 00138 00139 return FLA_SUCCESS; 00140 }
void FLA_F2C() fla_hemm_external_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_Hemm_external().
00144 { 00145 *IERROR = FLA_Hemm_external( *( ( FLA_Side * ) side ), 00146 *( ( FLA_Uplo * ) uplo ), 00147 *( ( FLA_Obj * ) alpha ), 00148 *( ( FLA_Obj * ) A ), 00149 *( ( FLA_Obj * ) B ), 00150 *( ( FLA_Obj * ) beta ), 00151 *( ( FLA_Obj * ) C ) ); 00152 }