13 typedef RealScalar result_type;
15 inline RealScalar operator() (
const Scalar& a)
const {
return numext::norm1(a); }
28RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(asum))(
int *n, RealScalar *px,
int *incx)
31 Complex* x =
reinterpret_cast<Complex*
>(px);
35 if(*incx==1)
return make_vector(x,*n).unaryExpr<
scalar_norm1_op>().sum();
36 else return make_vector(x,*n,std::abs(*incx)).unaryExpr<
scalar_norm1_op>().sum();
39int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amax))(
int *n, RealScalar *px,
int *incx)
42 Scalar* x =
reinterpret_cast<Scalar*
>(px);
45 if(*incx==1) make_vector(x,*n).unaryExpr<
scalar_norm1_op>().maxCoeff(&ret);
46 else make_vector(x,*n,std::abs(*incx)).unaryExpr<
scalar_norm1_op>().maxCoeff(&ret);
50int EIGEN_CAT(i, EIGEN_BLAS_FUNC(amin))(
int *n, RealScalar *px,
int *incx)
53 Scalar* x =
reinterpret_cast<Scalar*
>(px);
56 if(*incx==1) make_vector(x,*n).unaryExpr<
scalar_norm1_op>().minCoeff(&ret);
57 else make_vector(x,*n,std::abs(*incx)).unaryExpr<
scalar_norm1_op>().minCoeff(&ret);
62int EIGEN_BLAS_FUNC(dotcw)(
int *n, RealScalar *px,
int *incx, RealScalar *py,
int *incy, RealScalar* pres)
65 Scalar* res =
reinterpret_cast<Scalar*
>(pres);
73 Scalar* x =
reinterpret_cast<Scalar*
>(px);
74 Scalar* y =
reinterpret_cast<Scalar*
>(py);
76 if(*incx==1 && *incy==1) *res = (make_vector(x,*n).dot(make_vector(y,*n)));
77 else if(*incx>0 && *incy>0) *res = (make_vector(x,*n,*incx).dot(make_vector(y,*n,*incy)));
78 else if(*incx<0 && *incy>0) *res = (make_vector(x,*n,-*incx).reverse().dot(make_vector(y,*n,*incy)));
79 else if(*incx>0 && *incy<0) *res = (make_vector(x,*n,*incx).dot(make_vector(y,*n,-*incy).reverse()));
80 else if(*incx<0 && *incy<0) *res = (make_vector(x,*n,-*incx).reverse().dot(make_vector(y,*n,-*incy).reverse()));
85int EIGEN_BLAS_FUNC(dotuw)(
int *n, RealScalar *px,
int *incx, RealScalar *py,
int *incy, RealScalar* pres)
87 Scalar* res =
reinterpret_cast<Scalar*
>(pres);
95 Scalar* x =
reinterpret_cast<Scalar*
>(px);
96 Scalar* y =
reinterpret_cast<Scalar*
>(py);
98 if(*incx==1 && *incy==1) *res = (make_vector(x,*n).cwiseProduct(make_vector(y,*n))).sum();
99 else if(*incx>0 && *incy>0) *res = (make_vector(x,*n,*incx).cwiseProduct(make_vector(y,*n,*incy))).sum();
100 else if(*incx<0 && *incy>0) *res = (make_vector(x,*n,-*incx).reverse().cwiseProduct(make_vector(y,*n,*incy))).sum();
101 else if(*incx>0 && *incy<0) *res = (make_vector(x,*n,*incx).cwiseProduct(make_vector(y,*n,-*incy).reverse())).sum();
102 else if(*incx<0 && *incy<0) *res = (make_vector(x,*n,-*incx).reverse().cwiseProduct(make_vector(y,*n,-*incy).reverse())).sum();
106RealScalar EIGEN_CAT(REAL_SCALAR_SUFFIX, EIGEN_BLAS_FUNC(nrm2))(
int *n, RealScalar *px,
int *incx)
111 Scalar* x =
reinterpret_cast<Scalar*
>(px);
114 return make_vector(x,*n).stableNorm();
116 return make_vector(x,*n,*incx).stableNorm();
119int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, rot))(
int *n, RealScalar *px,
int *incx, RealScalar *py,
int *incy, RealScalar *pc, RealScalar *ps)
123 Scalar* x =
reinterpret_cast<Scalar*
>(px);
124 Scalar* y =
reinterpret_cast<Scalar*
>(py);
142int EIGEN_BLAS_FUNC(EIGEN_CAT(REAL_SCALAR_SUFFIX, scal))(
int *n, RealScalar *palpha, RealScalar *px,
int *incx)
146 Scalar* x =
reinterpret_cast<Scalar*
>(px);
147 RealScalar alpha = *palpha;
151 if(*incx==1) make_vector(x,*n) *= alpha;
152 else make_vector(x,*n,std::abs(*incx)) *= alpha;
Rotation given by a cosine-sine pair.
Definition Jacobi.h:35
A matrix or vector expression mapping an existing array of data.
Definition Map.h:96
Expression of the reverse of a vector or matrix.
Definition Reverse.h:65
Namespace containing all symbols from the Eigen library.
Definition common.h:81
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition XprHelper.h:176
Definition level1_cplx_impl.h:12