From 1de2ad70f987012b7bb00e524c13bd438dba37da Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Mon, 15 Oct 2018 10:23:21 +0200
Subject: [PATCH] [PL] try to work around compilation errors.

---
 ProcessLib/CompareJacobiansJacobianAssembler.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/ProcessLib/CompareJacobiansJacobianAssembler.cpp b/ProcessLib/CompareJacobiansJacobianAssembler.cpp
index 8c9972bd505..986872fad32 100644
--- a/ProcessLib/CompareJacobiansJacobianAssembler.cpp
+++ b/ProcessLib/CompareJacobiansJacobianAssembler.cpp
@@ -176,9 +176,16 @@ void CompareJacobiansJacobianAssembler::assembleWithJacobian(
                         (local_Jac1.cwiseAbs() + local_Jac2.cwiseAbs()).array())
             .eval();
 
-    // the !(... <= ...) construct handles NaN correctly.
-    auto const abs_diff_mask = (!(abs_diff.cwiseAbs() <= _abs_tol)).eval();
-    auto const rel_diff_mask = (!(rel_diff.cwiseAbs() <= _rel_tol)).eval();
+    auto const abs_diff_mask =
+        (abs_diff.abs() <= _abs_tol)
+            .select(decltype(abs_diff)::Zero(abs_diff.rows(), abs_diff.cols()),
+                    decltype(abs_diff)::Ones(abs_diff.rows(), abs_diff.cols()))
+            .eval();
+    auto const rel_diff_mask =
+        (rel_diff.abs() <= _rel_tol)
+            .select(decltype(rel_diff)::Zero(rel_diff.rows(), rel_diff.cols()),
+                    decltype(rel_diff)::Ones(rel_diff.rows(), rel_diff.cols()))
+            .eval();
 
     auto const abs_diff_OK = !abs_diff_mask.any();
     auto const rel_diff_OK = !rel_diff_mask.any();
-- 
GitLab