10#ifndef EIGEN_TESTSPARSE_H
11#define EIGEN_TESTSPARSE_H
13#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
27#include <unordered_map>
28#define EIGEN_UNORDERED_MAP_SUPPORT
32#include <Eigen/Cholesky>
34#include <Eigen/Sparse>
50template<
typename Scalar,
int Opt1,
int Opt2,
typename StorageIndex>
void
61 sparseMat.
reserve(VectorXi::Constant(IsRowMajor ? refMat.
rows() : refMat.
cols(),
int((1.5*density)*(IsRowMajor?refMat.
cols():refMat.
rows()))));
71 Scalar v = (internal::random<double>(0,1) < density) ? internal::random<Scalar>() :
Scalar(0);
75 v = internal::random<Scalar>()*
Scalar(3.);
77 if(numext::real(
v)>0)
v +=
Scalar(5);
105template<
typename Scalar,
int Opt1,
int Opt2,
typename Index>
void
124 Scalar v = (internal::random<double>(0,1) < density) ? internal::random<Scalar>() :
Scalar(0);
127 v = internal::random<Scalar>()*
Scalar(3.);
154template<
typename Scalar,
int Options,
typename Index>
void
158 std::vector<int>* zeroCoords = 0,
159 std::vector<int>* nonzeroCoords = 0)
161 sparseVec.
reserve(
int(refVec.size()*density));
163 for(
int i=0;
i<refVec.size();
i++)
165 Scalar v = (internal::random<double>(0,1) < density) ? internal::random<Scalar>() :
Scalar(0);
170 nonzeroCoords->push_back(
i);
173 zeroCoords->push_back(
i);
178template<
typename Scalar,
int Options,
typename Index>
void
182 std::vector<int>* zeroCoords = 0,
183 std::vector<int>* nonzeroCoords = 0)
185 sparseVec.
reserve(
int(refVec.size()*density));
187 for(
int i=0;
i<refVec.size();
i++)
189 Scalar v = (internal::random<double>(0,1) < density) ? internal::random<Scalar>() :
Scalar(0);
194 nonzeroCoords->push_back(
i);
197 zeroCoords->push_back(
i);
203#include <unsupported/Eigen/SparseExtra>
Array< int, Dynamic, 1 > v
Definition Array_initializer_list_vector_cxx11.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
SCALAR Scalar
Definition bench_gemm.cpp:46
A sparse matrix class designed for matrix assembly purpose.
Definition DynamicSparseMatrix.h:58
Index innerSize() const
Definition DynamicSparseMatrix.h:84
void reserve(Index reserveSize=1000)
Definition DynamicSparseMatrix.h:132
void startVec(Index)
Definition DynamicSparseMatrix.h:145
Scalar & insertBackByOuterInner(Index outer, Index inner)
Definition DynamicSparseMatrix.h:158
void setZero()
Definition DynamicSparseMatrix.h:115
void finalize()
Definition DynamicSparseMatrix.h:188
Index outerSize() const
Definition DynamicSparseMatrix.h:85
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition PlainObjectBase.h:145
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition PlainObjectBase.h:143
A versatible sparse matrix representation.
Definition SparseMatrix.h:98
Index innerSize() const
Definition SparseMatrix.h:143
void reserve(Index reserveSize)
Definition SparseMatrix.h:264
Index outerSize() const
Definition SparseMatrix.h:145
Scalar & insertByOuterInner(Index j, Index i)
Definition SparseMatrix.h:460
void setZero()
Definition SparseMatrix.h:253
a sparse vector class
Definition SparseVector.h:66
void reserve(Index reserveSize)
Definition SparseVector.h:204
void setZero()
Definition SparseVector.h:137
Scalar & insertBack(Index i)
Definition SparseVector.h:154
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
void initSparse(double density, Matrix< Scalar, Dynamic, Dynamic, Opt1 > &refMat, SparseMatrix< Scalar, Opt2, StorageIndex > &sparseMat, int flags=0, std::vector< Matrix< StorageIndex, 2, 1 > > *zeroCoords=0, std::vector< Matrix< StorageIndex, 2, 1 > > *nonzeroCoords=0)
Definition sparse.h:51
@ ForceRealDiag
Definition sparse.h:40
@ ForceNonZeroDiag
Definition sparse.h:37
@ MakeUpperTriangular
Definition sparse.h:39
@ MakeLowerTriangular
Definition sparse.h:38
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2