blas.h

Go to the documentation of this file.
00001 //
00002 //  Copyright (C) 2002, 2003 Si-Lab b.v.b.a and Toon Knapen 
00003 //
00004 // Distributed under the Boost Software License, Version 1.0.
00005 // (See accompanying file LICENSE_1_0.txt or copy at
00006 // http://www.boost.org/LICENSE_1_0.txt)
00007 //
00008 
00009 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_BLAS_H
00010 #define BOOST_NUMERIC_BINDINGS_BLAS_BLAS_H
00011 
00012 /*
00013  * const-correct prototypes for BLAS functions
00014  * 
00015  */
00016 
00017 #include <boost/numeric/bindings/blas/blas_names.h>
00018 #include <boost/numeric/bindings/traits/type.h>
00019 
00020 extern "C"
00021 {
00022   //
00023   // Level 1
00024   //
00025   void   BLAS_SSCAL(const int *n, const float*      alpha, float*      x, const int* incx);
00026   void   BLAS_DSCAL(const int *n, const double*     alpha, double*     x, const int* incx);
00027   void   BLAS_CSCAL(const int *n, const fcomplex_t* alpha, fcomplex_t* x, const int* incx);
00028   void   BLAS_ZSCAL(const int *n, const dcomplex_t* alpha, dcomplex_t* x, const int* incx);
00029 
00030   void   BLAS_SAXPY(const int *n, const float*      alpha, const float*      x, const int* incx,  float*      y, const int* incy);
00031   void   BLAS_DAXPY(const int *n, const double*     alpha, const double*     x, const int* incx,  double*     y, const int* incy);
00032   void   BLAS_CAXPY(const int *n, const fcomplex_t* alpha, const fcomplex_t* x, const int* incx,  fcomplex_t* y, const int* incy);
00033   void   BLAS_ZAXPY(const int *n, const dcomplex_t* alpha, const dcomplex_t* x, const int* incx,  dcomplex_t* y, const int* incy);
00034 
00035   float  BLAS_SDOT (const int *n, const float  *x, const int *incx, const float  *y, const int *incy);
00036   double BLAS_DDOT (const int *n, const double *x, const int *incx, const double *y, const int *incy);
00037 
00038   void   BLAS_CDOTU(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
00039   void   BLAS_ZDOTU(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy); 
00040   
00041   void   BLAS_CDOTC(fcomplex_t* ret, const int *n, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy);
00042   void   BLAS_ZDOTC(dcomplex_t* ret, const int *n, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy);
00043 
00044   float   BLAS_SNRM2(const int *n, const float  *x, const int *incx);
00045   double  BLAS_DNRM2(const int *n, const double *x, const int *incx);
00046   float   BLAS_SCNRM2(const int *n, const fcomplex_t  *x, const int *incx);
00047   double  BLAS_DZNRM2(const int *n, const dcomplex_t *x, const int *incx);
00048 
00049   float   BLAS_SASUM(const int *n, const float  *x, const int *incx);
00050   double  BLAS_DASUM(const int *n, const double *x, const int *incx);
00051   float   BLAS_SCASUM(const int *n, const fcomplex_t  *x, const int *incx);
00052   double  BLAS_DZASUM(const int *n, const dcomplex_t *x, const int *incx);
00053 
00054   void BLAS_SCOPY( const int *n, const float  *x, const int *incx, float  *y, const int *incy);
00055   void BLAS_DCOPY( const int *n, const double  *x, const int *incx, double  *y, const int *incy);
00056   void BLAS_CCOPY( const int *n, const fcomplex_t  *x, const int *incx, fcomplex_t  *y, const int *incy);
00057   void BLAS_ZCOPY( const int *n, const dcomplex_t  *x, const int *incx, dcomplex_t  *y, const int *incy);
00058 
00059 
00060   //
00061   // Level 2
00062   //
00063   void   BLAS_SGEMV(const char *trans, const int *m, const int *n, const float    *alpha, const float    *a, const int *lda, const float    *x, const int *incx, const float    *beta, float    *y, const int *incy) ;
00064   void   BLAS_DGEMV(const char *trans, const int *m, const int *n, const double   *alpha, const double   *a, const int *lda, const double   *x, const int *incx, const double   *beta, double   *y, const int *incy) ;
00065   void   BLAS_CGEMV(const char *trans, const int *m, const int *n, const fcomplex_t *alpha, const fcomplex_t *a, const int *lda, const fcomplex_t *x, const int *incx, const fcomplex_t *beta, fcomplex_t *y, const int *incy) ;
00066   void   BLAS_ZGEMV(const char *trans, const int *m, const int *n, const dcomplex_t *alpha, const dcomplex_t *a, const int *lda, const dcomplex_t *x, const int *incx, const dcomplex_t *beta, dcomplex_t *y, const int *incy) ;
00067 
00068   void   BLAS_SGER (const int *m, const int *n, const float * alpha, const float * x, const int *incx, const float * y, const int *incy, float *a,  const int *lda);
00069   void   BLAS_DGER (const int *m, const int *n, const double *alpha, const double *x, const int *incx, const double *y, const int *incy, double *a, const int *lda);
00070 
00071   void   BLAS_CGERU(const int *m, const int *n, const fcomplex_t *alpha, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy, fcomplex_t *a, const int *lda);
00072   void   BLAS_ZGERU(const int *m, const int *n, const dcomplex_t *alpha, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy, dcomplex_t *a, const int *lda);
00073 
00074   void   BLAS_CGERC(const int *m, const int *n, const fcomplex_t *alpha, const fcomplex_t *x, const int *incx, const fcomplex_t *y, const int *incy, fcomplex_t *a, const int *lda);
00075   void   BLAS_ZGERC(const int *m, const int *n, const dcomplex_t *alpha, const dcomplex_t *x, const int *incx, const dcomplex_t *y, const int *incy, dcomplex_t *a, const int *lda);
00076 
00077 
00078   //
00079   // Level 3
00080   //
00081   void   BLAS_SGEMM(const char *transa, const char *transb, const int *m, const int *n, const int *k, const float      *alpha, const float      *a, const int *lda, const float      *b, const int *ldb, const float      *beta, float      *c, const int *ldc);
00082   void   BLAS_DGEMM(const char *transa, const char *transb, const int *m, const int *n, const int *k, const double     *alpha, const double     *a, const int *lda, const double     *b, const int *ldb, const double     *beta, double     *c, const int *ldc);
00083   void   BLAS_CGEMM(const char *transa, const char *transb, const int *m, const int *n, const int *k, const fcomplex_t *alpha, const fcomplex_t *a, const int *lda, const fcomplex_t *b, const int *ldb, const fcomplex_t *beta, fcomplex_t *c, const int *ldc);
00084   void   BLAS_ZGEMM(const char *transa, const char *transb, const int *m, const int *n, const int *k, const dcomplex_t *alpha, const dcomplex_t *a, const int *lda, const dcomplex_t *b, const int *ldb, const dcomplex_t *beta, dcomplex_t *c, const int *ldc);
00085 
00086   void   BLAS_SSYRK ( const char* uplo, const char* trans, const int* n, const int* k, const float* alpha,
00087                       const float* a, const int* lda, const float* beta, float* c, const int* ldc );
00088   void   BLAS_DSYRK ( const char* uplo, const char* trans, const int* n, const int* k, const double* alpha,
00089                       const double* a, const int* lda, const double* beta, double* c, const int* ldc );
00090   void   BLAS_CSYRK ( const char* uplo, const char* trans, const int* n, const int* k, const fcomplex_t* alpha,
00091                       const fcomplex_t* a, const int* lda, const fcomplex_t* beta, fcomplex_t* c, const int* ldc );
00092   void   BLAS_ZSYRK ( const char* uplo, const char* trans, const int* n, const int* k, const dcomplex_t* alpha,
00093                       const dcomplex_t* a, const int* lda, const dcomplex_t* beta, dcomplex_t* c, const int* ldc );
00094   void   BLAS_CHERK ( const char* uplo, const char* trans, const int* n, const int* k, const float* alpha,
00095                       const fcomplex_t* a, const int* lda, const float* beta, fcomplex_t* c, const int* ldc );
00096   void   BLAS_ZHERK ( const char* uplo, const char* trans, const int* n, const int* k, const double* alpha,
00097                       const dcomplex_t* a, const int* lda, const double* beta, dcomplex_t* c, const int* ldc );
00098 
00099   void BLAS_STRSM( const char* side, const char* uplo, const char* transa, const char* diag, const int* m,
00100                    const int* n, float const* alpha, float const* a, int const* lda, float* b, int const* ldb );
00101   void BLAS_DTRSM( const char* side, const char* uplo, const char* transa, const char* diag, const int* m,
00102                    const int* n, double const* alpha, double const* a, int const* lda, double* b, int const* ldb );
00103   void BLAS_CTRSM( const char* side, const char* uplo, const char* transa, const char* diag, const int* m,
00104                    const int* n, fcomplex_t const* alpha, fcomplex_t const* a, int const* lda, fcomplex_t* b, int const* ldb );
00105   void BLAS_ZTRSM( const char* side, const char* uplo, const char* transa, const char* diag, const int* m,
00106                    const int* n, dcomplex_t const* alpha, dcomplex_t const* a, int const* lda, dcomplex_t* b, int const* ldb );
00107 
00108 }
00109 
00110 #endif // BOOST_NUMERIC_BINDINGS_BLAS_BLAS_H

Generated on Wed Nov 23 18:59:58 2011 for FreeCAD by  doxygen 1.6.1