Initial commit.

This commit is contained in:
2018-12-06 16:01:56 +01:00
parent 10867b60c2
commit 18eb3f6047
1011 changed files with 345688 additions and 10 deletions

View File

@@ -0,0 +1,574 @@
//
// Copyright (c) 2003--2009
// Toon Knapen, Karl Meerbergen, Kresimir Fresl,
// Thomas Klimpel and Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// THIS FILE IS AUTOMATICALLY GENERATED
// PLEASE DO NOT EDIT!
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_H
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_H
#include <boost/numeric/bindings/blas/detail/blas_names.h>
extern "C" {
//
// BLAS level1 routines
//
// Value-type variants of asum
float BLAS_SASUM( const fortran_int_t* n, const float* x,
const fortran_int_t* incx );
double BLAS_DASUM( const fortran_int_t* n, const double* x,
const fortran_int_t* incx );
float BLAS_SCASUM( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
double BLAS_DZASUM( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
// Value-type variants of axpy
void BLAS_SAXPY( const fortran_int_t* n, const float* a, const float* x,
const fortran_int_t* incx, float* y, const fortran_int_t* incy );
void BLAS_DAXPY( const fortran_int_t* n, const double* a, const double* x,
const fortran_int_t* incx, double* y, const fortran_int_t* incy );
void BLAS_CAXPY( const fortran_int_t* n, const void* a, const void* x,
const fortran_int_t* incx, void* y, const fortran_int_t* incy );
void BLAS_ZAXPY( const fortran_int_t* n, const void* a, const void* x,
const fortran_int_t* incx, void* y, const fortran_int_t* incy );
// Value-type variants of copy
void BLAS_SCOPY( const fortran_int_t* n, const float* x,
const fortran_int_t* incx, float* y, const fortran_int_t* incy );
void BLAS_DCOPY( const fortran_int_t* n, const double* x,
const fortran_int_t* incx, double* y, const fortran_int_t* incy );
void BLAS_CCOPY( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, void* y, const fortran_int_t* incy );
void BLAS_ZCOPY( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, void* y, const fortran_int_t* incy );
// Value-type variants of dot
float BLAS_SDOT( const fortran_int_t* n, const float* x,
const fortran_int_t* incx, const float* y, const fortran_int_t* incy );
double BLAS_DDOT( const fortran_int_t* n, const double* x,
const fortran_int_t* incx, const double* y,
const fortran_int_t* incy );
std::complex<float> BLAS_CDOTU( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, const void* y, const fortran_int_t* incy );
std::complex<double> BLAS_ZDOTU( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, const void* y, const fortran_int_t* incy );
// Value-type variants of dotc
std::complex<float> BLAS_CDOTC( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, const void* y, const fortran_int_t* incy );
std::complex<double> BLAS_ZDOTC( const fortran_int_t* n, const void* x,
const fortran_int_t* incx, const void* y, const fortran_int_t* incy );
// Value-type variants of iamax
fortran_int_t BLAS_ISAMAX( const fortran_int_t* n, const float* x,
const fortran_int_t* incx );
fortran_int_t BLAS_IDAMAX( const fortran_int_t* n, const double* x,
const fortran_int_t* incx );
fortran_int_t BLAS_ICAMAX( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
fortran_int_t BLAS_IZAMAX( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
// Value-type variants of nrm2
float BLAS_SNRM2( const fortran_int_t* n, const float* x,
const fortran_int_t* incx );
double BLAS_DNRM2( const fortran_int_t* n, const double* x,
const fortran_int_t* incx );
float BLAS_SCNRM2( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
double BLAS_DZNRM2( const fortran_int_t* n, const void* x,
const fortran_int_t* incx );
// Value-type variants of prec_dot
double BLAS_DSDOT( const fortran_int_t* n, const float* x,
const fortran_int_t* incx, const float* y, const fortran_int_t* incy );
// Value-type variants of rot
void BLAS_SROT( const fortran_int_t* n, float* x, const fortran_int_t* incx,
float* y, const fortran_int_t* incy, const float* c, const float* s );
void BLAS_DROT( const fortran_int_t* n, double* x, const fortran_int_t* incx,
double* y, const fortran_int_t* incy, const double* c,
const double* s );
void BLAS_CSROT( const fortran_int_t* n, void* x, const fortran_int_t* incx,
void* y, const fortran_int_t* incy, const float* c, const float* s );
void BLAS_ZDROT( const fortran_int_t* n, void* x, const fortran_int_t* incx,
void* y, const fortran_int_t* incy, const double* c, const double* s );
// Value-type variants of rotg
void BLAS_SROTG( float* a, float* b, float* c, float* s );
void BLAS_DROTG( double* a, double* b, double* c, double* s );
void BLAS_CROTG( void* a, void* b, float* c, void* s );
void BLAS_ZROTG( void* a, void* b, double* c, void* s );
// Value-type variants of rotm
void BLAS_SROTM( const fortran_int_t* n, float* x, const fortran_int_t* incx,
float* y, const fortran_int_t* incy, float* param );
void BLAS_DROTM( const fortran_int_t* n, double* x, const fortran_int_t* incx,
double* y, const fortran_int_t* incy, double* param );
// Value-type variants of rotmg
void BLAS_SROTMG( float* d1, float* d2, float* x1, const float* y1,
float* sparam );
void BLAS_DROTMG( double* d1, double* d2, double* x1, const double* y1,
double* dparam );
// Value-type variants of scal
void BLAS_SSCAL( const fortran_int_t* n, const float* a, float* x,
const fortran_int_t* incx );
void BLAS_DSCAL( const fortran_int_t* n, const double* a, double* x,
const fortran_int_t* incx );
void BLAS_CSSCAL( const fortran_int_t* n, const float* a, void* x,
const fortran_int_t* incx );
void BLAS_ZDSCAL( const fortran_int_t* n, const double* a, void* x,
const fortran_int_t* incx );
void BLAS_CSCAL( const fortran_int_t* n, const void* a, void* x,
const fortran_int_t* incx );
void BLAS_ZSCAL( const fortran_int_t* n, const void* a, void* x,
const fortran_int_t* incx );
// Value-type variants of swap
void BLAS_SSWAP( const fortran_int_t* n, float* x, const fortran_int_t* incx,
float* y, const fortran_int_t* incy );
void BLAS_DSWAP( const fortran_int_t* n, double* x, const fortran_int_t* incx,
double* y, const fortran_int_t* incy );
void BLAS_CSWAP( const fortran_int_t* n, void* x, const fortran_int_t* incx,
void* y, const fortran_int_t* incy );
void BLAS_ZSWAP( const fortran_int_t* n, void* x, const fortran_int_t* incx,
void* y, const fortran_int_t* incy );
//
// BLAS level2 routines
//
// Value-type variants of gbmv
void BLAS_SGBMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const fortran_int_t* kl,
const fortran_int_t* ku, const float* alpha, const float* a,
const fortran_int_t* lda, const float* x, const fortran_int_t* incx,
const float* beta, float* y, const fortran_int_t* incy );
void BLAS_DGBMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const fortran_int_t* kl,
const fortran_int_t* ku, const double* alpha, const double* a,
const fortran_int_t* lda, const double* x, const fortran_int_t* incx,
const double* beta, double* y, const fortran_int_t* incy );
void BLAS_CGBMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const fortran_int_t* kl,
const fortran_int_t* ku, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
void BLAS_ZGBMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const fortran_int_t* kl,
const fortran_int_t* ku, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
// Value-type variants of gemv
void BLAS_SGEMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const float* alpha, const float* a,
const fortran_int_t* lda, const float* x, const fortran_int_t* incx,
const float* beta, float* y, const fortran_int_t* incy );
void BLAS_DGEMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const double* alpha, const double* a,
const fortran_int_t* lda, const double* x, const fortran_int_t* incx,
const double* beta, double* y, const fortran_int_t* incy );
void BLAS_CGEMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
void BLAS_ZGEMV( const char* trans, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
// Value-type variants of ger
void BLAS_SGER( const fortran_int_t* m, const fortran_int_t* n,
const float* alpha, const float* x, const fortran_int_t* incx,
const float* y, const fortran_int_t* incy, float* a,
const fortran_int_t* lda );
void BLAS_DGER( const fortran_int_t* m, const fortran_int_t* n,
const double* alpha, const double* x, const fortran_int_t* incx,
const double* y, const fortran_int_t* incy, double* a,
const fortran_int_t* lda );
// Value-type variants of gerc
void BLAS_CGERC( const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* x, const fortran_int_t* incx,
const void* y, const fortran_int_t* incy, void* a,
const fortran_int_t* lda );
void BLAS_ZGERC( const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* x, const fortran_int_t* incx,
const void* y, const fortran_int_t* incy, void* a,
const fortran_int_t* lda );
// Value-type variants of geru
void BLAS_CGERU( const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* x, const fortran_int_t* incx,
const void* y, const fortran_int_t* incy, void* a,
const fortran_int_t* lda );
void BLAS_ZGERU( const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* x, const fortran_int_t* incx,
const void* y, const fortran_int_t* incy, void* a,
const fortran_int_t* lda );
// Value-type variants of hbmv
void BLAS_CHBMV( const char* uplo, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
void BLAS_ZHBMV( const char* uplo, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
// Value-type variants of hemv
void BLAS_CHEMV( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* a, const fortran_int_t* lda, const void* x,
const fortran_int_t* incx, const void* beta, void* y,
const fortran_int_t* incy );
void BLAS_ZHEMV( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* a, const fortran_int_t* lda, const void* x,
const fortran_int_t* incx, const void* beta, void* y,
const fortran_int_t* incy );
// Value-type variants of her
void BLAS_CHER( const char* uplo, const fortran_int_t* n, const float* alpha,
const void* x, const fortran_int_t* incx, void* a,
const fortran_int_t* lda );
void BLAS_ZHER( const char* uplo, const fortran_int_t* n, const double* alpha,
const void* x, const fortran_int_t* incx, void* a,
const fortran_int_t* lda );
// Value-type variants of her2
void BLAS_CHER2( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* x, const fortran_int_t* incx, const void* y,
const fortran_int_t* incy, void* a, const fortran_int_t* lda );
void BLAS_ZHER2( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* x, const fortran_int_t* incx, const void* y,
const fortran_int_t* incy, void* a, const fortran_int_t* lda );
// Value-type variants of hpmv
void BLAS_CHPMV( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* ap, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
void BLAS_ZHPMV( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* ap, const void* x, const fortran_int_t* incx,
const void* beta, void* y, const fortran_int_t* incy );
// Value-type variants of hpr
void BLAS_CHPR( const char* uplo, const fortran_int_t* n, const float* alpha,
const void* x, const fortran_int_t* incx, void* ap );
void BLAS_ZHPR( const char* uplo, const fortran_int_t* n, const double* alpha,
const void* x, const fortran_int_t* incx, void* ap );
// Value-type variants of hpr2
void BLAS_CHPR2( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* x, const fortran_int_t* incx, const void* y,
const fortran_int_t* incy, void* ap );
void BLAS_ZHPR2( const char* uplo, const fortran_int_t* n, const void* alpha,
const void* x, const fortran_int_t* incx, const void* y,
const fortran_int_t* incy, void* ap );
// Value-type variants of sbmv
void BLAS_SSBMV( const char* uplo, const fortran_int_t* n,
const fortran_int_t* k, const float* alpha, const float* a,
const fortran_int_t* lda, const float* x, const fortran_int_t* incx,
const float* beta, float* y, const fortran_int_t* incy );
void BLAS_DSBMV( const char* uplo, const fortran_int_t* n,
const fortran_int_t* k, const double* alpha, const double* a,
const fortran_int_t* lda, const double* x, const fortran_int_t* incx,
const double* beta, double* y, const fortran_int_t* incy );
// Value-type variants of spmv
void BLAS_SSPMV( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* ap, const float* x, const fortran_int_t* incx,
const float* beta, float* y, const fortran_int_t* incy );
void BLAS_DSPMV( const char* uplo, const fortran_int_t* n,
const double* alpha, const double* ap, const double* x,
const fortran_int_t* incx, const double* beta, double* y,
const fortran_int_t* incy );
// Value-type variants of spr
void BLAS_SSPR( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* x, const fortran_int_t* incx, float* ap );
void BLAS_DSPR( const char* uplo, const fortran_int_t* n, const double* alpha,
const double* x, const fortran_int_t* incx, double* ap );
// Value-type variants of spr2
void BLAS_SSPR2( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* x, const fortran_int_t* incx, const float* y,
const fortran_int_t* incy, float* ap );
void BLAS_DSPR2( const char* uplo, const fortran_int_t* n,
const double* alpha, const double* x, const fortran_int_t* incx,
const double* y, const fortran_int_t* incy, double* ap );
// Value-type variants of symv
void BLAS_SSYMV( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* a, const fortran_int_t* lda, const float* x,
const fortran_int_t* incx, const float* beta, float* y,
const fortran_int_t* incy );
void BLAS_DSYMV( const char* uplo, const fortran_int_t* n,
const double* alpha, const double* a, const fortran_int_t* lda,
const double* x, const fortran_int_t* incx, const double* beta,
double* y, const fortran_int_t* incy );
// Value-type variants of syr
void BLAS_SSYR( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* x, const fortran_int_t* incx, float* a,
const fortran_int_t* lda );
void BLAS_DSYR( const char* uplo, const fortran_int_t* n, const double* alpha,
const double* x, const fortran_int_t* incx, double* a,
const fortran_int_t* lda );
// Value-type variants of syr2
void BLAS_SSYR2( const char* uplo, const fortran_int_t* n, const float* alpha,
const float* x, const fortran_int_t* incx, const float* y,
const fortran_int_t* incy, float* a, const fortran_int_t* lda );
void BLAS_DSYR2( const char* uplo, const fortran_int_t* n,
const double* alpha, const double* x, const fortran_int_t* incx,
const double* y, const fortran_int_t* incy, double* a,
const fortran_int_t* lda );
// Value-type variants of tbmv
void BLAS_STBMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const float* a,
const fortran_int_t* lda, float* x, const fortran_int_t* incx );
void BLAS_DTBMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const double* a,
const fortran_int_t* lda, double* x, const fortran_int_t* incx );
void BLAS_CTBMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const void* a,
const fortran_int_t* lda, void* x, const fortran_int_t* incx );
void BLAS_ZTBMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const void* a,
const fortran_int_t* lda, void* x, const fortran_int_t* incx );
// Value-type variants of tbsv
void BLAS_STBSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const float* a,
const fortran_int_t* lda, float* x, const fortran_int_t* incx );
void BLAS_DTBSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const double* a,
const fortran_int_t* lda, double* x, const fortran_int_t* incx );
void BLAS_CTBSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const void* a,
const fortran_int_t* lda, void* x, const fortran_int_t* incx );
void BLAS_ZTBSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const fortran_int_t* k, const void* a,
const fortran_int_t* lda, void* x, const fortran_int_t* incx );
// Value-type variants of tpmv
void BLAS_STPMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const float* ap, float* x,
const fortran_int_t* incx );
void BLAS_DTPMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const double* ap, double* x,
const fortran_int_t* incx );
void BLAS_CTPMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* ap, void* x,
const fortran_int_t* incx );
void BLAS_ZTPMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* ap, void* x,
const fortran_int_t* incx );
// Value-type variants of tpsv
void BLAS_STPSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const float* ap, float* x,
const fortran_int_t* incx );
void BLAS_DTPSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const double* ap, double* x,
const fortran_int_t* incx );
void BLAS_CTPSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* ap, void* x,
const fortran_int_t* incx );
void BLAS_ZTPSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* ap, void* x,
const fortran_int_t* incx );
// Value-type variants of trmv
void BLAS_STRMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const float* a, const fortran_int_t* lda,
float* x, const fortran_int_t* incx );
void BLAS_DTRMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const double* a, const fortran_int_t* lda,
double* x, const fortran_int_t* incx );
void BLAS_CTRMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* a, const fortran_int_t* lda,
void* x, const fortran_int_t* incx );
void BLAS_ZTRMV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* a, const fortran_int_t* lda,
void* x, const fortran_int_t* incx );
// Value-type variants of trsv
void BLAS_STRSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const float* a, const fortran_int_t* lda,
float* x, const fortran_int_t* incx );
void BLAS_DTRSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const double* a, const fortran_int_t* lda,
double* x, const fortran_int_t* incx );
void BLAS_CTRSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* a, const fortran_int_t* lda,
void* x, const fortran_int_t* incx );
void BLAS_ZTRSV( const char* uplo, const char* trans, const char* diag,
const fortran_int_t* n, const void* a, const fortran_int_t* lda,
void* x, const fortran_int_t* incx );
//
// BLAS level3 routines
//
// Value-type variants of gemm
void BLAS_SGEMM( const char* transa, const char* transb,
const fortran_int_t* m, const fortran_int_t* n,
const fortran_int_t* k, const float* alpha, const float* a,
const fortran_int_t* lda, const float* b, const fortran_int_t* ldb,
const float* beta, float* c, const fortran_int_t* ldc );
void BLAS_DGEMM( const char* transa, const char* transb,
const fortran_int_t* m, const fortran_int_t* n,
const fortran_int_t* k, const double* alpha, const double* a,
const fortran_int_t* lda, const double* b, const fortran_int_t* ldb,
const double* beta, double* c, const fortran_int_t* ldc );
void BLAS_CGEMM( const char* transa, const char* transb,
const fortran_int_t* m, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
void BLAS_ZGEMM( const char* transa, const char* transb,
const fortran_int_t* m, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
// Value-type variants of hemm
void BLAS_CHEMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
void BLAS_ZHEMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
// Value-type variants of her2k
void BLAS_CHER2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const float* beta, void* c, const fortran_int_t* ldc );
void BLAS_ZHER2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const double* beta, void* c, const fortran_int_t* ldc );
// Value-type variants of herk
void BLAS_CHERK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const float* alpha, const void* a,
const fortran_int_t* lda, const float* beta, void* c,
const fortran_int_t* ldc );
void BLAS_ZHERK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const double* alpha, const void* a,
const fortran_int_t* lda, const double* beta, void* c,
const fortran_int_t* ldc );
// Value-type variants of symm
void BLAS_SSYMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const float* alpha, const float* a,
const fortran_int_t* lda, const float* b, const fortran_int_t* ldb,
const float* beta, float* c, const fortran_int_t* ldc );
void BLAS_DSYMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const double* alpha, const double* a,
const fortran_int_t* lda, const double* b, const fortran_int_t* ldb,
const double* beta, double* c, const fortran_int_t* ldc );
void BLAS_CSYMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
void BLAS_ZSYMM( const char* side, const char* uplo, const fortran_int_t* m,
const fortran_int_t* n, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
// Value-type variants of syr2k
void BLAS_SSYR2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const float* alpha, const float* a,
const fortran_int_t* lda, const float* b, const fortran_int_t* ldb,
const float* beta, float* c, const fortran_int_t* ldc );
void BLAS_DSYR2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const double* alpha, const double* a,
const fortran_int_t* lda, const double* b, const fortran_int_t* ldb,
const double* beta, double* c, const fortran_int_t* ldc );
void BLAS_CSYR2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
void BLAS_ZSYR2K( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* b, const fortran_int_t* ldb,
const void* beta, void* c, const fortran_int_t* ldc );
// Value-type variants of syrk
void BLAS_SSYRK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const float* alpha, const float* a,
const fortran_int_t* lda, const float* beta, float* c,
const fortran_int_t* ldc );
void BLAS_DSYRK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const double* alpha, const double* a,
const fortran_int_t* lda, const double* beta, double* c,
const fortran_int_t* ldc );
void BLAS_CSYRK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* beta, void* c,
const fortran_int_t* ldc );
void BLAS_ZSYRK( const char* uplo, const char* trans, const fortran_int_t* n,
const fortran_int_t* k, const void* alpha, const void* a,
const fortran_int_t* lda, const void* beta, void* c,
const fortran_int_t* ldc );
// Value-type variants of trmm
void BLAS_STRMM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const float* alpha, const float* a, const fortran_int_t* lda,
float* b, const fortran_int_t* ldb );
void BLAS_DTRMM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const double* alpha, const double* a, const fortran_int_t* lda,
double* b, const fortran_int_t* ldb );
void BLAS_CTRMM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* a, const fortran_int_t* lda, void* b,
const fortran_int_t* ldb );
void BLAS_ZTRMM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* a, const fortran_int_t* lda, void* b,
const fortran_int_t* ldb );
// Value-type variants of trsm
void BLAS_STRSM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const float* alpha, const float* a, const fortran_int_t* lda,
float* b, const fortran_int_t* ldb );
void BLAS_DTRSM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const double* alpha, const double* a, const fortran_int_t* lda,
double* b, const fortran_int_t* ldb );
void BLAS_CTRSM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* a, const fortran_int_t* lda, void* b,
const fortran_int_t* ldb );
void BLAS_ZTRSM( const char* side, const char* uplo, const char* transa,
const char* diag, const fortran_int_t* m, const fortran_int_t* n,
const void* alpha, const void* a, const fortran_int_t* lda, void* b,
const fortran_int_t* ldb );
}
#endif

