From 0742c81d9399771e0c342e2162ae731e56c05893 Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Mon, 2 Feb 2026 16:16:25 -0500 Subject: [PATCH 1/3] Eigen version moved in 5.x.x, find version for both 3.x.x and 5.x.x --- cmake/modules/FindEigen3.cmake | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index e143d5dc09..6944873f6f 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -31,7 +31,18 @@ if(NOT Eigen3_FIND_VERSION) endif(NOT Eigen3_FIND_VERSION) macro(_eigen3_check_version) - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + # Try the Eigen 5.x location first + if(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Version") + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header) + # Fall back to Eigen 3.x location + elseif(EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h") + file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + else() + # Could not locate any known Eigen version header; mark version as not OK and return. + set(EIGEN3_VERSION_OK FALSE) + message(STATUS "Could not find Eigen version header under ${EIGEN3_INCLUDE_DIR}") + return() + endif() string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") From db1319605716975b2d4449193c6d8ee0d684417d Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Tue, 3 Feb 2026 13:02:41 -0500 Subject: [PATCH 2/3] Do assertions before constructing --- tests/sparse_tile.h | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/tests/sparse_tile.h b/tests/sparse_tile.h index ef5bd13dff..8465311e85 100644 --- a/tests/sparse_tile.h +++ b/tests/sparse_tile.h @@ -66,28 +66,31 @@ class EigenSparseTile { /// makes an uninitialized matrix explicit EigenSparseTile(const range_type& r) - : impl_(std::make_shared( - std::make_tuple(matrix_type(r.extent()[0], r.extent()[1]), r))) { - TA_ASSERT(r.extent()[0] > 0); - TA_ASSERT(r.extent()[1] > 0); - } + : impl_([&]() { + TA_ASSERT(r.extent()[0] > 0); + TA_ASSERT(r.extent()[1] > 0); + return std::make_shared( + std::make_tuple(matrix_type(r.extent()[0], r.extent()[1]), r)); + }()) {} /// ctor using sparse matrix EigenSparseTile(matrix_type&& mat, const range_type& range) - : impl_(std::make_shared( - std::make_tuple(std::move(mat), range))) { - using extent_type = typename range_type::extent_type::value_type; - TA_ASSERT(static_cast(mat.rows()) == range.extent()[0]); - TA_ASSERT(static_cast(mat.cols()) == range.extent()[1]); - } + : impl_([&]() { + using extent_type = typename range_type::extent_type::value_type; + TA_ASSERT(static_cast(mat.rows()) == range.extent()[0]); + TA_ASSERT(static_cast(mat.cols()) == range.extent()[1]); + return std::make_shared( + std::make_tuple(std::move(mat), range)); + }()) {} /// ctor using sparse matrix EigenSparseTile(const matrix_type& mat, const range_type& range) - : impl_(std::make_shared(std::make_tuple(mat, range))) { - using extent_type = typename range_type::extent_type::value_type; - TA_ASSERT(static_cast(mat.rows()) == range.extent()[0]); - TA_ASSERT(static_cast(mat.cols()) == range.extent()[1]); - } + : impl_([&]() { + using extent_type = typename range_type::extent_type::value_type; + TA_ASSERT(static_cast(mat.rows()) == range.extent()[0]); + TA_ASSERT(static_cast(mat.cols()) == range.extent()[1]); + return std::make_shared(std::make_tuple(mat, range)); + }()) {} // Deep copy EigenSparseTile clone() const { @@ -683,7 +686,7 @@ struct ArchiveLoadImpl> { static inline void load(const Archive& ar, Eigen::Triplet& obj) { int row, col; T value; - ar & row & col & value; + ar& row& col& value; obj = Eigen::Triplet(row, col, value); } }; @@ -691,7 +694,7 @@ struct ArchiveLoadImpl> { template struct ArchiveStoreImpl> { static inline void store(const Archive& ar, const Eigen::Triplet& obj) { - ar & obj.row() & obj.col() & obj.value(); + ar& obj.row() & obj.col() & obj.value(); } }; } // namespace archive From b79f4cafcb201f1cfeddf33db2b6e3834c352c57 Mon Sep 17 00:00:00 2001 From: Erica Mitchell Date: Wed, 4 Feb 2026 14:33:08 -0500 Subject: [PATCH 3/3] Do not check if data is empty in TensorInterface --- src/TiledArray/tensor/tensor_interface.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/TiledArray/tensor/tensor_interface.h b/src/TiledArray/tensor/tensor_interface.h index b09dc11665..ad4ba7dc34 100644 --- a/src/TiledArray/tensor/tensor_interface.h +++ b/src/TiledArray/tensor/tensor_interface.h @@ -179,7 +179,6 @@ class TensorInterface { /// \param data The data pointer for this tensor TensorInterface(const range_type& range, pointer data) : range_(range), data_(data) { - TA_ASSERT(data); } /// Construct a new view of \c tensor @@ -188,7 +187,6 @@ class TensorInterface { /// \param data The data pointer for this tensor TensorInterface(range_type&& range, pointer data) : range_(std::move(range)), data_(data) { - TA_ASSERT(data); } template