void F77_zher2(int *layout, char *uplow, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *y, int *incy, CBLAS_TEST_ZOMPLEX *a, int *lda) { 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_zher2(CblasRowMajor, uplo, *n, alpha, x, *incx, y, *incy, A, LDA ); for( i=0; i<*n; i++ ) for( j=0; j<*n; j++ ) { a[ (*lda)*j+i ].real=A[ LDA*i+j ].real; a[ (*lda)*j+i ].imag=A[ LDA*i+j ].imag; } free(A); } else if (*layout == TEST_COL_MJR) cblas_zher2( CblasColMajor, uplo, *n, alpha, x, *incx, y, *incy, a, *lda); else cblas_zher2( UNDEFINED, uplo, *n, alpha, x, *incx, y, *incy, a, *lda); }
inline void her2( const Order order, const UpLo uplo, const int n, const std::complex<double> alpha, const std::complex<double>* x, const int incx, const std::complex<double>* y, const int incy, std::complex<double>* a, const int lda ) { cblas_zher2( cblas_option< Order >::value, cblas_option< UpLo >::value, n, &alpha, x, incx, y, incy, a, lda ); }
inline void her2 (CBLAS_ORDER const Order, CBLAS_UPLO const Uplo, int const N, traits::complex_d const& alpha, traits::complex_d const* X, int const incX, traits::complex_d const* Y, int const incY, traits::complex_d* A, int const lda) { cblas_zher2 (Order, Uplo, N, static_cast<void const*> (&alpha), static_cast<void const*> (X), incX, static_cast<void const*> (Y), incY, static_cast<void*> (A), lda); }
void test_her2 (void) { const double flteps = 1e-4, dbleps = 1e-6; { int order = 101; int uplo = 121; int N = 1; int lda = 1; float alpha[2] = {-1.0f, 0.0f}; float A[] = { -0.821f, 0.954f }; float X[] = { 0.532f, 0.802f }; int incX = -1; float Y[] = { 0.016f, -0.334f }; int incY = -1; float A_expected[] = { -0.302288f, 0.0f }; cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1450) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1450) imag"); }; }; }; { int order = 101; int uplo = 122; int N = 1; int lda = 1; float alpha[2] = {-1.0f, 0.0f}; float A[] = { -0.821f, 0.954f }; float X[] = { 0.532f, 0.802f }; int incX = -1; float Y[] = { 0.016f, -0.334f }; int incY = -1; float A_expected[] = { -0.302288f, 0.0f }; cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1451) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1451) imag"); }; }; }; { int order = 102; int uplo = 121; int N = 1; int lda = 1; float alpha[2] = {-1.0f, 0.0f}; float A[] = { -0.821f, 0.954f }; float X[] = { 0.532f, 0.802f }; int incX = -1; float Y[] = { 0.016f, -0.334f }; int incY = -1; float A_expected[] = { -0.302288f, 0.0f }; cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1452) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1452) imag"); }; }; }; { int order = 102; int uplo = 122; int N = 1; int lda = 1; float alpha[2] = {-1.0f, 0.0f}; float A[] = { -0.821f, 0.954f }; float X[] = { 0.532f, 0.802f }; int incX = -1; float Y[] = { 0.016f, -0.334f }; int incY = -1; float A_expected[] = { -0.302288f, 0.0f }; cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1453) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1453) imag"); }; }; }; { int order = 101; int uplo = 121; int N = 1; int lda = 1; double alpha[2] = {-0.3, 0.1}; double A[] = { -0.334, 0.286 }; double X[] = { -0.14, -0.135 }; int incX = -1; double Y[] = { 0.455, 0.358 }; int incY = -1; double A_expected[] = { -0.264521, 0.0 }; cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1454) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1454) imag"); }; }; }; { int order = 101; int uplo = 122; int N = 1; int lda = 1; double alpha[2] = {-0.3, 0.1}; double A[] = { -0.334, 0.286 }; double X[] = { -0.14, -0.135 }; int incX = -1; double Y[] = { 0.455, 0.358 }; int incY = -1; double A_expected[] = { -0.264521, 0.0 }; cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1455) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1455) imag"); }; }; }; { int order = 102; int uplo = 121; int N = 1; int lda = 1; double alpha[2] = {-0.3, 0.1}; double A[] = { -0.334, 0.286 }; double X[] = { -0.14, -0.135 }; int incX = -1; double Y[] = { 0.455, 0.358 }; int incY = -1; double A_expected[] = { -0.264521, 0.0 }; cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1456) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1456) imag"); }; }; }; { int order = 102; int uplo = 122; int N = 1; int lda = 1; double alpha[2] = {-0.3, 0.1}; double A[] = { -0.334, 0.286 }; double X[] = { -0.14, -0.135 }; int incX = -1; double Y[] = { 0.455, 0.358 }; int incY = -1; double A_expected[] = { -0.264521, 0.0 }; cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); { int i; for (i = 0; i < 1; i++) { gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1457) real"); gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1457) imag"); }; }; }; }