View File

@@ -0,0 +1,275 @@
//
// Copyright (c) 2003--2009
// Toon Knapen, Karl Meerbergen, Kresimir Fresl,
// Thomas Klimpel and Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// THIS FILE IS AUTOMATICALLY GENERATED
// PLEASE DO NOT EDIT!
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_NAMES_H
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_NAMES_H
#include <boost/numeric/bindings/detail/config/fortran.hpp>
//
// BLAS level1 routines
//
// Value-type variants of asum
#define BLAS_SASUM FORTRAN_ID2( sasum, SASUM )
#define BLAS_DASUM FORTRAN_ID2( dasum, DASUM )
#define BLAS_SCASUM FORTRAN_ID2( scasum, SCASUM )
#define BLAS_DZASUM FORTRAN_ID2( dzasum, DZASUM )
// Value-type variants of axpy
#define BLAS_SAXPY FORTRAN_ID2( saxpy, SAXPY )
#define BLAS_DAXPY FORTRAN_ID2( daxpy, DAXPY )
#define BLAS_CAXPY FORTRAN_ID2( caxpy, CAXPY )
#define BLAS_ZAXPY FORTRAN_ID2( zaxpy, ZAXPY )
// Value-type variants of copy
#define BLAS_SCOPY FORTRAN_ID2( scopy, SCOPY )
#define BLAS_DCOPY FORTRAN_ID2( dcopy, DCOPY )
#define BLAS_CCOPY FORTRAN_ID2( ccopy, CCOPY )
#define BLAS_ZCOPY FORTRAN_ID2( zcopy, ZCOPY )
// Value-type variants of dot
#define BLAS_SDOT FORTRAN_ID2( sdot, SDOT )
#define BLAS_DDOT FORTRAN_ID2( ddot, DDOT )
#define BLAS_CDOTU FORTRAN_ID2( cdotu, CDOTU )
#define BLAS_ZDOTU FORTRAN_ID2( zdotu, ZDOTU )
// Value-type variants of dotc
#define BLAS_CDOTC FORTRAN_ID2( cdotc, CDOTC )
#define BLAS_ZDOTC FORTRAN_ID2( zdotc, ZDOTC )
// Value-type variants of iamax
#define BLAS_ISAMAX FORTRAN_ID2( isamax, ISAMAX )
#define BLAS_IDAMAX FORTRAN_ID2( idamax, IDAMAX )
#define BLAS_ICAMAX FORTRAN_ID2( icamax, ICAMAX )
#define BLAS_IZAMAX FORTRAN_ID2( izamax, IZAMAX )
// Value-type variants of nrm2
#define BLAS_SNRM2 FORTRAN_ID2( snrm2, SNRM2 )
#define BLAS_DNRM2 FORTRAN_ID2( dnrm2, DNRM2 )
#define BLAS_SCNRM2 FORTRAN_ID2( scnrm2, SCNRM2 )
#define BLAS_DZNRM2 FORTRAN_ID2( dznrm2, DZNRM2 )
// Value-type variants of prec_dot
#define BLAS_DSDOT FORTRAN_ID2( dsdot, DSDOT )
// Value-type variants of rot
#define BLAS_SROT FORTRAN_ID2( srot, SROT )
#define BLAS_DROT FORTRAN_ID2( drot, DROT )
#define BLAS_CSROT FORTRAN_ID2( csrot, CSROT )
#define BLAS_ZDROT FORTRAN_ID2( zdrot, ZDROT )
// Value-type variants of rotg
#define BLAS_SROTG FORTRAN_ID2( srotg, SROTG )
#define BLAS_DROTG FORTRAN_ID2( drotg, DROTG )
#define BLAS_CROTG FORTRAN_ID2( crotg, CROTG )
#define BLAS_ZROTG FORTRAN_ID2( zrotg, ZROTG )
// Value-type variants of rotm
#define BLAS_SROTM FORTRAN_ID2( srotm, SROTM )
#define BLAS_DROTM FORTRAN_ID2( drotm, DROTM )
// Value-type variants of rotmg
#define BLAS_SROTMG FORTRAN_ID2( srotmg, SROTMG )
#define BLAS_DROTMG FORTRAN_ID2( drotmg, DROTMG )
// Value-type variants of scal
#define BLAS_SSCAL FORTRAN_ID2( sscal, SSCAL )
#define BLAS_DSCAL FORTRAN_ID2( dscal, DSCAL )
#define BLAS_CSSCAL FORTRAN_ID2( csscal, CSSCAL )
#define BLAS_ZDSCAL FORTRAN_ID2( zdscal, ZDSCAL )
#define BLAS_CSCAL FORTRAN_ID2( cscal, CSCAL )
#define BLAS_ZSCAL FORTRAN_ID2( zscal, ZSCAL )
// Value-type variants of swap
#define BLAS_SSWAP FORTRAN_ID2( sswap, SSWAP )
#define BLAS_DSWAP FORTRAN_ID2( dswap, DSWAP )
#define BLAS_CSWAP FORTRAN_ID2( cswap, CSWAP )
#define BLAS_ZSWAP FORTRAN_ID2( zswap, ZSWAP )
//
// BLAS level2 routines
//
// Value-type variants of gbmv
#define BLAS_SGBMV FORTRAN_ID2( sgbmv, SGBMV )
#define BLAS_DGBMV FORTRAN_ID2( dgbmv, DGBMV )
#define BLAS_CGBMV FORTRAN_ID2( cgbmv, CGBMV )
#define BLAS_ZGBMV FORTRAN_ID2( zgbmv, ZGBMV )
// Value-type variants of gemv
#define BLAS_SGEMV FORTRAN_ID2( sgemv, SGEMV )
#define BLAS_DGEMV FORTRAN_ID2( dgemv, DGEMV )
#define BLAS_CGEMV FORTRAN_ID2( cgemv, CGEMV )
#define BLAS_ZGEMV FORTRAN_ID2( zgemv, ZGEMV )
// Value-type variants of ger
#define BLAS_SGER FORTRAN_ID2( sger, SGER )
#define BLAS_DGER FORTRAN_ID2( dger, DGER )
// Value-type variants of gerc
#define BLAS_CGERC FORTRAN_ID2( cgerc, CGERC )
#define BLAS_ZGERC FORTRAN_ID2( zgerc, ZGERC )
// Value-type variants of geru
#define BLAS_CGERU FORTRAN_ID2( cgeru, CGERU )
#define BLAS_ZGERU FORTRAN_ID2( zgeru, ZGERU )
// Value-type variants of hbmv
#define BLAS_CHBMV FORTRAN_ID2( chbmv, CHBMV )
#define BLAS_ZHBMV FORTRAN_ID2( zhbmv, ZHBMV )
// Value-type variants of hemv
#define BLAS_CHEMV FORTRAN_ID2( chemv, CHEMV )
#define BLAS_ZHEMV FORTRAN_ID2( zhemv, ZHEMV )
// Value-type variants of her
#define BLAS_CHER FORTRAN_ID2( cher, CHER )
#define BLAS_ZHER FORTRAN_ID2( zher, ZHER )
// Value-type variants of her2
#define BLAS_CHER2 FORTRAN_ID2( cher2, CHER2 )
#define BLAS_ZHER2 FORTRAN_ID2( zher2, ZHER2 )
// Value-type variants of hpmv
#define BLAS_CHPMV FORTRAN_ID2( chpmv, CHPMV )
#define BLAS_ZHPMV FORTRAN_ID2( zhpmv, ZHPMV )
// Value-type variants of hpr
#define BLAS_CHPR FORTRAN_ID2( chpr, CHPR )
#define BLAS_ZHPR FORTRAN_ID2( zhpr, ZHPR )
// Value-type variants of hpr2
#define BLAS_CHPR2 FORTRAN_ID2( chpr2, CHPR2 )
#define BLAS_ZHPR2 FORTRAN_ID2( zhpr2, ZHPR2 )
// Value-type variants of sbmv
#define BLAS_SSBMV FORTRAN_ID2( ssbmv, SSBMV )
#define BLAS_DSBMV FORTRAN_ID2( dsbmv, DSBMV )
// Value-type variants of spmv
#define BLAS_SSPMV FORTRAN_ID2( sspmv, SSPMV )
#define BLAS_DSPMV FORTRAN_ID2( dspmv, DSPMV )
// Value-type variants of spr
#define BLAS_SSPR FORTRAN_ID2( sspr, SSPR )
#define BLAS_DSPR FORTRAN_ID2( dspr, DSPR )
// Value-type variants of spr2
#define BLAS_SSPR2 FORTRAN_ID2( sspr2, SSPR2 )
#define BLAS_DSPR2 FORTRAN_ID2( dspr2, DSPR2 )
// Value-type variants of symv
#define BLAS_SSYMV FORTRAN_ID2( ssymv, SSYMV )
#define BLAS_DSYMV FORTRAN_ID2( dsymv, DSYMV )
// Value-type variants of syr
#define BLAS_SSYR FORTRAN_ID2( ssyr, SSYR )
#define BLAS_DSYR FORTRAN_ID2( dsyr, DSYR )
// Value-type variants of syr2
#define BLAS_SSYR2 FORTRAN_ID2( ssyr2, SSYR2 )
#define BLAS_DSYR2 FORTRAN_ID2( dsyr2, DSYR2 )
// Value-type variants of tbmv
#define BLAS_STBMV FORTRAN_ID2( stbmv, STBMV )
#define BLAS_DTBMV FORTRAN_ID2( dtbmv, DTBMV )
#define BLAS_CTBMV FORTRAN_ID2( ctbmv, CTBMV )
#define BLAS_ZTBMV FORTRAN_ID2( ztbmv, ZTBMV )
// Value-type variants of tbsv
#define BLAS_STBSV FORTRAN_ID2( stbsv, STBSV )
#define BLAS_DTBSV FORTRAN_ID2( dtbsv, DTBSV )
#define BLAS_CTBSV FORTRAN_ID2( ctbsv, CTBSV )
#define BLAS_ZTBSV FORTRAN_ID2( ztbsv, ZTBSV )
// Value-type variants of tpmv
#define BLAS_STPMV FORTRAN_ID2( stpmv, STPMV )
#define BLAS_DTPMV FORTRAN_ID2( dtpmv, DTPMV )
#define BLAS_CTPMV FORTRAN_ID2( ctpmv, CTPMV )
#define BLAS_ZTPMV FORTRAN_ID2( ztpmv, ZTPMV )
// Value-type variants of tpsv
#define BLAS_STPSV FORTRAN_ID2( stpsv, STPSV )
#define BLAS_DTPSV FORTRAN_ID2( dtpsv, DTPSV )
#define BLAS_CTPSV FORTRAN_ID2( ctpsv, CTPSV )
#define BLAS_ZTPSV FORTRAN_ID2( ztpsv, ZTPSV )
// Value-type variants of trmv
#define BLAS_STRMV FORTRAN_ID2( strmv, STRMV )
#define BLAS_DTRMV FORTRAN_ID2( dtrmv, DTRMV )
#define BLAS_CTRMV FORTRAN_ID2( ctrmv, CTRMV )
#define BLAS_ZTRMV FORTRAN_ID2( ztrmv, ZTRMV )
// Value-type variants of trsv
#define BLAS_STRSV FORTRAN_ID2( strsv, STRSV )
#define BLAS_DTRSV FORTRAN_ID2( dtrsv, DTRSV )
#define BLAS_CTRSV FORTRAN_ID2( ctrsv, CTRSV )
#define BLAS_ZTRSV FORTRAN_ID2( ztrsv, ZTRSV )
//
// BLAS level3 routines
//
// Value-type variants of gemm
#define BLAS_SGEMM FORTRAN_ID2( sgemm, SGEMM )
#define BLAS_DGEMM FORTRAN_ID2( dgemm, DGEMM )
#define BLAS_CGEMM FORTRAN_ID2( cgemm, CGEMM )
#define BLAS_ZGEMM FORTRAN_ID2( zgemm, ZGEMM )
// Value-type variants of hemm
#define BLAS_CHEMM FORTRAN_ID2( chemm, CHEMM )
#define BLAS_ZHEMM FORTRAN_ID2( zhemm, ZHEMM )
// Value-type variants of her2k
#define BLAS_CHER2K FORTRAN_ID2( cher2k, CHER2K )
#define BLAS_ZHER2K FORTRAN_ID2( zher2k, ZHER2K )
// Value-type variants of herk
#define BLAS_CHERK FORTRAN_ID2( cherk, CHERK )
#define BLAS_ZHERK FORTRAN_ID2( zherk, ZHERK )
// Value-type variants of symm
#define BLAS_SSYMM FORTRAN_ID2( ssymm, SSYMM )
#define BLAS_DSYMM FORTRAN_ID2( dsymm, DSYMM )
#define BLAS_CSYMM FORTRAN_ID2( csymm, CSYMM )
#define BLAS_ZSYMM FORTRAN_ID2( zsymm, ZSYMM )
// Value-type variants of syr2k
#define BLAS_SSYR2K FORTRAN_ID2( ssyr2k, SSYR2K )
#define BLAS_DSYR2K FORTRAN_ID2( dsyr2k, DSYR2K )
#define BLAS_CSYR2K FORTRAN_ID2( csyr2k, CSYR2K )
#define BLAS_ZSYR2K FORTRAN_ID2( zsyr2k, ZSYR2K )
// Value-type variants of syrk
#define BLAS_SSYRK FORTRAN_ID2( ssyrk, SSYRK )
#define BLAS_DSYRK FORTRAN_ID2( dsyrk, DSYRK )
#define BLAS_CSYRK FORTRAN_ID2( csyrk, CSYRK )
#define BLAS_ZSYRK FORTRAN_ID2( zsyrk, ZSYRK )
// Value-type variants of trmm
#define BLAS_STRMM FORTRAN_ID2( strmm, STRMM )
#define BLAS_DTRMM FORTRAN_ID2( dtrmm, DTRMM )
#define BLAS_CTRMM FORTRAN_ID2( ctrmm, CTRMM )
#define BLAS_ZTRMM FORTRAN_ID2( ztrmm, ZTRMM )
// Value-type variants of trsm
#define BLAS_STRSM FORTRAN_ID2( strsm, STRSM )
#define BLAS_DTRSM FORTRAN_ID2( dtrsm, DTRSM )
#define BLAS_CTRSM FORTRAN_ID2( ctrsm, CTRSM )
#define BLAS_ZTRSM FORTRAN_ID2( ztrsm, ZTRSM )
#endif

