Teuchos_BLAS_wrappers.hpp

Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 // 
00004 //                    Teuchos: Common Tools Package
00005 //                 Copyright (2004) Sandia Corporation
00006 // 
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 // 
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //  
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //  
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00025 // 
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 // Kris
00030 // 07.08.03 -- Move into Teuchos package/namespace
00031 
00032 #ifndef _TEUCHOS_BLAS_WRAPPERS_HPP_
00033 #define _TEUCHOS_BLAS_WRAPPERS_HPP_
00034 
00035 #include "Teuchos_ConfigDefs.hpp"
00036 
00041 /* Define fcd (Fortran Teuchos_fcd descriptor) for non-standard situations */
00042 
00043 #if defined(CRAY_T3X) || defined(INTEL_CXML) || defined(INTEL_MKL)
00044 
00045 
00046 #if defined(CRAY_T3X)
00047 
00048 #include <fortran.h>
00049 #define PREFIX
00050 #define Teuchos_fcd fcd 
00051 
00052 #define DROTG_F77   F77_FUNC(srotg,SROTG)
00053 #define DASUM_F77   F77_FUNC(sasum,SASUM) 
00054 #define DAXPY_F77   F77_FUNC(saxpy,SAXPY)
00055 #define DCOPY_F77   F77_FUNC(scopy,SCOPY)
00056 #define DDOT_F77    F77_FUNC(sdot,SDOT)
00057 #define DNRM2_F77   F77_FUNC(snrm2,SNRM2)
00058 #define DSCAL_F77   F77_FUNC(sscal,SSCAL)
00059 #define IDAMAX_F77  F77_FUNC(isamax,ISAMAX)
00060 #define DGEMV_F77   F77_FUNC(sgemv,SGEMV)
00061 #define DGER_F77    F77_FUNC(sger,SGER)
00062 #define DTRMV_F77   F77_FUNC(strmv,STRMV)
00063 #define DGEMM_F77   F77_FUNC(sgemm,SGEMM)
00064 #define DSYMM_F77   F77_FUNC(ssymm,SSYMM)
00065 #define DTRMM_F77   F77_FUNC(strmm,STRMM)
00066 #define DTRSM_F77   F77_FUNC(strsm,STRSM)
00067  
00068 #ifdef HAVE_TEUCHOS_COMPLEX
00069 
00070 #define ZROTG_F77   F77_FUNC(crotg,CROTG)
00071 #define ZASUM_F77   F77_FUNC(scasum,SCASUM) 
00072 #define ZAXPY_F77   F77_FUNC(caxpy,CAXPY)
00073 #define ZCOPY_F77   F77_FUNC(ccopy,CCOPY)
00074 #define ZDOT_F77    F77_FUNC(cdotc,CDOTC)
00075 #define ZNRM2_F77   F77_FUNC(scnrm2,SCNRM2)
00076 #define ZSCAL_F77   F77_FUNC(cscal,CSCAL)
00077 #define IZAMAX_F77  F77_FUNC(icamax,ICAMAX)
00078 #define ZGEMV_F77   F77_FUNC(cgemv,CGEMV)
00079 #define ZGER_F77    F77_FUNC(cgerc,CGERC)
00080 #define ZTRMV_F77   F77_FUNC(ctrmv,CTRMV)
00081 #define ZGEMM_F77   F77_FUNC(cgemm,CGEMM)
00082 #define ZSYMM_F77   F77_FUNC(csymm,CSYMM)
00083 #define ZTRMM_F77   F77_FUNC(ctrmm,CTRMM)
00084 #define ZTRSM_F77   F77_FUNC(ctrsm,CTRSM)
00085 
00086 #endif /* HAVE_TEUCHOS_COMPLEX */
00087 
00088 #elif defined(INTEL_CXML)
00089 
00090 #define PREFIX __stdcall 
00091 #define Teuchos_fcd const char *, unsigned int 
00092 
00093 #define DROTG_F77   F77_FUNC(drotg,DROTG)
00094 #define DASUM_F77   F77_FUNC(dasum,DASUM)
00095 #define DAXPY_F77   F77_FUNC(daxpy,DAXPY)
00096 #define DCOPY_F77   F77_FUNC(dcopy,DCOPY)
00097 #define DDOT_F77    F77_FUNC(ddot,DDOT)  
00098 #define DNRM2_F77   F77_FUNC(dnrm2,DNRM2)
00099 #define DSCAL_F77   F77_FUNC(dscal,DSCAL)
00100 #define IDAMAX_F77  F77_FUNC(idamax,IDAMAX)
00101 #define DGEMV_F77   F77_FUNC(dgemv,DGEMV)
00102 #define DGER_F77    F77_FUNC(dger,DGER)
00103 #define DTRMV_F77   F77_FUNC(dtrmv,DTRMV)
00104 #define DGEMM_F77   F77_FUNC(dgemm,DGEMM)
00105 #define DSYMM_F77   F77_FUNC(dsymm,DSYMM)
00106 #define DTRMM_F77   F77_FUNC(dtrmm,DTRMM)
00107 #define DTRSM_F77   F77_FUNC(dtrsm,DTRSM)
00108 
00109 #ifdef HAVE_TEUCHOS_COMPLEX
00110 
00111 #define ZROTG_F77   F77_FUNC(zrotg,ZROTG)
00112 #define ZASUM_F77   F77_FUNC(dzasum,DZASUM)
00113 #define ZAXPY_F77   F77_FUNC(zaxpy,ZAXPY)
00114 #define ZCOPY_F77   F77_FUNC(zcopy,ZCOPY)
00115 #define ZDOT_F77    F77_FUNC(zdotc,ZDOTC)  
00116 #define ZNRM2_F77   F77_FUNC(dznrm2,DZNRM2)
00117 #define ZSCAL_F77   F77_FUNC(zscal,ZSCAL)
00118 #define IZAMAX_F77  F77_FUNC(izamax,IZAMAX)
00119 #define ZGEMV_F77   F77_FUNC(zgemv,ZGEMV)
00120 #define ZGER_F77    F77_FUNC(zgerc,ZGERC)
00121 #define ZTRMV_F77   F77_FUNC(ztrmv,ZTRMV)
00122 #define ZGEMM_F77   F77_FUNC(zgemm,ZGEMM)
00123 #define ZSYMM_F77   F77_FUNC(zsymm,ZSYMM)
00124 #define ZTRMM_F77   F77_FUNC(ztrmm,ZTRMM)
00125 #define ZTRSM_F77   F77_FUNC(ztrsm,ZTRSM)
00126 
00127 #endif /* HAVE_TEUCHOS_COMPLEX */
00128 
00129 #elif defined(INTEL_MKL)
00130 
00131 #define PREFIX
00132 #define Teuchos_fcd const char *
00133 
00134 #define DROTG_F77   F77_FUNC(drotg,DROTG)
00135 #define DASUM_F77   F77_FUNC(dasum,DASUM)
00136 #define DAXPY_F77   F77_FUNC(daxpy,DAXPY)
00137 #define DCOPY_F77   F77_FUNC(dcopy,DCOPY)
00138 #define DDOT_F77    F77_FUNC(ddot,DDOT)  
00139 #define DNRM2_F77   F77_FUNC(dnrm2,DNRM2)
00140 #define DSCAL_F77   F77_FUNC(dscal,DSCAL)
00141 #define IDAMAX_F77  F77_FUNC(idamax,IDAMAX)
00142 #define DGEMV_F77   F77_FUNC(dgemv,DGEMV)
00143 #define DGER_F77    F77_FUNC(dger,DGER)
00144 #define DTRMV_F77   F77_FUNC(dtrmv,DTRMV)
00145 #define DGEMM_F77   F77_FUNC(dgemm,DGEMM)
00146 #define DSYMM_F77   F77_FUNC(dsymm,DSYMM)
00147 #define DTRMM_F77   F77_FUNC(dtrmm,DTRMM)
00148 #define DTRSM_F77   F77_FUNC(dtrsm,DTRSM)
00149 
00150 #ifdef HAVE_TEUCHOS_COMPLEX
00151 
00152 #define ZROTG_F77   F77_FUNC(zrotg,ZROTG)
00153 #define ZASUM_F77   F77_FUNC(dzasum,DZASUM)
00154 #define ZAXPY_F77   F77_FUNC(zaxpy,ZAXPY)
00155 #define ZCOPY_F77   F77_FUNC(zcopy,ZCOPY)
00156 #define ZDOT_F77    F77_FUNC(zdotc,ZDOTC)  
00157 #define ZNRM2_F77   F77_FUNC(dznrm2,DZNRM2)
00158 #define ZSCAL_F77   F77_FUNC(zscal,ZSCAL)
00159 #define IZAMAX_F77  F77_FUNC(izamax,IZAMAX)
00160 #define ZGEMV_F77   F77_FUNC(zgemv,ZGEMV)
00161 #define ZGER_F77    F77_FUNC(zgerc,ZGERC)
00162 #define ZTRMV_F77   F77_FUNC(ztrmv,ZTRMV)
00163 #define ZGEMM_F77   F77_FUNC(zgemm,ZGEMM)
00164 #define ZSYMM_F77   F77_FUNC(zsymm,ZSYMM)
00165 #define ZTRMM_F77   F77_FUNC(ztrmm,ZTRMM)
00166 #define ZTRSM_F77   F77_FUNC(ztrsm,ZTRSM)
00167 
00168 #endif /* HAVE_TEUCHOS_COMPLEX */
00169 
00170 #endif 
00171 
00172 /* All three of these machines use a simple uppercase mangling of Fortran names */
00173 
00174 /* if F77_FUNC is defined undefine it because we want to redefine */
00175 
00176 #ifdef F77_FUNC
00177 #undef F77_FUNC
00178 #endif
00179 
00180 
00181 #define F77_FUNC(lcase,UCASE) PREFIX UCASE
00182 
00183 #else /* Define Teuchos_fcd for all other machines */
00184 
00185 #define PREFIX
00186 #define Teuchos_fcd const char * 
00187 
00188 /* In the future use autoconf's definition of F77_FUNC */ 
00189 
00190 #ifndef HAVE_CONFIG_H
00191 
00192 #ifdef F77_FUNC
00193 #undef F77_FUNC
00194 #endif
00195 
00196 #ifdef TRILINOS_HAVE_NO_FORTRAN_UNDERSCORE
00197 #define F77_FUNC(lcase,UCASE) lcase
00198 #else /* TRILINOS_HAVE_NO_FORTRAN_UNDERSCORE not defined*/
00199 #define F77_FUNC(lcase,UCASE) lcase ## _
00200 #endif /* TRILINOS_HAVE_NO_FORTRAN_UNDERSCORE */
00201 
00202 #endif /* HAVE_CONFIG_H */
00203 
00204 #define DROTG_F77   F77_FUNC(drotg,DROTG)
00205 #define DASUM_F77   F77_FUNC(dasum,DASUM)
00206 #define DAXPY_F77   F77_FUNC(daxpy,DAXPY)
00207 #define DCOPY_F77   F77_FUNC(dcopy,DCOPY)
00208 #define DDOT_F77    F77_FUNC(ddot,DDOT)
00209 #define DNRM2_F77   F77_FUNC(dnrm2,DNRM2)
00210 #define DSCAL_F77   F77_FUNC(dscal,DSCAL)
00211 #define IDAMAX_F77  F77_FUNC(idamax,IDAMAX)
00212 #define DGEMV_F77   F77_FUNC(dgemv,DGEMV)
00213 #define DGER_F77    F77_FUNC(dger,DGER)
00214 #define DTRMV_F77   F77_FUNC(dtrmv,DTRMV)
00215 #define DGEMM_F77   F77_FUNC(dgemm,DGEMM) 
00216 #define DSYMM_F77   F77_FUNC(dsymm,DSYMM)
00217 #define DTRMM_F77   F77_FUNC(dtrmm,DTRMM)
00218 #define DTRSM_F77   F77_FUNC(dtrsm,DTRSM)
00219 
00220 #ifdef HAVE_TEUCHOS_COMPLEX
00221 
00222 #define ZROTG_F77   F77_FUNC(zrotg,ZROTG)
00223 #define ZASUM_F77   F77_FUNC(dzasum,DZASUM)
00224 #define ZAXPY_F77   F77_FUNC(zaxpy,ZAXPY)
00225 #define ZCOPY_F77   F77_FUNC(zcopy,ZCOPY)
00226 #define ZDOT_F77    F77_FUNC(zdotc,ZDOTC)  
00227 #define ZNRM2_F77   F77_FUNC(dznrm2,DZNRM2)
00228 #define ZSCAL_F77   F77_FUNC(zscal,ZSCAL)
00229 #define IZAMAX_F77  F77_FUNC(izamax,IZAMAX)
00230 #define ZGEMV_F77   F77_FUNC(zgemv,ZGEMV)
00231 #define ZGER_F77    F77_FUNC(zgerc,ZGERC)
00232 #define ZTRMV_F77   F77_FUNC(ztrmv,ZTRMV)
00233 #define ZGEMM_F77   F77_FUNC(zgemm,ZGEMM)
00234 #define ZSYMM_F77   F77_FUNC(zsymm,ZSYMM)
00235 #define ZTRMM_F77   F77_FUNC(ztrmm,ZTRMM)
00236 #define ZTRSM_F77   F77_FUNC(ztrsm,ZTRSM)
00237 
00238 #endif /* HAVE_TEUCHOS_COMPLEX */
00239 
00240 #endif
00241 
00242 
00243 /* Explicitly define each F77 name for all BLAS kernels */
00244 
00245 #define SROTG_F77   F77_FUNC(srotg,SROTG)
00246 #define SSCAL_F77   F77_FUNC(sscal,SSCAL) 
00247 #define SCOPY_F77   F77_FUNC(scopy,SCOPY)
00248 #define SAXPY_F77   F77_FUNC(saxpy,SAXPY)
00249 #define SDOT_F77    F77_FUNC(sdot,SDOT)
00250 #define SNRM2_F77   F77_FUNC(snrm2,SNRM2)
00251 #define SASUM_F77   F77_FUNC(sasum,SASUM)
00252 #define ISAMAX_F77  F77_FUNC(isamax,ISAMAX)
00253 
00254 #define SGEMV_F77   F77_FUNC(sgemv,SGEMV)
00255 #define SGER_F77    F77_FUNC(sger,SGER)
00256 #define STRMV_F77   F77_FUNC(strmv,STRMV)
00257 #define SGEMM_F77   F77_FUNC(sgemm,SGEMM)
00258 #define SSYMM_F77   F77_FUNC(ssymm,SSYMM)
00259 #define STRMM_F77   F77_FUNC(strmm,STRMM)
00260 #define STRSM_F77   F77_FUNC(strsm,STRSM)
00261 
00262 #ifdef HAVE_TEUCHOS_COMPLEX
00263 
00264 #define CROTG_F77   F77_FUNC(crotg,CROTG)
00265 #define CASUM_F77   F77_FUNC(scasum,SCASUM) 
00266 #define CAXPY_F77   F77_FUNC(caxpy,CAXPY)
00267 #define CCOPY_F77   F77_FUNC(ccopy,CCOPY)
00268 #define CDOT_F77    F77_FUNC(cdotc,CDOTC)
00269 #define CNRM2_F77   F77_FUNC(scnrm2,SCNRM2)
00270 #define CSCAL_F77   F77_FUNC(cscal,CSCAL)
00271 #define ICAMAX_F77  F77_FUNC(icamax,ICAMAX)
00272 #define CGEMV_F77   F77_FUNC(cgemv,CGEMV)
00273 #define CGER_F77    F77_FUNC(cgerc,CGERC)
00274 #define CTRMV_F77   F77_FUNC(ctrmv,CTRMV)
00275 #define CGEMM_F77   F77_FUNC(cgemm,CGEMM)
00276 #define CSYMM_F77   F77_FUNC(csymm,CSYMM)
00277 #define CTRMM_F77   F77_FUNC(ctrmm,CTRMM)
00278 #define CTRSM_F77   F77_FUNC(ctrsm,CTRSM)
00279 
00280 #endif /* HAVE_TEUCHOS_COMPLEX */
00281 
00282 #ifdef __cplusplus
00283 extern "C" {
00284 #endif
00285 
00286 
00287 /* Double precision BLAS 1 */
00288 void PREFIX DROTG_F77(double* da, double* db, double* c, double* s);
00289 double PREFIX DASUM_F77(const int* n, const double x[], const int* incx);
00290 void PREFIX DAXPY_F77(const int* n, const double* alpha, const double x[], const int* incx, double y[], const int* incy);
00291 void PREFIX DCOPY_F77(const int* n, const double *x, const int* incx, double *y, const int* incy);
00292 double PREFIX DDOT_F77(const int* n, const double x[], const int* incx, const double y[], const int* incy);
00293 double PREFIX DNRM2_F77(const int* n, const double x[], const int* incx); 
00294 void PREFIX DSCAL_F77(const int* n, const double* alpha, double *x, const int* incx);
00295 int PREFIX IDAMAX_F77(const int* n, const double *x, const int* incx);
00296 
00297 /* Double complex precision BLAS 1 */
00298 #ifdef HAVE_TEUCHOS_COMPLEX
00299 
00300 void PREFIX ZROTG_F77(complex<double>* da, complex<double>* db, double* c, complex<double>* s);
00301 double PREFIX ZASUM_F77(const int* n, const complex<double> x[], const int* incx);
00302 void PREFIX ZAXPY_F77(const int* n, const complex<double>* alpha, const complex<double> x[], const int* incx, complex<double> y[], const int* incy);
00303 void PREFIX ZCOPY_F77(const int* n, const complex<double> *x, const int* incx, complex<double> *y, const int* incy);
00304 complex<double> PREFIX ZDOT_F77(const int* n, const complex<double> x[], const int* incx, const complex<double> y[], const int* incy);
00305 double PREFIX ZNRM2_F77(const int* n, const complex<double> x[], const int* incx); 
00306 void PREFIX ZSCAL_F77(const int* n, const complex<double>* alpha, complex<double> *x, const int* incx);
00307 int PREFIX IZAMAX_F77(const int* n, const complex<double> *x, const int* incx);
00308 
00309 #endif
00310 
00311 /* Single precision BLAS 1 */ 
00312 void PREFIX SROTG_F77(float* da, float* db, float* c, float* s);
00313 float PREFIX SASUM_F77(const int* n, const float x[], const int* incx);
00314 void PREFIX SAXPY_F77(const int* n, const float* alpha, const float x[], const int* incx, float y[], const int* incy);
00315 void PREFIX SCOPY_F77(const int* n, const float *x, const int* incx, float *y, const int* incy);
00316 float PREFIX SDOT_F77(const int* n, const float x[], const int* incx, const float y[], const int* incy);
00317 float PREFIX SNRM2_F77(const int* n, const float x[], const int* incx); 
00318 void PREFIX SSCAL_F77(const int* n, const float* alpha, float *x, const int* incx);
00319 int PREFIX ISAMAX_F77(const int* n, const float *x, const int* incx);
00320 
00321 /* Single complex precision BLAS 1 */ 
00322 #ifdef HAVE_TEUCHOS_COMPLEX
00323 
00324 void PREFIX CROTG_F77(complex<float>* da, complex<float>* db, float* c, complex<float>* s);
00325 float PREFIX CASUM_F77(const int* n, const complex<float> x[], const int* incx);
00326 void PREFIX CAXPY_F77(const int* n, const complex<float>* alpha, const complex<float> x[], const int* incx, complex<float> y[], const int* incy);
00327 void PREFIX CCOPY_F77(const int* n, const complex<float> *x, const int* incx, complex<float> *y, const int* incy);
00328 complex<float> PREFIX CDOT_F77(const int* n, const complex<float> x[], const int* incx, const complex<float> y[], const int* incy);
00329 float PREFIX CNRM2_F77(const int* n, const complex<float> x[], const int* incx); 
00330 void PREFIX CSCAL_F77(const int* n, const complex<float>* alpha, complex<float> *x, const int* incx);
00331 int PREFIX ICAMAX_F77(const int* n, const complex<float> *x, const int* incx);
00332 
00333 #endif /* HAVE_TEUCHOS_COMPLEX */
00334 
00335 /* Double precision BLAS 2 */
00336 void PREFIX DGEMV_F77(Teuchos_fcd, const int* m, const int* n, const double* alpha, const double A[], const int* lda,
00337                  const double x[], const int* incx, const double* beta, double y[], const int* incy);
00338 void PREFIX DTRMV_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, const int *n, 
00339                 const double *a, const int *lda, double *x, const int *incx); 
00340 void PREFIX DGER_F77(const int *m, const int *n, const double *alpha, const double *x, const int *incx, const double *y,
00341                const int *incy, double *a, const int *lda);
00342 
00343 /* Double precision BLAS 2 */
00344 #ifdef HAVE_TEUCHOS_COMPLEX
00345 
00346 void PREFIX ZGEMV_F77(Teuchos_fcd, const int* m, const int* n, const complex<double>* alpha, const complex<double> A[], const int* lda,
00347                  const complex<double> x[], const int* incx, const complex<double>* beta, complex<double> y[], const int* incy);
00348 void PREFIX ZTRMV_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, const int *n, 
00349                 const complex<double> *a, const int *lda, complex<double> *x, const int *incx); 
00350 void PREFIX ZGER_F77(const int *m, const int *n, const complex<double> *alpha, const complex<double> *x, const int *incx, const complex<double> *y,
00351                const int *incy, complex<double> *a, const int *lda);
00352 
00353 #endif /* HAVE_TEUCHOS_COMPLEX */
00354 
00355 /* Single precision BLAS 2 */
00356 void PREFIX SGEMV_F77(Teuchos_fcd, const int* m, const int* n, const float* alpha, const float A[], const int* lda,
00357                  const float x[], const int* incx, const float* beta, float y[], const int* incy);
00358 void PREFIX STRMV_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, const int *n,
00359                 const float *a, const int *lda, float *x, const int *incx); 
00360 void PREFIX SGER_F77(const int *m, const int *n, const float *alpha, const float *x, const int *incx, const float *y,
00361                const int *incy, float *a, const int *lda);
00362 
00363 /* Single complex precision BLAS 2 */
00364 #ifdef HAVE_TEUCHOS_COMPLEX
00365 
00366 void PREFIX CGEMV_F77(Teuchos_fcd, const int* m, const int* n, const complex<float>* alpha, const complex<float> A[], const int* lda,
00367                  const complex<float> x[], const int* incx, const complex<float>* beta, complex<float> y[], const int* incy);
00368 void PREFIX CTRMV_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, const int *n,
00369                 const complex<float> *a, const int *lda, complex<float> *x, const int *incx); 
00370 void PREFIX CGER_F77(const int *m, const int *n, const complex<float> *alpha, const complex<float> *x, const int *incx, const complex<float> *y,
00371                const int *incy, complex<float> *a, const int *lda);
00372 
00373 #endif /* HAVE_TEUCHOS_COMPLEX */
00374 
00375 /* Double precision BLAS 3 */
00376 void PREFIX DGEMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * 
00377                 n, const int *k, const double *alpha, const double *a, const int *lda, 
00378                 const double *b, const int *ldb, const double *beta, double *c, const int *ldc);
00379 void PREFIX DSYMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * n,
00380                 const double *alpha, const double *a, const int *lda, 
00381                 const double *b, const int *ldb, const double *beta, double *c, const int *ldc);
00382 void PREFIX DTRMM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd,  
00383                 const int *m, const int *n, const double *alpha, const double *a, const int * lda, double *b, const int *ldb);
00384 void PREFIX DTRSM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, 
00385                 const int *m, const int *n, const double *alpha, const double *a, const int *
00386                 lda, double *b, const int *ldb);
00387 
00388 /* Double complex precision BLAS 3 */
00389 #ifdef HAVE_TEUCHOS_COMPLEX
00390 
00391 void PREFIX ZGEMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * 
00392                 n, const int *k, const complex<double> *alpha, const complex<double> *a, const int *lda, 
00393                 const complex<double> *b, const int *ldb, const complex<double> *beta, complex<double> *c, const int *ldc);
00394 void PREFIX ZSYMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * n,
00395                 const complex<double> *alpha, const complex<double> *a, const int *lda, 
00396                 const complex<double> *b, const int *ldb, const complex<double> *beta, complex<double> *c, const int *ldc);
00397 void PREFIX ZTRMM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd,  
00398                 const int *m, const int *n, const complex<double> *alpha, const complex<double> *a, const int * lda, complex<double> *b, const int *ldb);
00399 void PREFIX ZTRSM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, 
00400                 const int *m, const int *n, const complex<double> *alpha, const complex<double> *a, const int *
00401                 lda, complex<double> *b, const int *ldb);
00402 
00403 #endif /* HAVE_TEUCHOS_COMPLEX */
00404 
00405 /* Single precision BLAS 3 */
00406 void PREFIX SGEMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int *
00407                 n, const int *k, const float *alpha, const float *a, const int *lda, 
00408                 const float *b, const int *ldb, const float *beta, float *c, const int *ldc);
00409 void PREFIX SSYMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * n,
00410                 const float *alpha, const float *a, const int *lda, 
00411                 const float *b, const int *ldb, const float *beta, float *c, const int *ldc);
00412 void PREFIX STRMM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, 
00413                 const int *m, const int *n, const float *alpha, const float *a, const int * lda, float *b, const int *ldb);
00414 void PREFIX STRSM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd,
00415                 const int *m, const int *n, const float *alpha, const float *a, const int *
00416                 lda, float *b, const int *ldb);
00417 
00418 /* Single complex precision BLAS 3 */
00419 #ifdef HAVE_TEUCHOS_COMPLEX
00420 
00421 void PREFIX CGEMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int *
00422                 n, const int *k, const complex<float> *alpha, const complex<float> *a, const int *lda, 
00423                 const complex<float> *b, const int *ldb, const complex<float> *beta, complex<float> *c, const int *ldc);
00424 void PREFIX CSYMM_F77(Teuchos_fcd, Teuchos_fcd, const int *m, const int * n,
00425                 const complex<float> *alpha, const complex<float> *a, const int *lda, 
00426                 const complex<float> *b, const int *ldb, const complex<float> *beta, complex<float> *c, const int *ldc);
00427 void PREFIX CTRMM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, 
00428                 const int *m, const int *n, const complex<float> *alpha, const complex<float> *a, const int * lda, complex<float> *b, const int *ldb);
00429 void PREFIX CTRSM_F77(Teuchos_fcd, Teuchos_fcd, Teuchos_fcd, Teuchos_fcd,
00430                 const int *m, const int *n, const complex<float> *alpha, const complex<float> *a, const int *
00431                 lda, complex<float> *b, const int *ldb);
00432 
00433 #endif /* HAVE_TEUCHOS_COMPLEX */
00434 
00435 #ifdef __cplusplus
00436 }
00437 #endif
00438 
00439 #endif // end of TEUCHOS_BLAS_WRAPPERS_HPP_

Generated on Thu Sep 18 12:41:17 2008 for Teuchos - Trilinos Tools Package by doxygen 1.3.9.1