Accepting request 913225 from home:badshah400:branches:science
* Update to version 3.4.0 * Drop patches incorporated or otherwise fixed upstream: * eigen3-CastXML-support-for-aarch64.patch. * eigen3-make-sparseqr-unit-test-stable.patch. * eigen3-failtests-handling.patch. * Rebase following patches for updated sources: * 0001-Disable-Altivec-for-ppc64le.patch. * 0001-Do-stack-allignment-on-ppc.patch. * Minor line offset adjustments of other patches to apply cleanly. OBS-URL: https://build.opensuse.org/request/show/913225 OBS-URL: https://build.opensuse.org/package/show/science/eigen3?expand=0&rev=39
This commit is contained in:
parent
6abcd6dc23
commit
534ab5c97e
@ -7,16 +7,16 @@ Subject: [PATCH] Disable Altivec for ppc64le
|
|||||||
Eigen/Core | 2 +-
|
Eigen/Core | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
Index: eigen-3.3.8/Eigen/Core
|
Index: eigen-3.4.0/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- eigen-3.3.8.orig/Eigen/Core
|
--- eigen-3.4.0.orig/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
+++ eigen-3.3.8/Eigen/Core
|
+++ eigen-3.4.0/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
@@ -220,7 +220,7 @@
|
@@ -374,7 +374,7 @@
|
||||||
#undef bool
|
|
||||||
#undef vector
|
#undef vector
|
||||||
#undef pixel
|
#undef pixel
|
||||||
|
|
||||||
- #elif defined __ALTIVEC__
|
- #elif defined __ALTIVEC__
|
||||||
+ #elif defined __ALTIVEC__ && _CALL_ELF != 2
|
+ #elif defined __ALTIVEC__ && _CALL_ELF != 2
|
||||||
|
|
||||||
#define EIGEN_VECTORIZE
|
#define EIGEN_VECTORIZE
|
||||||
#define EIGEN_VECTORIZE_ALTIVEC
|
#define EIGEN_VECTORIZE_ALTIVEC
|
||||||
#include <altivec.h>
|
|
||||||
|
@ -7,16 +7,16 @@ Subject: [PATCH] Do stack allignment on ppc
|
|||||||
Eigen/src/Core/util/Macros.h | 2 +-
|
Eigen/src/Core/util/Macros.h | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
Index: eigen-3.3.8/Eigen/src/Core/util/Macros.h
|
Index: eigen-3.4.0/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- eigen-3.3.8.orig/Eigen/src/Core/util/Macros.h
|
--- eigen-3.4.0.orig/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
+++ eigen-3.3.8/Eigen/src/Core/util/Macros.h
|
+++ eigen-3.4.0/Eigen/src/Core/util/ConfigureVectorization.h
|
||||||
@@ -718,7 +718,7 @@ namespace Eigen {
|
@@ -103,7 +103,7 @@
|
||||||
// certain common platform (compiler+architecture combinations) to avoid these problems.
|
// certain common platform (compiler+architecture combinations) to avoid these problems.
|
||||||
// Only static alignment is really problematic (relies on nonstandard compiler extensions),
|
// Only static alignment is really problematic (relies on nonstandard compiler extensions),
|
||||||
// try to keep heap alignment even when we have to disable static alignment.
|
// try to keep heap alignment even when we have to disable static alignment.
|
||||||
- #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_PPC || EIGEN_ARCH_IA64)
|
- #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_PPC || EIGEN_ARCH_IA64 || EIGEN_ARCH_MIPS)
|
||||||
+ #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_IA64)
|
+ #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_IA64 || EIGEN_ARCH_MIPS)
|
||||||
#define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1
|
#define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1
|
||||||
#elif EIGEN_ARCH_ARM_OR_ARM64 && EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(4, 6)
|
#elif EIGEN_ARCH_ARM_OR_ARM64 && EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(4, 6)
|
||||||
// Old versions of GCC on ARM, at least 4.4, were once seen to have buggy static alignment support.
|
// Old versions of GCC on ARM, at least 4.4, were once seen to have buggy static alignment support.
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
Index: eigen-3.3.8/CMakeLists.txt
|
Index: eigen-3.4.0/CMakeLists.txt
|
||||||
===================================================================
|
===================================================================
|
||||||
--- eigen-3.3.8.orig/CMakeLists.txt
|
--- eigen-3.4.0.orig/CMakeLists.txt
|
||||||
+++ eigen-3.3.8/CMakeLists.txt
|
+++ eigen-3.4.0/CMakeLists.txt
|
||||||
@@ -429,6 +429,11 @@ install(FILES
|
@@ -466,6 +466,11 @@ install(FILES
|
||||||
DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel
|
DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0fa5cafe78f66d2b501b43016858070d52ba47bd9b1016b0165a7b8e04675677
|
|
||||||
size 1667231
|
|
BIN
eigen-3.4.0.tar.bz2
(Stored with Git LFS)
Normal file
BIN
eigen-3.4.0.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,8 +1,8 @@
|
|||||||
Index: eigen-3.3.8/CMakeLists.txt
|
Index: eigen-3.4.0/CMakeLists.txt
|
||||||
===================================================================
|
===================================================================
|
||||||
--- eigen-3.3.8.orig/CMakeLists.txt
|
--- eigen-3.4.0.orig/CMakeLists.txt
|
||||||
+++ eigen-3.3.8/CMakeLists.txt
|
+++ eigen-3.4.0/CMakeLists.txt
|
||||||
@@ -536,7 +536,7 @@ set ( EIGEN_VERSION_MAJOR ${EIGEN_WORLD
|
@@ -598,7 +598,7 @@ set ( EIGEN_VERSION_MAJOR ${EIGEN_WORLD
|
||||||
set ( EIGEN_VERSION_MINOR ${EIGEN_MAJOR_VERSION} )
|
set ( EIGEN_VERSION_MINOR ${EIGEN_MAJOR_VERSION} )
|
||||||
set ( EIGEN_VERSION_PATCH ${EIGEN_MINOR_VERSION} )
|
set ( EIGEN_VERSION_PATCH ${EIGEN_MINOR_VERSION} )
|
||||||
set ( EIGEN_DEFINITIONS "")
|
set ( EIGEN_DEFINITIONS "")
|
||||||
@ -10,4 +10,4 @@ Index: eigen-3.3.8/CMakeLists.txt
|
|||||||
+set ( EIGEN_INCLUDE_DIR ${INCLUDE_INSTALL_DIR} )
|
+set ( EIGEN_INCLUDE_DIR ${INCLUDE_INSTALL_DIR} )
|
||||||
set ( EIGEN_ROOT_DIR ${CMAKE_INSTALL_PREFIX} )
|
set ( EIGEN_ROOT_DIR ${CMAKE_INSTALL_PREFIX} )
|
||||||
|
|
||||||
# Interface libraries require at least CMake 3.0
|
include (CMakePackageConfigHelpers)
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
From 880fa43b2ba9c25f45ae3ad4871a6aabe558329f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Brad King <brad.king@kitware.com>
|
|
||||||
Date: Wed, 16 Sep 2020 13:37:27 -0400
|
|
||||||
Subject: [PATCH] Add support for CastXML on ARM aarch64
|
|
||||||
|
|
||||||
CastXML simulates the preprocessors of other compilers, but actually
|
|
||||||
parses the translation unit with an internal Clang compiler.
|
|
||||||
Use the same `vld1q_u64` workaround that we do for Clang.
|
|
||||||
|
|
||||||
Fixes: #1979
|
|
||||||
---
|
|
||||||
Eigen/src/Core/arch/NEON/Complex.h | 4 ++--
|
|
||||||
Eigen/src/Core/util/Macros.h | 6 ++++++
|
|
||||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
Index: eigen-3.3.8/Eigen/src/Core/arch/NEON/Complex.h
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/Eigen/src/Core/arch/NEON/Complex.h
|
|
||||||
+++ eigen-3.3.8/Eigen/src/Core/arch/NEON/Complex.h
|
|
||||||
@@ -17,7 +17,7 @@ namespace internal {
|
|
||||||
|
|
||||||
inline uint32x4_t p4ui_CONJ_XOR() {
|
|
||||||
// See bug 1325, clang fails to call vld1q_u64.
|
|
||||||
-#if EIGEN_COMP_CLANG
|
|
||||||
+#if EIGEN_COMP_CLANG || EIGEN_COMP_CASTXML
|
|
||||||
uint32x4_t ret = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 };
|
|
||||||
return ret;
|
|
||||||
#else
|
|
||||||
@@ -291,7 +291,7 @@ ptranspose(PacketBlock<Packet2cf,2>& ker
|
|
||||||
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG
|
|
||||||
|
|
||||||
// See bug 1325, clang fails to call vld1q_u64.
|
|
||||||
-#if EIGEN_COMP_CLANG
|
|
||||||
+#if EIGEN_COMP_CLANG || EIGEN_COMP_CASTXML
|
|
||||||
static uint64x2_t p2ul_CONJ_XOR = {0x0, 0x8000000000000000};
|
|
||||||
#else
|
|
||||||
const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 };
|
|
||||||
Index: eigen-3.3.8/Eigen/src/Core/util/Macros.h
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/Eigen/src/Core/util/Macros.h
|
|
||||||
+++ eigen-3.3.8/Eigen/src/Core/util/Macros.h
|
|
||||||
@@ -35,6 +35,12 @@
|
|
||||||
#define EIGEN_COMP_CLANG 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+/// \internal EIGEN_COMP_CASTXML set to 1 if being preprocessed by CastXML
|
|
||||||
+#if defined(__castxml__)
|
|
||||||
+ #define EIGEN_COMP_CASTXML 1
|
|
||||||
+#else
|
|
||||||
+ #define EIGEN_COMP_CASTXML 0
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/// \internal EIGEN_COMP_LLVM set to 1 if the compiler backend is llvm
|
|
||||||
#if defined(__llvm__)
|
|
@ -1,132 +0,0 @@
|
|||||||
From 72c0bbe2bd1c49c75b6efdb81d0558f8b62578d1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gael Guennebaud <g.gael@free.fr>
|
|
||||||
Date: Wed, 12 Dec 2018 15:48:36 +0100
|
|
||||||
Subject: [PATCH] Simplify handling of tests that must fail to compile. Each
|
|
||||||
test is now a normal ctest target, and build properties (compiler+flags) are
|
|
||||||
preserved (instead of starting a new build-dir from scratch).
|
|
||||||
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 5 +----
|
|
||||||
cmake/EigenTesting.cmake | 45 ++++++++++++++++++----------------------
|
|
||||||
failtest/CMakeLists.txt | 10 ---------
|
|
||||||
test/CMakeLists.txt | 5 -----
|
|
||||||
4 files changed, 21 insertions(+), 44 deletions(-)
|
|
||||||
|
|
||||||
Index: eigen-3.3.8/CMakeLists.txt
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/CMakeLists.txt
|
|
||||||
+++ eigen-3.3.8/CMakeLists.txt
|
|
||||||
@@ -497,10 +497,7 @@ message(STATUS "")
|
|
||||||
message(STATUS "Configured Eigen ${EIGEN_VERSION_NUMBER}")
|
|
||||||
message(STATUS "")
|
|
||||||
|
|
||||||
-option(EIGEN_FAILTEST "Enable failtests." OFF)
|
|
||||||
-if(EIGEN_FAILTEST)
|
|
||||||
- add_subdirectory(failtest)
|
|
||||||
-endif()
|
|
||||||
+add_subdirectory(failtest)
|
|
||||||
|
|
||||||
string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_tolower)
|
|
||||||
if(cmake_generator_tolower MATCHES "makefile")
|
|
||||||
Index: eigen-3.3.8/cmake/EigenTesting.cmake
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/cmake/EigenTesting.cmake
|
|
||||||
+++ eigen-3.3.8/cmake/EigenTesting.cmake
|
|
||||||
@@ -320,37 +320,32 @@ endmacro(ei_add_test_sycl)
|
|
||||||
# note that the test runner for these is CMake itself, when passed -DEIGEN_FAILTEST=ON
|
|
||||||
# so here we're just running CMake commands immediately, we're not adding any targets.
|
|
||||||
macro(ei_add_failtest testname)
|
|
||||||
- get_property(EIGEN_FAILTEST_FAILURE_COUNT GLOBAL PROPERTY EIGEN_FAILTEST_FAILURE_COUNT)
|
|
||||||
- get_property(EIGEN_FAILTEST_COUNT GLOBAL PROPERTY EIGEN_FAILTEST_COUNT)
|
|
||||||
|
|
||||||
- message(STATUS "Checking failtest: ${testname}")
|
|
||||||
- set(filename "${testname}.cpp")
|
|
||||||
- file(READ "${filename}" test_source)
|
|
||||||
-
|
|
||||||
- try_compile(succeeds_when_it_should_fail
|
|
||||||
- "${CMAKE_CURRENT_BINARY_DIR}"
|
|
||||||
- "${CMAKE_CURRENT_SOURCE_DIR}/${filename}"
|
|
||||||
- COMPILE_DEFINITIONS "-DEIGEN_SHOULD_FAIL_TO_BUILD")
|
|
||||||
- if (succeeds_when_it_should_fail)
|
|
||||||
- message(STATUS "FAILED: ${testname} build succeeded when it should have failed")
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- try_compile(succeeds_when_it_should_succeed
|
|
||||||
- "${CMAKE_CURRENT_BINARY_DIR}"
|
|
||||||
- "${CMAKE_CURRENT_SOURCE_DIR}/${filename}"
|
|
||||||
- COMPILE_DEFINITIONS)
|
|
||||||
- if (NOT succeeds_when_it_should_succeed)
|
|
||||||
- message(STATUS "FAILED: ${testname} build failed when it should have succeeded")
|
|
||||||
- endif()
|
|
||||||
-
|
|
||||||
- if (succeeds_when_it_should_fail OR NOT succeeds_when_it_should_succeed)
|
|
||||||
- math(EXPR EIGEN_FAILTEST_FAILURE_COUNT ${EIGEN_FAILTEST_FAILURE_COUNT}+1)
|
|
||||||
- endif()
|
|
||||||
+ set(test_target_ok ${testname}_ok)
|
|
||||||
+ set(test_target_ko ${testname}_ko)
|
|
||||||
|
|
||||||
- math(EXPR EIGEN_FAILTEST_COUNT ${EIGEN_FAILTEST_COUNT}+1)
|
|
||||||
+ # Add executables
|
|
||||||
+ add_executable(${test_target_ok} ${testname}.cpp)
|
|
||||||
+ add_executable(${test_target_ko} ${testname}.cpp)
|
|
||||||
+
|
|
||||||
+ # Remove them from the normal build process
|
|
||||||
+ set_target_properties(${test_target_ok} ${test_target_ko} PROPERTIES
|
|
||||||
+ EXCLUDE_FROM_ALL TRUE
|
|
||||||
+ EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
|
||||||
+
|
|
||||||
+ # Configure the failing test
|
|
||||||
+ target_compile_definitions(${test_target_ko} PRIVATE EIGEN_SHOULD_FAIL_TO_BUILD)
|
|
||||||
+
|
|
||||||
+ # Add the tests to ctest.
|
|
||||||
+ add_test(NAME ${test_target_ok}
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} --build . --target ${test_target_ok} --config $<CONFIGURATION>
|
|
||||||
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
||||||
+ add_test(NAME ${test_target_ko}
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} --build . --target ${test_target_ko} --config $<CONFIGURATION>
|
|
||||||
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
||||||
|
|
||||||
- set_property(GLOBAL PROPERTY EIGEN_FAILTEST_FAILURE_COUNT ${EIGEN_FAILTEST_FAILURE_COUNT})
|
|
||||||
- set_property(GLOBAL PROPERTY EIGEN_FAILTEST_COUNT ${EIGEN_FAILTEST_COUNT})
|
|
||||||
+ # Expect the second test to fail
|
|
||||||
+ set_tests_properties(${test_target_ko} PROPERTIES WILL_FAIL TRUE)
|
|
||||||
endmacro(ei_add_failtest)
|
|
||||||
|
|
||||||
# print a summary of the different options
|
|
||||||
Index: eigen-3.3.8/failtest/CMakeLists.txt
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/failtest/CMakeLists.txt
|
|
||||||
+++ eigen-3.3.8/failtest/CMakeLists.txt
|
|
||||||
@@ -1,4 +1,3 @@
|
|
||||||
-message(STATUS "Running the failtests")
|
|
||||||
|
|
||||||
ei_add_failtest("failtest_sanity_check")
|
|
||||||
|
|
||||||
@@ -64,12 +63,3 @@ ei_add_failtest("bdcsvd_int")
|
|
||||||
ei_add_failtest("eigensolver_int")
|
|
||||||
ei_add_failtest("eigensolver_cplx")
|
|
||||||
|
|
||||||
-if (EIGEN_FAILTEST_FAILURE_COUNT)
|
|
||||||
- message(FATAL_ERROR
|
|
||||||
- "${EIGEN_FAILTEST_FAILURE_COUNT} out of ${EIGEN_FAILTEST_COUNT} failtests FAILED. "
|
|
||||||
- "To debug these failures, manually compile these programs in ${CMAKE_CURRENT_SOURCE_DIR}, "
|
|
||||||
- "with and without #define EIGEN_SHOULD_FAIL_TO_BUILD.")
|
|
||||||
-else()
|
|
||||||
- message(STATUS "Failtest SUCCESS: all ${EIGEN_FAILTEST_COUNT} failtests passed.")
|
|
||||||
- message(STATUS "")
|
|
||||||
-endif()
|
|
||||||
Index: eigen-3.3.8/test/CMakeLists.txt
|
|
||||||
===================================================================
|
|
||||||
--- eigen-3.3.8.orig/test/CMakeLists.txt
|
|
||||||
+++ eigen-3.3.8/test/CMakeLists.txt
|
|
||||||
@@ -380,10 +380,6 @@ endif(CUDA_FOUND)
|
|
||||||
|
|
||||||
endif(EIGEN_TEST_CUDA)
|
|
||||||
|
|
||||||
-
|
|
||||||
-file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/failtests)
|
|
||||||
-add_test(NAME failtests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/failtests COMMAND ${CMAKE_COMMAND} ${Eigen_SOURCE_DIR} -G "${CMAKE_GENERATOR}" -DEIGEN_FAILTEST=ON)
|
|
||||||
-
|
|
||||||
option(EIGEN_TEST_BUILD_DOCUMENTATION "Test building the doxygen documentation" OFF)
|
|
||||||
IF(EIGEN_TEST_BUILD_DOCUMENTATION)
|
|
||||||
add_dependencies(buildtests doc)
|
|
@ -1,66 +0,0 @@
|
|||||||
From 3b5deeb546d4017b24846f5b0dc3296a50a039fe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gael Guennebaud <g.gael@free.fr>
|
|
||||||
Date: Tue, 19 Feb 2019 22:57:51 +0100
|
|
||||||
Subject: [PATCH] bug #899: make sparseqr unit test more stable by 1) trying
|
|
||||||
with larger threshold and 2) relax rank computation for rank-deficient
|
|
||||||
problems.
|
|
||||||
|
|
||||||
---
|
|
||||||
test/sparseqr.cpp | 31 ++++++++++++++++++++++++++-----
|
|
||||||
1 file changed, 26 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/test/sparseqr.cpp b/test/sparseqr.cpp
|
|
||||||
index 3ffe62314..3576cc626 100644
|
|
||||||
--- a/test/sparseqr.cpp
|
|
||||||
+++ b/test/sparseqr.cpp
|
|
||||||
@@ -43,6 +43,7 @@ int generate_sparse_rectangular_problem(MatrixType& A, DenseMat& dA, int maxRows
|
|
||||||
|
|
||||||
template<typename Scalar> void test_sparseqr_scalar()
|
|
||||||
{
|
|
||||||
+ typedef typename NumTraits<Scalar>::Real RealScalar;
|
|
||||||
typedef SparseMatrix<Scalar,ColMajor> MatrixType;
|
|
||||||
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMat;
|
|
||||||
typedef Matrix<Scalar,Dynamic,1> DenseVector;
|
|
||||||
@@ -91,14 +92,34 @@ template<typename Scalar> void test_sparseqr_scalar()
|
|
||||||
exit(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- VERIFY_IS_APPROX(A * x, b);
|
|
||||||
-
|
|
||||||
- //Compare with a dense QR solver
|
|
||||||
+
|
|
||||||
+ // Compare with a dense QR solver
|
|
||||||
ColPivHouseholderQR<DenseMat> dqr(dA);
|
|
||||||
refX = dqr.solve(b);
|
|
||||||
|
|
||||||
- VERIFY_IS_EQUAL(dqr.rank(), solver.rank());
|
|
||||||
+ bool rank_deficient = A.cols()>A.rows() || dqr.rank()<A.cols();
|
|
||||||
+ if(rank_deficient)
|
|
||||||
+ {
|
|
||||||
+ // rank deficient problem -> we might have to increase the threshold
|
|
||||||
+ // to get a correct solution.
|
|
||||||
+ RealScalar th = RealScalar(20)*dA.colwise().norm().maxCoeff()*(A.rows()+A.cols()) * NumTraits<RealScalar>::epsilon();
|
|
||||||
+ for(Index k=0; (k<16) && !test_isApprox(A*x,b); ++k)
|
|
||||||
+ {
|
|
||||||
+ th *= RealScalar(10);
|
|
||||||
+ solver.setPivotThreshold(th);
|
|
||||||
+ solver.compute(A);
|
|
||||||
+ x = solver.solve(b);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ VERIFY_IS_APPROX(A * x, b);
|
|
||||||
+
|
|
||||||
+ // For rank deficient problem, the estimated rank might
|
|
||||||
+ // be slightly off, so let's only raise a warning in such cases.
|
|
||||||
+ if(rank_deficient) ++g_test_level;
|
|
||||||
+ VERIFY_IS_EQUAL(solver.rank(), dqr.rank());
|
|
||||||
+ if(rank_deficient) --g_test_level;
|
|
||||||
+
|
|
||||||
if(solver.rank()==A.cols()) // full rank
|
|
||||||
VERIFY_IS_APPROX(x, refX);
|
|
||||||
// else
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
@ -1,3 +1,18 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 20 01:01:50 UTC 2021 - Atri Bhattacharya <badshah400@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 3.4.0
|
||||||
|
* Long list of changes, see
|
||||||
|
<https://eigen.tuxfamily.org/index.php?title=3.4>.
|
||||||
|
- Drop patches incorporated or otherwise fixed upstream:
|
||||||
|
* eigen3-CastXML-support-for-aarch64.patch.
|
||||||
|
* eigen3-make-sparseqr-unit-test-stable.patch.
|
||||||
|
* eigen3-failtests-handling.patch.
|
||||||
|
- Rebase following patches for updated sources:
|
||||||
|
* 0001-Disable-Altivec-for-ppc64le.patch.
|
||||||
|
* 0001-Do-stack-allignment-on-ppc.patch.
|
||||||
|
- Minor line offset adjustments of other patches to apply cleanly.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Dec 8 19:27:09 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
|
Tue Dec 8 19:27:09 UTC 2020 - Atri Bhattacharya <badshah400@gmail.com>
|
||||||
|
|
||||||
|
17
eigen3.spec
17
eigen3.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package eigen3
|
# spec file
|
||||||
#
|
#
|
||||||
# Copyright (c) 2020 SUSE LLC
|
# Copyright (c) 2021 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -33,10 +33,10 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: eigen3%{?pkgsuffix}
|
Name: eigen3%{?pkgsuffix}
|
||||||
Version: 3.3.9
|
Version: 3.4.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: C++ Template Library for Linear Algebra
|
Summary: C++ Template Library for Linear Algebra
|
||||||
License: MPL-2.0 AND LGPL-2.1-only AND LGPL-2.1-or-later AND BSD-3-Clause
|
License: BSD-3-Clause AND LGPL-2.1-only AND MPL-2.0 AND LGPL-2.1-or-later
|
||||||
URL: http://eigen.tuxfamily.org/
|
URL: http://eigen.tuxfamily.org/
|
||||||
Source0: https://gitlab.com/libeigen/eigen/-/archive/%{version}/%{srcname}-%{version}.tar.bz2
|
Source0: https://gitlab.com/libeigen/eigen/-/archive/%{version}/%{srcname}-%{version}.tar.bz2
|
||||||
Patch0: 0001-Disable-Altivec-for-ppc64le.patch
|
Patch0: 0001-Disable-Altivec-for-ppc64le.patch
|
||||||
@ -45,14 +45,8 @@ Patch1: 0001-Do-stack-allignment-on-ppc.patch
|
|||||||
Patch3: 01_install_FindEigen3.patch
|
Patch3: 01_install_FindEigen3.patch
|
||||||
# PATCH-FIX-OPENSUSE eigen3-3.3.1-fixcmake.patch -- Fix double {prefix} as we use INCLUDE_INSTALL_DIR with {_includedir}
|
# PATCH-FIX-OPENSUSE eigen3-3.3.1-fixcmake.patch -- Fix double {prefix} as we use INCLUDE_INSTALL_DIR with {_includedir}
|
||||||
Patch4: eigen3-3.3.1-fixcmake.patch
|
Patch4: eigen3-3.3.1-fixcmake.patch
|
||||||
# PATCH-FIX-UPSTREAM eigen3-CastXML-support-for-aarch64.patch badshah400@gmail.com -- Add CastXML support for ARM aarch64 [https://gitlab.com/libeigen/eigen/-/issues/1979]
|
|
||||||
Patch5: eigen3-CastXML-support-for-aarch64.patch
|
|
||||||
%if %{with tests}
|
%if %{with tests}
|
||||||
# SECTION Patches to fix tests
|
# SECTION Patches to fix tests
|
||||||
# PATCH-FIX-UPSTREAM https://gitlab.com/libeigen/eigen/-/commit/72c0bbe2bd1c49c75b6efdb81d0558f8b62578d1
|
|
||||||
Patch7: eigen3-failtests-handling.patch
|
|
||||||
# PATCH-FIX-UPSTREAM eigen3-make-sparseqr-unit-test-stable.patch https://gitlab.com/libeigen/eigen/-/issues/899 badshah400@gmail.com -- Make sparseqr test more stable to prevent random failures; patch taken from upstream commit
|
|
||||||
Patch8: eigen3-make-sparseqr-unit-test-stable.patch
|
|
||||||
# PATCH-FIX-UPSTREAM eigen3-googlehash-detection.patch badshah400@gmail.com -- GoogleHash needs C++11 std to compile test code and be succesfully detected
|
# PATCH-FIX-UPSTREAM eigen3-googlehash-detection.patch badshah400@gmail.com -- GoogleHash needs C++11 std to compile test code and be succesfully detected
|
||||||
Patch9: eigen3-googlehash-detection.patch
|
Patch9: eigen3-googlehash-detection.patch
|
||||||
# PATCH-FIX-UPSTREAM eigen3-fix-forward_adolc-unit-test.patch badshah400@gmail -- Prevent conflict of std::min/max with eigen's macros by importing eigen test-suite's main.h header only after all system headers have been included
|
# PATCH-FIX-UPSTREAM eigen3-fix-forward_adolc-unit-test.patch badshah400@gmail -- Prevent conflict of std::min/max with eigen's macros by importing eigen test-suite's main.h header only after all system headers have been included
|
||||||
@ -122,7 +116,7 @@ echo "HTML_TIMESTAMP = NO" >> doc/Doxyfile.in
|
|||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake \
|
%cmake \
|
||||||
-DINCLUDE_INSTALL_DIR=include/eigen3 \
|
-DINCLUDE_INSTALL_DIR:PATH=include/eigen3 \
|
||||||
-DCMAKE_SKIP_RPATH:BOOL=OFF \
|
-DCMAKE_SKIP_RPATH:BOOL=OFF \
|
||||||
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \
|
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \
|
||||||
-DEIGEN_TEST_CXX11:Bool=%{?with_tests:ON}%{!?with_tests:OFF} \
|
-DEIGEN_TEST_CXX11:Bool=%{?with_tests:ON}%{!?with_tests:OFF} \
|
||||||
@ -160,6 +154,7 @@ export EIGEN_REPEAT=1
|
|||||||
%doc build/doc/html/
|
%doc build/doc/html/
|
||||||
|
|
||||||
%else
|
%else
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%license COPYING.*
|
%license COPYING.*
|
||||||
%{_includedir}/eigen3/
|
%{_includedir}/eigen3/
|
||||||
|
Loading…
Reference in New Issue
Block a user