void F77_zhemv(int *layout, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *y, int *incy) { CBLAS_TEST_ZOMPLEX *A; int i,j,LDA; CBLAS_UPLO uplo; get_uplo_type(uplow,&uplo); if (*layout == TEST_ROW_MJR) { LDA = *n+1; A = (CBLAS_TEST_ZOMPLEX *)malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); for( i=0; i<*n; i++ ) for( j=0; j<*n; j++ ) { A[ LDA*i+j ].real=a[ (*lda)*j+i ].real; A[ LDA*i+j ].imag=a[ (*lda)*j+i ].imag; } cblas_zhemv( CblasRowMajor, uplo, *n, alpha, A, LDA, x, *incx, beta, y, *incy ); free(A); } else if (*layout == TEST_COL_MJR) cblas_zhemv( CblasColMajor, uplo, *n, alpha, a, *lda, x, *incx, beta, y, *incy ); else cblas_zhemv( UNDEFINED, uplo, *n, alpha, a, *lda, x, *incx, beta, y, *incy ); }
void bl1_zhemv_blas( uplo1_t uplo, int m, dcomplex* alpha, dcomplex* a, int lda, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy ) { #ifdef BLIS1_ENABLE_CBLAS_INTERFACES enum CBLAS_ORDER cblas_order = CblasColMajor; enum CBLAS_UPLO cblas_uplo; bl1_param_map_to_netlib_uplo( uplo, &cblas_uplo ); cblas_zhemv( cblas_order, cblas_uplo, m, alpha, a, lda, x, incx, beta, y, incy ); #else char blas_uplo; bl1_param_map_to_netlib_uplo( uplo, &blas_uplo ); F77_zhemv( &blas_uplo, &m, alpha, a, &lda, x, &incx, beta, y, &incy ); #endif }
inline void hemv (CBLAS_ORDER const Order, CBLAS_UPLO const Uplo, int const N, traits::complex_d const& alpha, traits::complex_d const* A, int const lda, traits::complex_d const* X, int const incX, traits::complex_d const& beta, traits::complex_d* Y, int const incY) { cblas_zhemv (Order, Uplo, N, static_cast<void const*> (&alpha), static_cast<void const*> (A), lda, static_cast<void const*> (X), incX, static_cast<void const*> (&beta), static_cast<void*> (Y), incY); }
void test_hemv (void) { const double flteps = 1e-4, dbleps = 1e-6; { int order = 101; int uplo = 121; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1070) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1070) imag"); }; }; }; { int order = 101; int uplo = 121; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1071) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1071) imag"); }; }; }; { int order = 101; int uplo = 122; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1072) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1072) imag"); }; }; }; { int order = 101; int uplo = 122; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1073) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1073) imag"); }; }; }; { int order = 102; int uplo = 121; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1074) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1074) imag"); }; }; }; { int order = 102; int uplo = 121; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1075) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1075) imag"); }; }; }; { int order = 102; int uplo = 122; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1076) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1076) imag"); }; }; }; { int order = 102; int uplo = 122; float alpha[2] = {1.0f, 0.0f}; float beta[2] = {-0.3f, 0.1f}; int N = 1; int lda = 1; float A[] = { -0.434f, 0.837f }; float X[] = { 0.209f, -0.935f }; int incX = -1; float Y[] = { 0.346f, -0.412f }; int incY = -1; float y_expected[] = { -0.153306f, 0.56399f }; cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1077) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1077) imag"); }; }; }; { int order = 101; int uplo = 121; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1078) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1078) imag"); }; }; }; { int order = 101; int uplo = 121; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1079) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1079) imag"); }; }; }; { int order = 101; int uplo = 122; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1080) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1080) imag"); }; }; }; { int order = 101; int uplo = 122; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1081) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1081) imag"); }; }; }; { int order = 102; int uplo = 121; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1082) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1082) imag"); }; }; }; { int order = 102; int uplo = 121; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1083) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1083) imag"); }; }; }; { int order = 102; int uplo = 122; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1084) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1084) imag"); }; }; }; { int order = 102; int uplo = 122; double alpha[2] = {0, 0}; double beta[2] = {1, 0}; int N = 1; int lda = 1; double A[] = { 0.036, -0.966 }; double X[] = { -0.695, 0.886 }; int incX = -1; double Y[] = { 0.486, 0.629 }; int incY = -1; double y_expected[] = { 0.486, 0.629 }; cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1085) real"); gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1085) imag"); }; }; }; }