Functions | |
FLA_Error | FLA_Her2k_external (FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, FLA_Obj beta, FLA_Obj C) |
void FLA_F2C() | fla_her2k_external_f (F_INT *uplo, F_INT *trans, F_INT *alpha, F_INT *A, F_INT *B, F_INT *beta, F_INT *C, F_INT *IERROR) |
FLA_Error FLA_Her2k_external | ( | FLA_Uplo | uplo, | |
FLA_Trans | trans, | |||
FLA_Obj | alpha, | |||
FLA_Obj | A, | |||
FLA_Obj | B, | |||
FLA_Obj | beta, | |||
FLA_Obj | C | |||
) |
References cblas_cher2k(), cblas_zher2k(), CblasColMajor, cher2k(), FLA_Check_error_level(), FLA_Her2k_check(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Obj_width(), FLA_Param_map_to_blas_trans(), FLA_Param_map_to_blas_uplo(), and zher2k().
Referenced by FLA_Her2k(), fla_her2k_external_f(), FLA_Her2k_lh_task(), FLA_Her2k_ln_task(), FLA_Her2k_task(), FLA_Her2k_uh_task(), and FLA_Her2k_un_task().
00036 { 00037 FLA_Datatype datatype; 00038 int k_AB; 00039 int m_A, n_A, ldim_A; 00040 int ldim_B; 00041 int m_C, ldim_C; 00042 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00043 CBLAS_ORDER cblas_order = CblasColMajor; 00044 CBLAS_UPLO blas_uplo; 00045 CBLAS_TRANSPOSE blas_trans; 00046 #else 00047 char blas_uplo; 00048 char blas_trans; 00049 #endif 00050 00051 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00052 FLA_Her2k_check( uplo, trans, alpha, A, B, beta, C ); 00053 00054 if ( FLA_Obj_has_zero_dim( C ) ) return FLA_SUCCESS; 00055 00056 datatype = FLA_Obj_datatype( A ); 00057 00058 m_A = FLA_Obj_length( A ); 00059 n_A = FLA_Obj_width( A ); 00060 ldim_A = FLA_Obj_ldim( A ); 00061 00062 ldim_B = FLA_Obj_ldim( B ); 00063 00064 m_C = FLA_Obj_length( C ); 00065 ldim_C = FLA_Obj_ldim( C ); 00066 00067 if ( trans == FLA_NO_TRANSPOSE ) 00068 k_AB = n_A; 00069 else 00070 k_AB = m_A; 00071 00072 FLA_Param_map_to_blas_uplo( uplo, &blas_uplo ); 00073 FLA_Param_map_to_blas_trans( trans, &blas_trans ); 00074 00075 00076 switch( datatype ){ 00077 00078 case FLA_COMPLEX: 00079 { 00080 scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A ); 00081 scomplex *buff_B = ( scomplex * ) FLA_COMPLEX_PTR( B ); 00082 scomplex *buff_C = ( scomplex * ) FLA_COMPLEX_PTR( C ); 00083 scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha ); 00084 float *buff_beta = ( float * ) FLA_FLOAT_PTR( beta ); 00085 00086 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00087 cblas_cher2k( cblas_order, 00088 blas_uplo, 00089 blas_trans, 00090 m_C, 00091 k_AB, 00092 buff_alpha, 00093 buff_A, ldim_A, 00094 buff_B, ldim_B, 00095 *buff_beta, 00096 buff_C, ldim_C ); 00097 #else 00098 FLA_C2F( cher2k )( &blas_uplo, 00099 &blas_trans, 00100 &m_C, 00101 &k_AB, 00102 buff_alpha, 00103 buff_A, &ldim_A, 00104 buff_B, &ldim_B, 00105 buff_beta, 00106 buff_C, &ldim_C ); 00107 #endif 00108 break; 00109 } 00110 00111 case FLA_DOUBLE_COMPLEX: 00112 { 00113 dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A ); 00114 dcomplex *buff_B = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( B ); 00115 dcomplex *buff_C = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( C ); 00116 dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha ); 00117 double *buff_beta = ( double * ) FLA_DOUBLE_PTR( beta ); 00118 00119 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00120 cblas_zher2k( cblas_order, 00121 blas_uplo, 00122 blas_trans, 00123 m_C, 00124 k_AB, 00125 buff_alpha, 00126 buff_A, ldim_A, 00127 buff_B, ldim_B, 00128 *buff_beta, 00129 buff_C, ldim_C ); 00130 #else 00131 FLA_C2F( zher2k )( &blas_uplo, 00132 &blas_trans, 00133 &m_C, 00134 &k_AB, 00135 buff_alpha, 00136 buff_A, &ldim_A, 00137 buff_B, &ldim_B, 00138 buff_beta, 00139 buff_C, &ldim_C ); 00140 #endif 00141 break; 00142 } 00143 00144 } 00145 00146 return FLA_SUCCESS; 00147 }
void FLA_F2C() fla_her2k_external_f | ( | F_INT * | uplo, | |
F_INT * | trans, | |||
F_INT * | alpha, | |||
F_INT * | A, | |||
F_INT * | B, | |||
F_INT * | beta, | |||
F_INT * | C, | |||
F_INT * | IERROR | |||
) |
References FLA_Her2k_external().
00151 { 00152 *IERROR = FLA_Her2k_external( *( ( FLA_Uplo * ) uplo ), 00153 *( ( FLA_Trans * ) trans ), 00154 *( ( FLA_Obj * ) alpha ), 00155 *( ( FLA_Obj * ) A ), 00156 *( ( FLA_Obj * ) B ), 00157 *( ( FLA_Obj * ) beta ), 00158 *( ( FLA_Obj * ) C ) ); 00159 }