1 #include <cxxblas/cxxblas.cxx>
2 #include <cstdlib>
3
4 extern "C" {
5
6 #ifndef COMPLEX_FLOAT1
7 typedef CBLAS_FLOAT CBLAS_ALPHA;
8 typedef CBLAS_FLOAT CXXBLAS_FLOAT;
9 #else
10 typedef const CBLAS_FLOAT * CBLAS_ALPHA;
11 typedef std::complex<CBLAS_FLOAT> CXXBLAS_FLOAT;
12 #endif
13
14 void
15 CBLAS_NAME(CBLAS_INT n,
16 CBLAS_ALPHA _alpha, const CBLAS_FLOAT *_x, CBLAS_INT incX,
17 CBLAS_FLOAT *_y, CBLAS_INT incY)
18 #ifdef CREATE_CBLAS
19 {
20 const CXXBLAS_FLOAT *x = reinterpret_cast<const CXXBLAS_FLOAT *>(_x);
21 CXXBLAS_FLOAT *y = reinterpret_cast<CXXBLAS_FLOAT *>(_y);
22
23 # ifndef COMPLEX_FLOAT1
24 CXXBLAS_FLOAT alpha = _alpha;
25 # else
26 CXXBLAS_FLOAT alpha(_alpha[0], _alpha[1]);
27 # endif
28
29 cxxblas::axpy<CBLAS_INT,
30 CXXBLAS_FLOAT,
31 CXXBLAS_FLOAT>(n, alpha, x, incX, y, incY);
32 }
33 #else
34 ;
35 #endif // CREATE_CBLAS
36
37 #ifdef CREATE_BLAS
38 void
39 BLAS_NAME(CBLAS_INT *_n,
40 CBLAS_FLOAT *_alpha, const CBLAS_FLOAT *x, CBLAS_INT *_incX,
41 CBLAS_FLOAT *y, CBLAS_INT *_incY)
42 {
43
44 CBLAS_INT n = *_n;
45 CBLAS_INT incX = *_incX;
46 CBLAS_INT incY = *_incY;
47
48 # ifndef COMPLEX_FLOAT2
49 CBLAS_ALPHA alpha = *_alpha;
50 # else
51 CBLAS_ALPHA alpha = _alpha;
52 # endif
53
54 // the blas interface calls the cblas interface
55 // so any blas-test will also test the cblas-interface
56 CBLAS_NAME(n, alpha, x, incX, y, incY);
57 }
58 #endif // CREATE_BLAS
59
60 } // extern "C"
2 #include <cstdlib>
3
4 extern "C" {
5
6 #ifndef COMPLEX_FLOAT1
7 typedef CBLAS_FLOAT CBLAS_ALPHA;
8 typedef CBLAS_FLOAT CXXBLAS_FLOAT;
9 #else
10 typedef const CBLAS_FLOAT * CBLAS_ALPHA;
11 typedef std::complex<CBLAS_FLOAT> CXXBLAS_FLOAT;
12 #endif
13
14 void
15 CBLAS_NAME(CBLAS_INT n,
16 CBLAS_ALPHA _alpha, const CBLAS_FLOAT *_x, CBLAS_INT incX,
17 CBLAS_FLOAT *_y, CBLAS_INT incY)
18 #ifdef CREATE_CBLAS
19 {
20 const CXXBLAS_FLOAT *x = reinterpret_cast<const CXXBLAS_FLOAT *>(_x);
21 CXXBLAS_FLOAT *y = reinterpret_cast<CXXBLAS_FLOAT *>(_y);
22
23 # ifndef COMPLEX_FLOAT1
24 CXXBLAS_FLOAT alpha = _alpha;
25 # else
26 CXXBLAS_FLOAT alpha(_alpha[0], _alpha[1]);
27 # endif
28
29 cxxblas::axpy<CBLAS_INT,
30 CXXBLAS_FLOAT,
31 CXXBLAS_FLOAT>(n, alpha, x, incX, y, incY);
32 }
33 #else
34 ;
35 #endif // CREATE_CBLAS
36
37 #ifdef CREATE_BLAS
38 void
39 BLAS_NAME(CBLAS_INT *_n,
40 CBLAS_FLOAT *_alpha, const CBLAS_FLOAT *x, CBLAS_INT *_incX,
41 CBLAS_FLOAT *y, CBLAS_INT *_incY)
42 {
43
44 CBLAS_INT n = *_n;
45 CBLAS_INT incX = *_incX;
46 CBLAS_INT incY = *_incY;
47
48 # ifndef COMPLEX_FLOAT2
49 CBLAS_ALPHA alpha = *_alpha;
50 # else
51 CBLAS_ALPHA alpha = _alpha;
52 # endif
53
54 // the blas interface calls the cblas interface
55 // so any blas-test will also test the cblas-interface
56 CBLAS_NAME(n, alpha, x, incX, y, incY);
57 }
58 #endif // CREATE_BLAS
59
60 } // extern "C"