View File

@@ -0,0 +1,57 @@
//
// Copyright (c) 2009 Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_OPTION_HPP
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_OPTION_HPP
#include <boost/mpl/char.hpp>
#include <boost/numeric/bindings/tag.hpp>
namespace boost {
namespace numeric {
namespace bindings {
namespace blas {
namespace detail {
template< typename Tag >
struct blas_option {};
template<>
struct blas_option< tag::transpose >: mpl::char_< 'T' > {};
template<>
struct blas_option< tag::no_transpose >: mpl::char_< 'N' > {};
template<>
struct blas_option< tag::conjugate >: mpl::char_< 'C' > {};
template<>
struct blas_option< tag::upper >: mpl::char_< 'U' > {};
template<>
struct blas_option< tag::lower >: mpl::char_< 'L' > {};
template<>
struct blas_option< tag::unit >: mpl::char_< 'U' > {};
template<>
struct blas_option< tag::non_unit >: mpl::char_< 'N' > {};
template<>
struct blas_option< tag::left >: mpl::char_< 'L' > {};
template<>
struct blas_option< tag::right >: mpl::char_< 'R' > {};
} // namespace detail
} // namespace blas
} // namespace bindings
} // namespace numeric
} // namespace boost
#endif

View File

@@ -0,0 +1,41 @@
/*
*
* Copyright (c) Kresimir Fresl 2002
*
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* Author acknowledges the support of the Faculty of Civil Engineering,
* University of Zagreb, Croatia.
*
*/
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_H
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_H
//
// MKL-specific CBLAS include
//
#if defined BOOST_NUMERIC_BINDINGS_BLAS_MKL
extern "C" {
#include <mkl_cblas.h>
#include <mkl_service.h>
//
// mkl_types.h defines P4 macro which breaks MPL, undefine it here.
//
#undef P4
}
//
// Default CBLAS include
//
#else
extern "C" {
#include <cblas.h>
}
#endif
#endif

