00001
00029 #ifndef BLAS_H
00030 #define BLAS_H
00031
00032 #ifndef _MSC_VER
00033 # include <itpp/config.h>
00034 #else
00035 # include <itpp/config_msvc.h>
00036 #endif
00037
00038 #include <complex>
00039
00041
00042 namespace blas
00043 {
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00050
00051
00052
00053
00054 void dswap_(const int *n,
00055 double *x, const int *incx,
00056 double *y, const int *incy);
00057
00058 void zswap_(const int *n,
00059 std::complex<double> *x, const int *incx,
00060 std::complex<double> *y, const int *incy);
00061
00062 void dscal_(const int *n,
00063 const double *alpha,
00064 double *x, const int *incx);
00065
00066 void zscal_(const int *n,
00067 const std::complex<double> *alpha,
00068 std::complex<double> *x, const int *incx);
00069
00070 void dcopy_(const int *n,
00071 const double *x, const int *incx,
00072 double *y, const int *incy);
00073
00074 void zcopy_(const int *n,
00075 const std::complex<double> *x, const int *incx,
00076 std::complex<double> *y, const int *incy);
00077
00078 void daxpy_(const int *n,
00079 const double *alpha,
00080 const double *x, const int *incx,
00081 double *y, const int *incy);
00082
00083 void zaxpy_(const int *n,
00084 const std::complex<double> *alpha,
00085 const std::complex<double> *x, const int *incx,
00086 std::complex<double> *y, const int *incy);
00087
00088 double ddot_(const int *n,
00089 const double *x, const int *incx,
00090 const double *y, const int *incy);
00091
00092 #if defined(HAVE_ZDOTUSUB) || defined(HAVE_ZDOTU_VOID)
00093 #if defined(HAVE_ZDOTU_VOID)
00094 # define zdotusub_ zdotu_
00095 #endif // HAVE_ZDOTU_VOID
00096 void zdotusub_(std::complex<double> *dot,
00097 const int *n,
00098 const std::complex<double> *x, const int *incx,
00099 const std::complex<double> *y, const int *incy);
00100 #endif // HAVE_ZDOTUSUB || HAVE_ZDOTU_VOID
00101
00102
00103
00104
00105
00106 void dgemv_(const char *transA, const int *m, const int *n,
00107 const double *alpha,
00108 const double *A, const int *ldA,
00109 const double *x, const int *incx,
00110 const double *beta,
00111 double *y, const int *incy);
00112
00113 void zgemv_(const char *transA, const int *m, const int *n,
00114 const std::complex<double> *alpha,
00115 const std::complex<double> *A, const int *ldA,
00116 const std::complex<double> *x, const int *incx,
00117 const std::complex<double> *beta,
00118 std::complex<double> *y, const int *incy);
00119
00120 void dger_(const int *m, const int *n,
00121 const double *alpha,
00122 const double *x, const int *incx,
00123 const double *y, const int *incy,
00124 double *A, const int *ldA);
00125
00126 void zgeru_(const int *m, const int *n,
00127 const std::complex<double> *alpha,
00128 const std::complex<double> *x, const int *inxx,
00129 const std::complex<double> *y, const int *incy,
00130 std::complex<double> *A, const int *ldA);
00131
00132 void zgerc_(const int *m, const int *n,
00133 const std::complex<double> *alpha,
00134 const std::complex<double> *x, const int *inxx,
00135 const std::complex<double> *y, const int *incy,
00136 std::complex<double> *A, const int *ldA);
00137
00138
00139
00140
00141
00142 void dgemm_(const char *transA, const char *transB,
00143 const int *m, const int *n, const int *k,
00144 const double *alpha,
00145 const double *A, const int *ldA,
00146 const double *B, const int *ldB,
00147 const double *beta,
00148 double *C, const int *ldC);
00149
00150 void zgemm_(const char *transA, const char *transB,
00151 const int *m, const int *n, const int *k,
00152 const std::complex<double> *alpha,
00153 const std::complex<double> *A, const int *ldA,
00154 const std::complex<double> *B, const int *ldB,
00155 const std::complex<double> *beta,
00156 std::complex<double> *C, const int *ldC);
00157
00158 #ifdef __cplusplus
00159 }
00160 #endif
00161
00162 }
00163
00165
00166 #endif // #ifndef BLAS_H