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