copasi API  0.1
copasi/blaswrap.h
Go to the documentation of this file.
00001 // Begin CVS Header
00002 //   $Source: /fs/turing/cvs/copasi_dev/copasi/blaswrap.h,v $
00003 //   $Revision: 1.12 $
00004 //   $Name: Build-33 $
00005 //   $Author: shoops $
00006 //   $Date: 2007/12/13 13:31:09 $
00007 // End CVS Header
00008 
00009 // Copyright (C) 2007 by Pedro Mendes, Virginia Tech Intellectual
00010 // Properties, Inc. and EML Research, gGmbH.
00011 // All rights reserved.
00012 
00013 #ifndef __BLAS_H
00014 #define __BLAS_H
00015 
00016 #ifdef min
00017 # undef min
00018 #endif // min
00019 
00020 #ifdef max
00021 # undef max
00022 #endif // max
00023 
00024 extern "C"
00025   {
00026 #ifdef USE_MKL
00027 # include "mkl_blas.h"
00028 #  define daxpy_ daxpy
00029 #  define dcopy_ dcopy
00030 #  define ddot_ ddot
00031 #  define dgemm_ dgemm
00032 #  define dnrm2_ dnrm2
00033 #  define dscal_ dscal
00034 #  define idamax_ idamax
00035 #endif // USE_MKL
00036 
00037 #if (defined USE_CLAPACK || defined USE_LAPACK)
00038 # ifdef USE_CLAPACK
00039 #  define daxpy_ f2c_daxpy
00040 #  define dcopy_ f2c_dcopy
00041 #  define ddot_ f2c_ddot
00042 #  define dgemm_ f2c_dgemm
00043 #  define dnrm2_ f2c_dnrm2
00044 #  define dscal_ f2c_dscal
00045 #  define idamax_ f2c_idamax
00046 # endif // USE_CLAPACK
00047 # include "f2c.h"
00048 # include "blas.h"
00049 #endif // USE_CLAPACK || USE_LAPACK
00050 
00051 #ifdef USE_SUNPERF
00052 # include "sunperf.h"
00053 #endif // USE_SUNPERF
00054   }
00055 
00056 #ifdef Darwin
00057 # define vector
00058 # include "Accelerate.h"
00059 # define daxpy_(N, ALPHA, X, INCX, Y, INCY) \
00060     cblas_daxpy(*N, *ALPHA, X, *INCX, Y, *INCY)
00061 # define dcopy_(N, X, INCX, Y, INCY) \
00062     cblas_dcopy(*N, X, *INCX, Y, *INCY)
00063 # define ddot_(N, X, INCX, Y, INCY) \
00064     cblas_ddot(*N, X, *INCX, Y, *INCY)
00065 # define dgemm_(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC) \
00066     cblas_dgemm(CblasColMajor, \
00067                 (*TRANSA == 'N' ? CblasNoTrans: CblasTrans), \
00068                 (*TRANSB == 'N' ? CblasNoTrans: CblasTrans), \
00069                 *M, *N, *K, *ALPHA, A, *LDA, B, *LDB, *BETA, C, *LDC)
00070 # define dscal_(N, ALPHA, X, INCX) cblas_dscal(*N, *ALPHA, X *INCX)
00071 # define dnrm2_(N, X, INCX) cblas_dnrm2(*N, X, *INCX)
00072 # define idamax_(N, X, INCX) \
00073     cblas_idamax(*N, X, *INCX)
00074 # undef vector
00075 # define vector vector
00076 using std::isnan;
00077 #endif // Darwin
00078 
00079 #ifdef min
00080 # undef min
00081 #endif // min
00082 
00083 #ifdef max
00084 # undef max
00085 #endif // max
00086 
00087 #ifdef WIN32
00088 //# define min _cpp_min
00089 //# define max _cpp_max
00090 #endif // WIN32
00091 
00092 #endif // __BLAS_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines