26 DenseVector refV1 = DenseVector::Random(
rows), refV2 = DenseVector::Random(
rows), refV3 = DenseVector::Random(
rows);
28 std::vector<int> zerocoords, nonzerocoords;
29 initSparse<Scalar>(densityVec, refV1,
v1, &zerocoords, &nonzerocoords);
30 initSparse<Scalar>(densityMat, refM1,
m1);
32 initSparse<Scalar>(densityVec, refV2,
v2);
33 initSparse<Scalar>(densityVec, refV3, v3);
35 Scalar s1 = internal::random<Scalar>();
38 for (
unsigned int i = 0;
i < zerocoords.size(); ++
i) {
43 VERIFY(
int(nonzerocoords.size()) ==
v1.nonZeros());
45 for (
typename SparseVectorType::InnerIterator it(
v1); it; ++it, ++
j) {
46 VERIFY(nonzerocoords[
j] == it.index());
55 SparseVectorType v4(
rows);
57 for (
int k = 0;
k <
rows; ++
k) {
58 int i = internal::random<int>(0,
rows - 1);
59 Scalar v = internal::random<Scalar>();
66 v1.coeffRef(nonzerocoords[0]) =
Scalar(5);
87 int i = internal::random<int>(0,
rows - 1);
101 SparseMatrixType mv1;
113 SparseVectorType
tmp(std::move(
v1));
119 SparseVectorType
tmp;
126 SparseVectorType
tmp(std::move(mv1));
132 SparseVectorType
tmp;
133 tmp = std::move(mv1);
140 std::vector<StorageIndex> inc;
141 if (
rows > 3) inc.push_back(-3);
147 for (std::size_t
i = 0;
i < inc.size();
i++) {
148 StorageIndex incRows = inc[
i];
151 initSparse<Scalar>(densityVec, refVec1,
vec1);
153 vec1.conservativeResize(
rows + incRows);
155 if (incRows > 0) refVec1.tail(incRows).
setZero();
160 if (incRows > 0)
vec1.insert(
vec1.rows() - 1) = refVec1(refVec1.
rows() - 1) = 1;
170 DenseIndexVector innerIndices(
rows);
171 innerIndices.setLinSpaced(0,
rows - 1);
172 std::random_device rd;
173 std::mt19937 g(rd());
174 std::shuffle(innerIndices.begin(), innerIndices.end(), g);
183 vec1.template sortInnerIndices<std::greater<>>();
187 vec1.template sortInnerIndices<std::less<>>();
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
Matrix< Scalar, Dynamic, Dynamic > DenseMatrix
Definition: BenchSparseUtil.h:23
Matrix< Scalar, Dynamic, 1 > DenseVector
Definition: BenchSparseUtil.h:24
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Map< RowVectorXf > v2(M2.data(), M2.size())
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9;Map< RowVectorXf > v1(M1.data(), M1.size())
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:217
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE const Scalar & coeff(Index rowId, Index colId) const
Definition: PlainObjectBase.h:198
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void conservativeResize(Index rows, Index cols)
Definition: PlainObjectBase.h:398
EIGEN_DEVICE_FUNC Derived & setZero(Index size)
Definition: CwiseNullaryOp.h:569
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: PlainObjectBase.h:191
A versatible sparse matrix representation.
Definition: SparseMatrix.h:121
a sparse vector class
Definition: SparseVector.h:62
#define max(a, b)
Definition: datatypes.h:23
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
char char char int int * k
Definition: level2_impl.h:374
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
#define VERIFY(a)
Definition: main.h:362
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
#define VERIFY_IS_MUCH_SMALLER_THAN(a, b)
Definition: main.h:371
double eps
Definition: crbond_bessel.cc:24
EIGEN_STRONG_INLINE Packet2d shuffle(const Packet2d &m, const Packet2d &n, int mask)
Definition: LSX/PacketMath.h:150
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
const unsigned nz
Definition: ConstraintElementsUnitTest.cpp:32
val
Definition: calibrate.py:119
double Zero
Definition: pseudosolid_node_update_elements.cc:35
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2