Skip to content

Commit cdbd9bb

Browse files
authored
Merge pull request #536 from ValeevGroup/emitchell/upgrade/eigen-5.x.x
Update to Work with Eigen 5.0.0
2 parents f01b9f1 + b79f4ca commit cdbd9bb

File tree

3 files changed

+33
-21
lines changed

3 files changed

+33
-21
lines changed

cmake/modules/FindEigen3.cmake

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,18 @@ if(NOT Eigen3_FIND_VERSION)
3131
endif(NOT Eigen3_FIND_VERSION)
3232

3333
macro(_eigen3_check_version)
34-
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
34+
# Try the Eigen 5.x location first
35+
if(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Version")
36+
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header)
37+
# Fall back to Eigen 3.x location
38+
elseif(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h")
39+
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
40+
else()
41+
# Could not locate any known Eigen version header; mark version as not OK and return.
42+
set(EIGEN3_VERSION_OK FALSE)
43+
message(STATUS "Could not find Eigen version header under ${EIGEN3_INCLUDE_DIR}")
44+
return()
45+
endif()
3546

3647
string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
3748
set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")

src/TiledArray/tensor/tensor_interface.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ class TensorInterface {
179179
/// \param data The data pointer for this tensor
180180
TensorInterface(const range_type& range, pointer data)
181181
: range_(range), data_(data) {
182-
TA_ASSERT(data);
183182
}
184183

185184
/// Construct a new view of \c tensor
@@ -188,7 +187,6 @@ class TensorInterface {
188187
/// \param data The data pointer for this tensor
189188
TensorInterface(range_type&& range, pointer data)
190189
: range_(std::move(range)), data_(data) {
191-
TA_ASSERT(data);
192190
}
193191

194192
template <typename T1, typename std::enable_if<detail::is_nested_tensor<

tests/sparse_tile.h

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,28 +66,31 @@ class EigenSparseTile {
6666

6767
/// makes an uninitialized matrix
6868
explicit EigenSparseTile(const range_type& r)
69-
: impl_(std::make_shared<impl_type>(
70-
std::make_tuple(matrix_type(r.extent()[0], r.extent()[1]), r))) {
71-
TA_ASSERT(r.extent()[0] > 0);
72-
TA_ASSERT(r.extent()[1] > 0);
73-
}
69+
: impl_([&]() {
70+
TA_ASSERT(r.extent()[0] > 0);
71+
TA_ASSERT(r.extent()[1] > 0);
72+
return std::make_shared<impl_type>(
73+
std::make_tuple(matrix_type(r.extent()[0], r.extent()[1]), r));
74+
}()) {}
7475

7576
/// ctor using sparse matrix
7677
EigenSparseTile(matrix_type&& mat, const range_type& range)
77-
: impl_(std::make_shared<impl_type>(
78-
std::make_tuple(std::move(mat), range))) {
79-
using extent_type = typename range_type::extent_type::value_type;
80-
TA_ASSERT(static_cast<extent_type>(mat.rows()) == range.extent()[0]);
81-
TA_ASSERT(static_cast<extent_type>(mat.cols()) == range.extent()[1]);
82-
}
78+
: impl_([&]() {
79+
using extent_type = typename range_type::extent_type::value_type;
80+
TA_ASSERT(static_cast<extent_type>(mat.rows()) == range.extent()[0]);
81+
TA_ASSERT(static_cast<extent_type>(mat.cols()) == range.extent()[1]);
82+
return std::make_shared<impl_type>(
83+
std::make_tuple(std::move(mat), range));
84+
}()) {}
8385

8486
/// ctor using sparse matrix
8587
EigenSparseTile(const matrix_type& mat, const range_type& range)
86-
: impl_(std::make_shared<impl_type>(std::make_tuple(mat, range))) {
87-
using extent_type = typename range_type::extent_type::value_type;
88-
TA_ASSERT(static_cast<extent_type>(mat.rows()) == range.extent()[0]);
89-
TA_ASSERT(static_cast<extent_type>(mat.cols()) == range.extent()[1]);
90-
}
88+
: impl_([&]() {
89+
using extent_type = typename range_type::extent_type::value_type;
90+
TA_ASSERT(static_cast<extent_type>(mat.rows()) == range.extent()[0]);
91+
TA_ASSERT(static_cast<extent_type>(mat.cols()) == range.extent()[1]);
92+
return std::make_shared<impl_type>(std::make_tuple(mat, range));
93+
}()) {}
9194

9295
// Deep copy
9396
EigenSparseTile clone() const {
@@ -683,15 +686,15 @@ struct ArchiveLoadImpl<Archive, Eigen::Triplet<T>> {
683686
static inline void load(const Archive& ar, Eigen::Triplet<T>& obj) {
684687
int row, col;
685688
T value;
686-
ar & row & col & value;
689+
ar& row& col& value;
687690
obj = Eigen::Triplet<T>(row, col, value);
688691
}
689692
};
690693

691694
template <class Archive, typename T>
692695
struct ArchiveStoreImpl<Archive, Eigen::Triplet<T>> {
693696
static inline void store(const Archive& ar, const Eigen::Triplet<T>& obj) {
694-
ar & obj.row() & obj.col() & obj.value();
697+
ar& obj.row() & obj.col() & obj.value();
695698
}
696699
};
697700
} // namespace archive

0 commit comments

Comments
 (0)