From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 4C1VH6TR0mISawEAbAwnHQ (envelope-from ) for ; Sat, 16 Jul 2022 16:56:36 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id 8KLRHaTR0mKZhAEAG6o9tA (envelope-from ) for ; Sat, 16 Jul 2022 16:56:36 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 2034119688 for ; Sat, 16 Jul 2022 16:56:35 +0200 (CEST) Received: from localhost ([::1]:40630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oCjDe-0001ZX-Ke for larch@yhetil.org; Sat, 16 Jul 2022 10:56:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51012) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oCidN-0006Zn-Qa for guix-patches@gnu.org; Sat, 16 Jul 2022 10:19:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:47908) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oCidL-00047F-AX for guix-patches@gnu.org; Sat, 16 Jul 2022 10:19:05 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oCidL-00070B-5Q for guix-patches@gnu.org; Sat, 16 Jul 2022 10:19:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#56602] [PATCH] gnu: eigen: Update to 3.4.0. Resent-From: vicvbcun Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 16 Jul 2022 14:19:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 56602 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 56602@debbugs.gnu.org Cc: vicvbcun X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.165798110026834 (code B ref -1); Sat, 16 Jul 2022 14:19:03 +0000 Received: (at submit) by debbugs.gnu.org; 16 Jul 2022 14:18:20 +0000 Received: from localhost ([127.0.0.1]:45661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oCicP-0006yN-9Q for submit@debbugs.gnu.org; Sat, 16 Jul 2022 10:18:20 -0400 Received: from lists.gnu.org ([209.51.188.17]:47086) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oCfIb-0001tA-3n for submit@debbugs.gnu.org; Sat, 16 Jul 2022 06:45:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oCfIX-0002o2-EN for guix-patches@gnu.org; Sat, 16 Jul 2022 06:45:23 -0400 Received: from mo4-p05-ob.smtp.rzone.de ([85.215.255.131]:37427) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oCfIS-0006Y4-I5 for guix-patches@gnu.org; Sat, 16 Jul 2022 06:45:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1657967953; s=strato-dkim-0002; d=ikherbers.com; h=Message-Id:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender; bh=XHN+PnAbYBbPAufWQcRc+SJ4NkjTVoyjbsXCC5lKLks=; b=i83/vCLQxSvCEi4eC26nQmgeXcGb0FzU5Ar40yzPaIzmMkhW45HBrZ8nqMEk8gcf9Q noDs/0uD0x9OaNGBSvcPhOyXQA5GKxzuZbxEcGsef7cYzkdM6gBOKXRbYuXxTlWXlteP rGVFjLeqyMhPtx+pzYubcBh26NDWgBJyg4+X0Nib72fci7q1cqZesQ+haf3jBuQV6MgK xtvcKhk6nQunW6Bszt69fHkjzv3ANXAqv0KofJOlHWrt141nMZB8fV12HktoDFYTDTpm skuSAMX/WjfCESCf08tAyZK3unaJ60rNIyYJ1YyymCJQNIzpgJ75/ryMoqbq7pEY/849 RNHA== X-RZG-AUTH: ":IUwNfkitaf3qOWm2b/jA5tveVwUUcwH3PkiYp6DPxTDDEo4xO9KsAGjuurvi21lVouxG" X-RZG-CLASS-ID: mo05 Received: from lambda.localdomain by smtp.strato.de (RZmta 47.47.0 DYNA|AUTH) with ESMTPSA id a87386y6GAdDFcI (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 16 Jul 2022 12:39:13 +0200 (CEST) From: vicvbcun Date: Sat, 16 Jul 2022 12:38:11 +0200 Message-Id: <1ed31d84dee397a507781f1c9510699265ff8ee9.1657965800.git.guix@ikherbers.com> X-Mailer: git-send-email 2.37.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=85.215.255.131; envelope-from=cyc@lambda.localdomain; helo=mo4-p05-ob.smtp.rzone.de X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NO_DNS_FOR_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_SBL_A=0.1 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sat, 16 Jul 2022 10:17:59 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Mailman-Approved-At: Sat, 16 Jul 2022 10:56:28 -0400 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1657983396; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=XHN+PnAbYBbPAufWQcRc+SJ4NkjTVoyjbsXCC5lKLks=; b=GjPFTSYri8wG+1p+9FVFnkQk26I7SjHeffbVdrF79+g9jXp/pnWM7ytHDzKZySH/lt0S3K NE2vGDVxvQ7/LzCVpccclwSqtMQUXSwttmMJM9nlbl9Ll/FY3a0EyTHFocDXILIy5GLCUc ApkfQEJjSi8daXFgR22FTeZmXrpvpv21umwjHyMIt8iz/aHWf8GSWgzP+bOkInv+1GBa1E mh/o5oQLqkarftHxx4VcoEpoZNneWtVizS9N7ov5pFPUk7IrGMxlhTQdbhlPM9IKHMM90G kbzZfhZw697bEvgHL04OMGAcrvxCRIgKb34NmwjonZoVRnvUuOSn1aVnDwWpAA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1657983396; a=rsa-sha256; cv=none; b=f72Iqyw/zOQr8E/eXOduuCi5M09ecKUSXL6v7jKHkJ+6H2C89rXkSaouJIWzBwPsrq+mT+ V9yJTol0lvjU02O5ocoCu2R4UaRl/34+nYbqrf34IjgYKz37kBUnx/GsHsYFU8b7DASlfk 2h+uSlvzMovwnjWO2K+oBA6q2FvxusESpopmdSZR8P+GlNiPE1ZUAyIKSW/bfRKma3/dwV b34X5+udqaBrrZY5AFdIjuH6BMuN4eHPjWixgBxdDk2Snghiu3QvvZ9jHibBf1yoEmYiu8 cmffnIVFbajiph/KdWxRT2j5AkgqfaERCJmdUTwScUL9EX7QCH5bGjJ0JyG1/Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=ikherbers.com header.s=strato-dkim-0002 header.b="i83/vCLQ"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 2.96 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=ikherbers.com header.s=strato-dkim-0002 header.b="i83/vCLQ"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 2034119688 X-Spam-Score: 2.96 X-Migadu-Scanner: scn0.migadu.com X-TUID: wFrtZobrKBw0 * gnu/packages/algebra.scm (eigen): Update to 3.4.0. * gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch: New file. * gnu/packages/patches/eigen-remove-openmp-error-counting.patch, gnu/packages/patches/eigen-stabilise-sparseqr-test.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Update accordingly. --- Hi there, I hope, I didn't miss anything too obvious :). The "stabilise-sparseqr-test"-patch is contained in this release, the "remove-openmp-error-counting"-patch seems to fix a version 3.3.8 only problem. Without the new patch one of the tests fails. gnu/local.mk | 3 +- gnu/packages/algebra.scm | 19 ++--- .../eigen-fix-strict-aliasing-bug.patch | 73 ++++++++++++++++++ .../eigen-remove-openmp-error-counting.patch | 64 ---------------- .../eigen-stabilise-sparseqr-test.patch | 74 ------------------- 5 files changed, 82 insertions(+), 151 deletions(-) create mode 100644 gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch delete mode 100644 gnu/packages/patches/eigen-remove-openmp-error-counting.patch delete mode 100644 gnu/packages/patches/eigen-stabilise-sparseqr-test.patch diff --git a/gnu/local.mk b/gnu/local.mk index 060470cfea..1f8f936917 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1015,8 +1015,7 @@ dist_patch_DATA = \ %D%/packages/patches/ecl-16-libffi.patch \ %D%/packages/patches/efibootmgr-remove-extra-decl.patch \ %D%/packages/patches/efivar-211.patch \ - %D%/packages/patches/eigen-remove-openmp-error-counting.patch \ - %D%/packages/patches/eigen-stabilise-sparseqr-test.patch \ + %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \ %D%/packages/patches/einstein-build.patch \ %D%/packages/patches/elfutils-tests-ptrace.patch \ %D%/packages/patches/elixir-path-length.patch \ diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 6823531cc0..fa0e09276d 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -986,20 +986,17 @@ (define-public ginac (define-public eigen (package (name "eigen") - (version "3.3.8") + (version "3.4.0") (source (origin - (method url-fetch) - (uri (list - (string-append "https://bitbucket.org/eigen/eigen/get/" - version ".tar.bz2") - (string-append "mirror://debian/pool/main/e/eigen3/eigen3_" - version ".orig.tar.bz2"))) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/libeigen/eigen.git") + (commit version))) (sha256 (base32 - "1vxrsncfnkyq6gwxpsannpryp12mk7lc8f42ybvz3saf7icwc582")) - (file-name (string-append name "-" version ".tar.bz2")) - (patches (search-patches "eigen-remove-openmp-error-counting.patch" - "eigen-stabilise-sparseqr-test.patch")) + "0k1c4qnymwwvm68rv6s0cyk08xbw65ixvwqccsh36c2axcqk3znp")) + (file-name (git-file-name name version)) + (patches (search-patches "eigen-fix-strict-aliasing-bug.patch")) (modules '((guix build utils))) (snippet ;; There are 3 test failures in the "unsupported" directory, diff --git a/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch b/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch new file mode 100644 index 0000000000..139d633c44 --- /dev/null +++ b/gnu/packages/patches/eigen-fix-strict-aliasing-bug.patch @@ -0,0 +1,73 @@ +From f046e326d9e30772725d8fb26dc33328e418d9d3 Mon Sep 17 00:00:00 2001 +From: Antonio Sanchez +Date: Fri, 17 Sep 2021 12:49:01 -0700 +Subject: [PATCH] Fix strict aliasing bug causing product_small failure. + +Packet loading is skipped due to aliasing violation, leading to nullopt matrix +multiplication. + +Fixes #2327. + + +(cherry picked from commit 3c724c44cff3f9e2e9e35351abff0b5c022b320d) +--- + Eigen/src/Core/arch/AVX/Complex.h | 4 +++- + Eigen/src/Core/arch/AVX512/Complex.h | 4 +++- + Eigen/src/Core/arch/SSE/Complex.h | 11 +++-------- + 3 files changed, 9 insertions(+), 10 deletions(-) + +diff --git a/Eigen/src/Core/arch/AVX/Complex.h b/Eigen/src/Core/arch/AVX/Complex.h +index ab7bd6c65..e9096c0a1 100644 +--- a/Eigen/src/Core/arch/AVX/Complex.h ++++ b/Eigen/src/Core/arch/AVX/Complex.h +@@ -99,7 +99,9 @@ template<> EIGEN_STRONG_INLINE Packet4cf ploadu(const std::complex EIGEN_STRONG_INLINE Packet4cf pset1(const std::complex& from) + { +- return Packet4cf(_mm256_castpd_ps(_mm256_broadcast_sd((const double*)(const void*)&from))); ++ const float re = std::real(from); ++ const float im = std::imag(from); ++ return Packet4cf(_mm256_set_ps(im, re, im, re, im, re, im, re)); + } + + template<> EIGEN_STRONG_INLINE Packet4cf ploaddup(const std::complex* from) +diff --git a/Eigen/src/Core/arch/AVX512/Complex.h b/Eigen/src/Core/arch/AVX512/Complex.h +index 49c72b3f1..074253859 100644 +--- a/Eigen/src/Core/arch/AVX512/Complex.h ++++ b/Eigen/src/Core/arch/AVX512/Complex.h +@@ -97,7 +97,9 @@ template<> EIGEN_STRONG_INLINE Packet8cf ploadu(const std::complex EIGEN_STRONG_INLINE Packet8cf pset1(const std::complex& from) + { +- return Packet8cf(_mm512_castpd_ps(pload1((const double*)(const void*)&from))); ++ const float re = std::real(from); ++ const float im = std::imag(from); ++ return Packet8cf(_mm512_set_ps(im, re, im, re, im, re, im, re, im, re, im, re, im, re, im, re)); + } + + template<> EIGEN_STRONG_INLINE Packet8cf ploaddup(const std::complex* from) +diff --git a/Eigen/src/Core/arch/SSE/Complex.h b/Eigen/src/Core/arch/SSE/Complex.h +index 8fe22da46..215bfd7bb 100644 +--- a/Eigen/src/Core/arch/SSE/Complex.h ++++ b/Eigen/src/Core/arch/SSE/Complex.h +@@ -106,14 +106,9 @@ template<> EIGEN_STRONG_INLINE Packet2cf ploadu(const std::complex EIGEN_STRONG_INLINE Packet2cf pset1(const std::complex& from) + { +- Packet2cf res; +-#ifdef EIGEN_VECTORIZE_SSE3 +- res.v = _mm_castpd_ps(_mm_loaddup_pd(reinterpret_cast(&from))); +-#else +- res.v = _mm_castpd_ps(_mm_load_sd(reinterpret_cast(&from))); +- res.v = _mm_movelh_ps(res.v, res.v); +-#endif +- return res; ++ const float re = std::real(from); ++ const float im = std::imag(from); ++ return Packet2cf(_mm_set_ps(im, re, im, re)); + } + + template<> EIGEN_STRONG_INLINE Packet2cf ploaddup(const std::complex* from) { return pset1(*from); } +-- +2.37.0 + diff --git a/gnu/packages/patches/eigen-remove-openmp-error-counting.patch b/gnu/packages/patches/eigen-remove-openmp-error-counting.patch deleted file mode 100644 index 556474e8b3..0000000000 --- a/gnu/packages/patches/eigen-remove-openmp-error-counting.patch +++ /dev/null @@ -1,64 +0,0 @@ -From ef3cc72cb65e2d500459c178c63e349bacfa834f Mon Sep 17 00:00:00 2001 -From: Luke Peterson -Date: Thu, 8 Oct 2020 12:16:53 -0700 -Subject: [PATCH] Remove error counting in OpenMP parallelize_gemm - -This resolves a compilation error associated with -Eigen::eigen_assert_exception. It also eliminates the counting of -exceptions that may occur in the OpenMP parallel section. If an -unhandled exception occurs in this section, the behavior is non-conforming -according to the OpenMP specification. ---- - Eigen/src/Core/products/Parallelizer.h | 14 +++++--------- - test/CMakeLists.txt | 2 +- - 2 files changed, 6 insertions(+), 10 deletions(-) - -diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h -index 67b2442b5..a3cc05b77 100644 ---- a/Eigen/src/Core/products/Parallelizer.h -+++ b/Eigen/src/Core/products/Parallelizer.h -@@ -132,8 +132,7 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth, - - ei_declare_aligned_stack_constructed_variable(GemmParallelInfo,info,threads,0); - -- int errorCount = 0; -- #pragma omp parallel num_threads(threads) reduction(+: errorCount) -+ #pragma omp parallel num_threads(threads) - { - Index i = omp_get_thread_num(); - // Note that the actual number of threads might be lower than the number of request ones. -@@ -152,14 +151,11 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth, - info[i].lhs_start = r0; - info[i].lhs_length = actualBlockRows; - -- EIGEN_TRY { -- if(transpose) func(c0, actualBlockCols, 0, rows, info); -- else func(0, rows, c0, actualBlockCols, info); -- } EIGEN_CATCH(...) { -- ++errorCount; -- } -+ if(transpose) -+ func(c0, actualBlockCols, 0, rows, info); -+ else -+ func(0, rows, c0, actualBlockCols, info); - } -- if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception()); - #endif - } - -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 0747aa6cb..b02577780 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -163,7 +163,7 @@ ei_add_test(constructor) - ei_add_test(linearstructure) - ei_add_test(integer_types) - ei_add_test(unalignedcount) --if(NOT EIGEN_TEST_NO_EXCEPTIONS) -+if(NOT EIGEN_TEST_NO_EXCEPTIONS AND NOT EIGEN_TEST_OPENMP) - ei_add_test(exceptions) - endif() - ei_add_test(redux) --- -GitLab - diff --git a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch b/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch deleted file mode 100644 index b95b46077a..0000000000 --- a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: Tobias Geerinckx-Rice -Date: Mon, 16 Mar 2020 22:51:37 +0000 -Subject: gnu: eigen: Stabilise sparseqr test. - -Taken verbatim from this[0] upstream commit. - -[0]: https://gitlab.com/libeigen/eigen/-/commit/3b5deeb546d4017b24846f5b0dc3296a50a039fe - -From 3b5deeb546d4017b24846f5b0dc3296a50a039fe Mon Sep 17 00:00:00 2001 -From: Gael Guennebaud -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 void test_sparseqr_scalar() - { -+ typedef typename NumTraits::Real RealScalar; - typedef SparseMatrix MatrixType; - typedef Matrix DenseMat; - typedef Matrix DenseVector; -@@ -91,14 +92,34 @@ template 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 dqr(dA); - refX = dqr.solve(b); - -- VERIFY_IS_EQUAL(dqr.rank(), solver.rank()); -+ bool rank_deficient = A.cols()>A.rows() || dqr.rank() 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::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 --- -2.24.1 - base-commit: e0d2f8164e6a1c15fdcae6f7dadb05c0c9e25352 -- 2.37.0