diff --git a/Numeric/MetricBasis.cpp b/Numeric/MetricBasis.cpp index a5a9a5c7a8b8225d1a29fd2219c1c9de74a74f3c..d07f1639bf83b9cd93a6cf0eafe6d670df6cf0a6 100644 --- a/Numeric/MetricBasis.cpp +++ b/Numeric/MetricBasis.cpp @@ -1133,7 +1133,7 @@ double MetricBasis::_subdivideForRmin( md = subdomains.top(); double ans = md->_RminBez; - if (std::isnan(ans)) Msg::Error("ISNAN %d", subdomains.size()); + if (_chknumber(ans)) Msg::Error("ISNAN %d", subdomains.size()); while (subdomains.size()) { md = subdomains.top(); diff --git a/Numeric/MetricBasis.h b/Numeric/MetricBasis.h index 87ad416abae73f1e8af3c211b09f4827dd9b6987..4b2bb9d861bd9c3dcb7c80da5b1a251e33a27907 100644 --- a/Numeric/MetricBasis.h +++ b/Numeric/MetricBasis.h @@ -113,7 +113,13 @@ private: const double phi = std::acos(x) / 3; return (a + 2*std::cos(phi + 2*M_PI/3)) / (a + 2*std::cos(phi)); } - bool _chknumber(double val) const {return std::isnan(val) || std::isinf(val);} + bool _chknumber(double val) const { +#if defined(_MSC_VER) + return _isnan(val) || _isinf(val); +#else + return std::isnan(val) || std::isinf(val); +#endif + } bool _chka(double a) const {return _chknumber(a) || a < 1;} bool _chkK(double K) const {return _chknumber(K) || K < 0;} int _chkaK(double a, double K) const {