fix bug #176 (workaround a too aggressive optimization made by ICC)

This commit is contained in:
Gael Guennebaud 2011-02-21 11:00:07 +01:00
parent 3c00e3da03
commit 2d5ea82807

View File

@ -214,6 +214,9 @@ void jacobisvd_method()
template<typename Scalar>
EIGEN_DONT_INLINE Scalar zero() { return Scalar(0); }
// workaround aggressive optimization in ICC
template<typename T> EIGEN_DONT_INLINE T sub(T a, T b) { return a - b; }
template<typename MatrixType>
void jacobisvd_inf_nan()
{
@ -222,7 +225,7 @@ void jacobisvd_inf_nan()
JacobiSVD<MatrixType> svd;
typedef typename MatrixType::Scalar Scalar;
Scalar some_inf = Scalar(1) / zero<Scalar>();
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<Scalar>() / zero<Scalar>();