From 79198eda881f29346fdf74f2c0d907000efde2b4 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 24 Jun 2014 11:45:20 +0000
Subject: [PATCH] trying to fix isnan/isinf on msvc

---
 Numeric/MetricBasis.cpp | 2 +-
 Numeric/MetricBasis.h   | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/Numeric/MetricBasis.cpp b/Numeric/MetricBasis.cpp
index a5a9a5c7a8..d07f1639bf 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 87ad416aba..4b2bb9d861 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 {
-- 
GitLab