From 2d5ea82807c4ae6ec1fbea928d01cbbdfaf7689f Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 21 Feb 2011 11:00:07 +0100 Subject: [PATCH] fix bug #176 (workaround a too aggressive optimization made by ICC) --- test/jacobisvd.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/jacobisvd.cpp b/test/jacobisvd.cpp index 681852ffa..72681bb73 100644 --- a/test/jacobisvd.cpp +++ b/test/jacobisvd.cpp @@ -214,6 +214,9 @@ void jacobisvd_method() template EIGEN_DONT_INLINE Scalar zero() { return Scalar(0); } +// workaround aggressive optimization in ICC +template EIGEN_DONT_INLINE T sub(T a, T b) { return a - b; } + template void jacobisvd_inf_nan() { @@ -222,7 +225,7 @@ void jacobisvd_inf_nan() JacobiSVD svd; typedef typename MatrixType::Scalar Scalar; Scalar some_inf = Scalar(1) / zero(); - VERIFY((some_inf - some_inf) != (some_inf - some_inf)); + VERIFY(sub(some_inf, some_inf) != sub(some_inf, some_inf)); svd.compute(MatrixType::Constant(10,10,some_inf), ComputeFullU | ComputeFullV); Scalar some_nan = zero() / zero();