#ifndef CLITKPORTABILITY_H
 #define CLITKPORTABILITY_H
-  
+
 #if defined(WIN32)
 #  define rint(x)  floor(x+0.5)
 #  define lrint(x) (long)rint(x) 
 #  define _USE_MATH_DEFINES
 #endif
 
+template<typename T>
+int IsNormal(const T val) {
+#if defined(_MSC_VER)
+  return _finite(val);
+#elif defined(unix)
+  return std::isnormal(val);
+#endif
+}
+
 #endif /* end #define CLITKPORTABILITY_H */
 
             else //Use the original formula as described in Guerrero's paper
                 vol_change=static_cast<TOutput>( 1000. * (Bstar-A) / (A*(1000.+Bstar)) );
 
-            if (std::isnormal(vol_change))
+            if (IsNormal(vol_change))
                 return vol_change;
             else
                 return 0.;