View File

@@ -0,0 +1,85 @@
//
// Copyright (c) 2009 Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_OPTION_HPP
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_OPTION_HPP
#include <boost/numeric/bindings/blas/detail/cblas.h>
#include <boost/numeric/bindings/tag.hpp>
namespace boost {
namespace numeric {
namespace bindings {
namespace blas {
namespace detail {
template< typename Tag >
struct cblas_option {};
template<>
struct cblas_option< tag::row_major > {
static const CBLAS_ORDER value = CblasRowMajor;
};
template<>
struct cblas_option< tag::column_major > {
static const CBLAS_ORDER value = CblasColMajor;
};
template<>
struct cblas_option< tag::transpose > {
static const CBLAS_TRANSPOSE value = CblasTrans;
};
template<>
struct cblas_option< tag::no_transpose > {
static const CBLAS_TRANSPOSE value = CblasNoTrans;
};
template<>
struct cblas_option< tag::conjugate > {
static const CBLAS_TRANSPOSE value = CblasConjTrans;
};
template<>
struct cblas_option< tag::upper > {
static const CBLAS_UPLO value = CblasUpper;
};
template<>
struct cblas_option< tag::lower > {
static const CBLAS_UPLO value = CblasLower;
};
template<>
struct cblas_option< tag::unit > {
static const CBLAS_DIAG value = CblasUnit;
};
template<>
struct cblas_option< tag::non_unit > {
static const CBLAS_DIAG value = CblasNonUnit;
};
template<>
struct cblas_option< tag::left > {
static const CBLAS_SIDE value = CblasLeft;
};
template<>
struct cblas_option< tag::right > {
static const CBLAS_SIDE value = CblasRight;
};
} // namespace detail
} // namespace blas
} // namespace bindings
} // namespace numeric
} // namespace boost
#endif

View File

@@ -0,0 +1,16 @@
//
// Copyright (c) 2009 Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CUBLAS_H
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CUBLAS_H
extern "C" {
#include <cublas.h>
}
#endif

View File

@@ -0,0 +1,38 @@
//
// Copyright (c) 2009 Rutger ter Borg
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_DEFAULT_ORDER_HPP
#define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_DEFAULT_ORDER_HPP
#include <boost/mpl/if.hpp>
#include <boost/numeric/bindings/is_row_major.hpp>
#include <boost/numeric/bindings/tag.hpp>
#include <boost/numeric/bindings/detail/property_map.hpp>
namespace boost {
namespace numeric {
namespace bindings {
namespace blas {
namespace detail {
template< typename T >
struct default_order {
typedef typename mpl::if_<
bindings::detail::is_same_at< T, tag::value_transform, tag::conjugate >,
typename mpl::if_< is_row_major< T >, tag::column_major, tag::row_major >::type,
tag::column_major
>::type type;
};
} // namespace detail
} // namespace blas
} // namespace bindings
} // namespace numeric
} // namespace boost
#endif