mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-18 14:34:17 +08:00
Consistently use EIGEN_BLAS_FUNC in BLAS.
Previously, for a few functions, eithe BLASFUNC or, EIGEN_CAT was being used. This change uses EIGEN_BLAS_FUNC consistently everywhere. Also introduce EIGEN_BLAS_FUNC_SUFFIX, which by default is equal to "_", this allows the user to inject a new suffix as needed.
This commit is contained in:
parent
9558f4c25f
commit
c181dfb8ab
@ -166,6 +166,10 @@ T* copy_back(T* x_cpy, T* x, int n, int incx)
|
||||
return x_cpy;
|
||||
}
|
||||
|
||||
#define EIGEN_BLAS_FUNC(X) EIGEN_CAT(SCALAR_SUFFIX,X##_)
|
||||
#ifndef EIGEN_BLAS_FUNC_SUFFIX
|
||||
#define EIGEN_BLAS_FUNC_SUFFIX _
|
||||
#endif
|
||||
|
||||
#define EIGEN_BLAS_FUNC(X) EIGEN_CAT(SCALAR_SUFFIX, EIGEN_CAT(X, EIGEN_BLAS_FUNC_SUFFIX))
|
||||
|
||||
#endif // EIGEN_BLAS_COMMON_H
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "level2_real_impl.h"
|
||||
#include "level3_impl.h"
|
||||
|
||||
double BLASFUNC(dsdot)(int* n, float* x, int* incx, float* y, int* incy)
|
||||
double EIGEN_BLAS_FUNC(sdot)(int* n, float* x, int* incx, float* y, int* incy)
|
||||
{
|
||||
if(*n<=0) return 0;
|
||||
|
||||
|
@ -25,7 +25,7 @@ namespace Eigen {
|
||||
|
||||
// computes the sum of magnitudes of all vector elements or, for a complex vector x, the sum
|
||||
// res = |Rex1| + |Imx1| + |Rex2| + |Imx2| + ... + |Rexn| + |Imxn|, where x is a vector of order n
|
||||
RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),asum_)(int *n, RealScalar *px, int *incx)
|
||||
RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(asum))(int *n, RealScalar *px, int *incx)
|
||||
{
|
||||
// std::cerr << "__asum " << *n << " " << *incx << "\n";
|
||||
Complex* x = reinterpret_cast<Complex*>(px);
|
||||
@ -81,7 +81,7 @@ int EIGEN_BLAS_FUNC(dotuw)(int *n, RealScalar *px, int *incx, RealScalar *py, in
|
||||
return 0;
|
||||
}
|
||||
|
||||
RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),nrm2_)(int *n, RealScalar *px, int *incx)
|
||||
RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(nrm2))(int *n, RealScalar *px, int *incx)
|
||||
{
|
||||
// std::cerr << "__nrm2 " << *n << " " << *incx << "\n";
|
||||
if(*n<=0) return 0;
|
||||
@ -94,7 +94,7 @@ RealScalar EIGEN_CAT(EIGEN_CAT(REAL_SCALAR_SUFFIX,SCALAR_SUFFIX),nrm2_)(int *n,
|
||||
return make_vector(x,*n,*incx).stableNorm();
|
||||
}
|
||||
|
||||
int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),rot_)(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps)
|
||||
int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, rot))(int *n, RealScalar *px, int *incx, RealScalar *py, int *incy, RealScalar *pc, RealScalar *ps)
|
||||
{
|
||||
if(*n<=0) return 0;
|
||||
|
||||
@ -117,7 +117,7 @@ int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),rot_)(int *n, RealScal
|
||||
return 0;
|
||||
}
|
||||
|
||||
int EIGEN_CAT(EIGEN_CAT(SCALAR_SUFFIX,REAL_SCALAR_SUFFIX),scal_)(int *n, RealScalar *palpha, RealScalar *px, int *incx)
|
||||
int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, scal))(int *n, RealScalar *palpha, RealScalar *px, int *incx)
|
||||
{
|
||||
if(*n<=0) return 0;
|
||||
|
||||
|
@ -51,7 +51,7 @@ int EIGEN_BLAS_FUNC(copy)(int *n, RealScalar *px, int *incx, RealScalar *py, int
|
||||
return 0;
|
||||
}
|
||||
|
||||
int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amax_)(int *n, RealScalar *px, int *incx)
|
||||
int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amax))(int *n, RealScalar *px, int *incx)
|
||||
{
|
||||
if(*n<=0) return 0;
|
||||
Scalar* x = reinterpret_cast<Scalar*>(px);
|
||||
@ -62,7 +62,7 @@ int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amax_)(int *n, RealScalar *px, int *inc
|
||||
return int(ret)+1;
|
||||
}
|
||||
|
||||
int EIGEN_CAT(EIGEN_CAT(i,SCALAR_SUFFIX),amin_)(int *n, RealScalar *px, int *incx)
|
||||
int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amin))(int *n, RealScalar *px, int *incx)
|
||||
{
|
||||
if(*n<=0) return 0;
|
||||
Scalar* x = reinterpret_cast<Scalar*>(px);
|
||||
|
@ -18,5 +18,5 @@
|
||||
#include "level2_real_impl.h"
|
||||
#include "level3_impl.h"
|
||||
|
||||
float BLASFUNC(sdsdot)(int* n, float* alpha, float* x, int* incx, float* y, int* incy)
|
||||
float EIGEN_BLAS_FUNC(dsdot)(int* n, float* alpha, float* x, int* incx, float* y, int* incy)
|
||||
{ return double(*alpha) + BLASFUNC(dsdot)(n, x, incx, y, incy); }
|
||||
|
Loading…
Reference in New Issue
Block a user