12template<
typename Index,
typename Scalar,
int StorageOrder,
bool ConjugateLhs,
bool ConjugateRhs>
22 rows,
cols, LhsMapper(lhs, lhsStride), RhsMapper(rhs, rhsIncr),
res, resIncr,
alpha);
30 static const functype
func[4] = {
49 else if(*
m<0)
info = 2;
50 else if(*
n<0)
info = 3;
51 else if(*
lda<std::max(1,*
m))
info = 6;
52 else if(*incb==0)
info = 8;
53 else if(*incc==0)
info = 11;
64 std::swap(actual_m,actual_n);
75 if(code>=4 ||
func[code]==0)
78 func[code](actual_m, actual_n,
a, *
lda, actual_b, 1, actual_c, 1,
alpha);
80 if(actual_b!=
b)
delete[] actual_b;
81 if(actual_c!=
c)
delete[]
copy_back(actual_c,
c,actual_m,*incc);
89 static const functype
func[16] = {
91 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|0, false,ColMajor>::run),
93 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|0, false,RowMajor>::run),
95 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|0, Conj, RowMajor>::run),
98 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|0, false,ColMajor>::run),
100 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|0, false,RowMajor>::run),
102 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|0, Conj, RowMajor>::run),
105 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|UnitDiag,false,ColMajor>::run),
107 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|UnitDiag,false,RowMajor>::run),
109 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|UnitDiag,Conj, RowMajor>::run),
112 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Lower|UnitDiag,false,ColMajor>::run),
114 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|UnitDiag,false,RowMajor>::run),
116 (internal::triangular_solve_vector<Scalar,Scalar,int,OnTheLeft, Upper|UnitDiag,Conj, RowMajor>::run),
127 else if(*
n<0)
info = 4;
128 else if(*
lda<std::max(1,*
n))
info = 6;
129 else if(*incb==0)
info = 8;
135 int code =
OP(*opa) | (
UPLO(*uplo) << 2) | (
DIAG(*diag) << 3);
138 if(actual_b!=
b)
delete[]
copy_back(actual_b,
b,*
n,*incb);
148 static const functype
func[16] = {
150 (internal::triangular_matrix_vector_product<int,Upper|0, Scalar,false,Scalar,false,ColMajor>::run),
152 (internal::triangular_matrix_vector_product<int,Lower|0, Scalar,false,Scalar,false,RowMajor>::run),
154 (internal::triangular_matrix_vector_product<int,Lower|0, Scalar,Conj, Scalar,false,RowMajor>::run),
157 (internal::triangular_matrix_vector_product<int,Lower|0, Scalar,false,Scalar,false,ColMajor>::run),
159 (internal::triangular_matrix_vector_product<int,Upper|0, Scalar,false,Scalar,false,RowMajor>::run),
161 (internal::triangular_matrix_vector_product<int,Upper|0, Scalar,Conj, Scalar,false,RowMajor>::run),
164 (internal::triangular_matrix_vector_product<int,Upper|UnitDiag,Scalar,false,Scalar,false,ColMajor>::run),
166 (internal::triangular_matrix_vector_product<int,Lower|UnitDiag,Scalar,false,Scalar,false,RowMajor>::run),
168 (internal::triangular_matrix_vector_product<int,Lower|UnitDiag,Scalar,Conj, Scalar,false,RowMajor>::run),
171 (internal::triangular_matrix_vector_product<int,Lower|UnitDiag,Scalar,false,Scalar,false,ColMajor>::run),
173 (internal::triangular_matrix_vector_product<int,Upper|UnitDiag,Scalar,false,Scalar,false,RowMajor>::run),
175 (internal::triangular_matrix_vector_product<int,Upper|UnitDiag,Scalar,Conj, Scalar,false,RowMajor>::run),
186 else if(*
n<0)
info = 4;
187 else if(*
lda<std::max(1,*
n))
info = 6;
188 else if(*incb==0)
info = 8;
199 int code =
OP(*opa) | (
UPLO(*uplo) << 2) | (
DIAG(*diag) << 3);
200 if(code>=16 ||
func[code]==0)
206 if(actual_b!=
b)
delete[] actual_b;
226 int coeff_rows = *kl+*ku+1;
230 else if(*
m<0)
info = 2;
231 else if(*
n<0)
info = 3;
232 else if(*kl<0)
info = 4;
233 else if(*ku<0)
info = 5;
234 else if(*
lda<coeff_rows)
info = 8;
246 std::swap(actual_m,actual_n);
259 int nb = std::min(*
n,(*
m)+(*ku));
260 for(
int j=0;
j<nb; ++
j)
262 int start = std::max(0,
j - *ku);
263 int end = std::min((*
m)-1,
j + *kl);
264 int len = end - start + 1;
265 int offset = (*ku) -
j + start;
268 else if(
OP(*trans)==
TR)
269 actual_y[
j] +=
alpha * ( mat_coeffs.col(
j).segment(
offset,len).transpose() *
make_vector(actual_x+start,len) ).value();
271 actual_y[
j] +=
alpha * ( mat_coeffs.col(
j).segment(
offset,len).adjoint() *
make_vector(actual_x+start,len) ).value();
274 if(actual_x!=
x)
delete[] actual_x;
292 int coeff_rows = *k + 1;
298 else if(*
n<0)
info = 4;
299 else if(*k<0)
info = 5;
300 else if(*
lda<coeff_rows)
info = 7;
314 int ku =
UPLO(*uplo)==UPPER ? *k : 0;
315 int kl =
UPLO(*uplo)==LOWER ? *k : 0;
317 for(
int j=0;
j<*
n; ++
j)
319 int start = std::max(0,
j - ku);
320 int end = std::min((*
m)-1,
j + kl);
321 int len = end - start + 1;
326 else if(
OP(*trans)==
TR)
327 actual_y[
j] +=
alpha * ( mat_coeffs.col(
j).segment(
offset,len).transpose() *
make_vector(actual_x+start,len) ).value();
329 actual_y[
j] +=
alpha * ( mat_coeffs.col(
j).segment(
offset,len).adjoint() *
make_vector(actual_x+start,len) ).value();
332 if(actual_x!=
x)
delete[] actual_x;
353 static const functype
func[16] = {
386 int coeff_rows = *k+1;
392 else if(*
n<0)
info = 4;
393 else if(*k<0)
info = 5;
394 else if(*
lda<coeff_rows)
info = 7;
399 if(*
n==0 || (*k==0 &&
DIAG(*diag)==
UNIT))
406 int code =
OP(*op) | (
UPLO(*uplo) << 2) | (
DIAG(*diag) << 3);
407 if(code>=16 ||
func[code]==0)
427 static const functype
func[16] = {
465 else if(*
n<0)
info = 4;
477 int code =
OP(*opa) | (
UPLO(*uplo) << 2) | (
DIAG(*diag) << 3);
478 if(code>=16 ||
func[code]==0)
484 if(actual_x!=
x)
delete[] actual_x;
502 static const functype
func[16] = {
540 else if(*
n<0)
info = 4;
547 int code =
OP(*opa) | (
UPLO(*uplo) << 2) | (
DIAG(*diag) << 3);
548 func[code](*
n, ap, actual_x);
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
int n
Definition BiCGSTAB_simple.cpp:1
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar Scalar * c
Definition benchVecAdd.cpp:17
Scalar * b
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition bench_gemm.cpp:47
MatrixXf MatrixType
Definition benchmark-blocking-sizes.cpp:52
#define SCALAR_SUFFIX_UP
Definition complex_double.cpp:12
A matrix or vector expression mapping an existing array of data.
Definition Map.h:96
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
#define UNIT
Definition common.h:43
T * get_compact_vector(T *x, int n, int incx)
Definition common.h:147
#define TR
Definition common.h:33
Map< Matrix< T, Dynamic, 1 >, 0, InnerStride< Dynamic > > make_vector(T *data, int size, int incr)
Definition common.h:123
#define OP(X)
Definition common.h:47
#define NOTR
Definition common.h:32
#define EIGEN_BLAS_FUNC(X)
Definition common.h:173
#define INVALID
Definition common.h:45
T * copy_back(T *x_cpy, T *x, int n, int incx)
Definition common.h:159
#define UPLO(X)
Definition common.h:56
#define DIAG(X)
Definition common.h:60
* lda
Definition eigenvalues.cpp:59
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition gnuplot_common_settings.hh:12
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate offset
Definition gnuplot_common_settings.hh:64
else if n * info
Definition cholesky.cpp:18
RealScalar RealScalar int * incx
Definition level1_cplx_impl.h:29
int RealScalar int RealScalar int RealScalar * pc
Definition level1_cplx_impl.h:119
int RealScalar * palpha
Definition level1_cplx_impl.h:142
Scalar * y
Definition level1_cplx_impl.h:124
int RealScalar int RealScalar int * incy
Definition level1_cplx_impl.h:119
RealScalar RealScalar * px
Definition level1_cplx_impl.h:28
int RealScalar int RealScalar * py
Definition level1_cplx_impl.h:119
RealScalar alpha
Definition level1_cplx_impl.h:147
int EIGEN_BLAS_FUNC() gbmv(char *trans, int *m, int *n, int *kl, int *ku, RealScalar *palpha, RealScalar *pa, int *lda, RealScalar *px, int *incx, RealScalar *pbeta, RealScalar *py, int *incy)
Definition level2_impl.h:218
int EIGEN_BLAS_FUNC() tpmv(char *uplo, char *opa, char *diag, int *n, RealScalar *pap, RealScalar *px, int *incx)
Definition level2_impl.h:424
int EIGEN_BLAS_FUNC() gemv(const char *opa, const int *m, const int *n, const RealScalar *palpha, const RealScalar *pa, const int *lda, const RealScalar *pb, const int *incb, const RealScalar *pbeta, RealScalar *pc, const int *incc)
Definition level2_impl.h:26
int EIGEN_BLAS_FUNC() trmv(const char *uplo, const char *opa, const char *diag, const int *n, const RealScalar *pa, const int *lda, RealScalar *pb, const int *incb)
Definition level2_impl.h:145
int EIGEN_BLAS_FUNC() trsv(const char *uplo, const char *opa, const char *diag, const int *n, const RealScalar *pa, const int *lda, RealScalar *pb, const int *incb)
Definition level2_impl.h:86
int EIGEN_BLAS_FUNC() tpsv(char *uplo, char *opa, char *diag, int *n, RealScalar *pap, RealScalar *px, int *incx)
Definition level2_impl.h:499
int EIGEN_BLAS_FUNC() tbsv(char *uplo, char *op, char *diag, int *n, int *k, RealScalar *pa, int *lda, RealScalar *px, int *incx)
Definition level2_impl.h:350
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
Definition ForwardDeclarations.h:17
Definition benchGeometry.cpp:23
Definition level2_impl.h:14
static void run(Index rows, Index cols, const Scalar *lhs, Index lhsStride, const Scalar *rhs, Index rhsIncr, Scalar *res, Index resIncr, Scalar alpha)
Definition level2_impl.h:15
Definition BandTriangularSolver.h:19
Definition PackedTriangularMatrixVector.h:16
Definition PackedTriangularSolverVector.h:16
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2
EIGEN_WEAK_LINKING int xerbla_(const char *msg, int *info, int)
Definition xerbla.cpp:15