00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef _CXSC_BLAS_HEADER_INCLUDED
00042 #define _CXSC_BLAS_HEADER_INCLUDED
00043
00044 namespace cxsc {
00045
00046 enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
00047 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
00048 enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
00049 enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
00050 enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
00051
00052
00053 extern "C" {
00054 double cblas_ddot(const int N, const double *X, const int incX,
00055 const double *Y, const int incY);
00056
00057 void cblas_zdotu_sub(const int N, const void *X, const int incX,
00058 const void *Y, const int incY, void *dotu);
00059
00060 void cblas_daxpy(const int N, const double alpha, const double *X,
00061 const int incX, double *Y, const int incY);
00062
00063 void cblas_zaxpy(const int N, const double alpha, const double *X,
00064 const int incX, double *Y, const int incY);
00065
00066 void cblas_dgemv(const enum CBLAS_ORDER order,
00067 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00068 const double alpha, const double *A, const int lda,
00069 const double *X, const int incX, const double beta,
00070 double *Y, const int incY);
00071
00072 void cblas_zgemv(const enum CBLAS_ORDER order,
00073 const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00074 const void *alpha, const void *A, const int lda,
00075 const void *X, const int incX, const void *beta,
00076 void *Y, const int incY);
00077
00078 void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00079 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00080 const int K, const double alpha, const double *A,
00081 const int lda, const double *B, const int ldb,
00082 const double beta, double *C, const int ldc);
00083
00084 void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00085 const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00086 const int K, const void *alpha, const void *A,
00087 const int lda, const void *B, const int ldb,
00088 const void *beta, void *C, const int ldc);
00089
00090 }
00091
00092 inline void blasdot(const rvector& x, const rvector& y, real& res);
00093
00094 inline void blasdot(const rvector& x, const cvector& y, complex& res);
00095
00096 inline void blasdot(const cvector& x, const rvector& y, complex& res);
00097
00098 inline void blasdot(const cvector& x, const cvector& y, complex& res);
00099
00100 inline void sort(const ivector &x, const ivector &y, rvector& x_inf, rvector& y_inf, rvector &x_sup, rvector &y_sup, int n, int lb1, int lb2);
00101
00102
00103
00104 static inline void sort(const ivector &x, const rvector &y, rvector& x_inf, rvector& y_inf, rvector &x_sup, rvector &y_sup, int n, int lb1, int lb2);
00105
00106
00107
00108 static inline void sort(const rvector &y, const ivector &x, rvector& x_inf, rvector& y_inf, rvector &x_sup, rvector &y_sup, int n, int lb1, int lb2);
00109
00110 inline void blasdot(const ivector& x, const ivector& y, interval& res);
00111
00112 inline void blasdot(const ivector& x, const rvector& y, interval& res);
00113
00114 inline void blasdot(const rvector& x, const ivector& y, interval& res);
00115
00116 inline void blasdot(const rvector& x, const civector& y, cinterval& res);
00117
00118 inline void blasdot(const civector& x, const rvector& y, cinterval& res);
00119
00120 inline void blasdot(const cvector& x, const ivector& y, cinterval& res);
00121
00122 inline void blasdot(const ivector& x, const cvector& y, cinterval& res);
00123
00124 inline void blasdot(const civector& x, const civector& y, cinterval& res);
00125
00126 inline void blasdot(const civector& x, const cvector& y, cinterval& res);
00127
00128 inline void blasdot(const cvector& x, const civector& y, cinterval& res);
00129
00130 inline void blasdot(const civector& x, const ivector& y, cinterval& res);
00131
00132 inline void blasdot(const ivector& x, const civector& y, cinterval& res);
00133
00134
00135
00136 inline void blasmvmul(const rmatrix& A, const rvector& x, rvector& r);
00137
00138 inline void blasmvmul(const rmatrix& A, const ivector& x, ivector& r);
00139
00140 inline void blasmvmul(const imatrix& A, const rvector& x, ivector& r);
00141
00142 inline void blasmvmul(const imatrix& A, const ivector& x, ivector& r);
00143
00144 inline void blasmvmul(const cmatrix& A, const ivector& x, civector& r);
00145
00146 inline void blasmvmul(const imatrix& A, const cvector& x, civector& r);
00147
00148 inline void blasmvmul(const rmatrix& A, const civector& x, civector& r);
00149
00150 inline void blasmvmul(const cimatrix& A, const rvector& x, civector& r);
00151
00152 inline void blasmvmul(const cmatrix& A, const civector& x, civector& r);
00153
00154 inline void blasmvmul(const cimatrix& A, const cvector& x, civector& r);
00155
00156 inline void blasmvmul(const imatrix& A, const civector& x, civector& r);
00157
00158 inline void blasmvmul(const cimatrix& A, const ivector& x, civector& r);
00159
00160 inline void blasmvmul(const cimatrix& A, const civector& x, civector& r);
00161
00162 inline void blasmvmul(const cmatrix& A, const cvector& x, cvector& r);
00163
00164 inline void blasmvmul(const rmatrix& A, const cvector& x, cvector& r);
00165
00166 inline void blasmvmul(const cmatrix& A, const rvector& x, cvector& r);
00167
00168
00169
00170 inline void blasmatmul(const rmatrix &A, const rmatrix &B, rmatrix &C);
00171
00172 inline void blasmatmul(const imatrix &A, const imatrix &B, imatrix &C);
00173
00174 inline void blasmatmul(const rmatrix &A, const imatrix &B, imatrix &C);
00175
00176 inline void blasmatmul(const imatrix &A, const rmatrix &B, imatrix &C);
00177
00178 inline void blasmatmul(const cmatrix &A, const cmatrix &B, cmatrix &C);
00179
00180 inline void blasmatmul(const cmatrix &A, const rmatrix &B, cmatrix &C);
00181
00182 inline void blasmatmul(const rmatrix &A, const cmatrix &B, cmatrix &C);
00183
00184 inline void blasmatmul(const cmatrix &A, const imatrix &B, cimatrix &C);
00185
00186 inline void blasmatmul(const imatrix &A, const cmatrix &B, cimatrix &C);
00187
00188 inline void blasmatmul(const rmatrix &A, const cimatrix &B, cimatrix &C);
00189
00190 inline void blasmatmul(const cimatrix &A, const rmatrix &B, cimatrix &C);
00191
00192 inline void blasmatmul(const imatrix &A, const cimatrix &B, cimatrix &C);
00193
00194 inline void blasmatmul(const cimatrix &A, const imatrix &B, cimatrix &C);
00195
00196 inline void blasmatmul(const cimatrix &A, const cmatrix &B, cimatrix &C);
00197
00198 inline void blasmatmul(const cmatrix &A, const cimatrix &B, cimatrix &C);
00199
00200 inline void blasmatmul(const cimatrix &A, const cimatrix &B, cimatrix &C);
00201
00202 }
00203
00204 #endif