Index: /issm/trunk-jpl/src/c/shared/Numerics/isnan.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/isnan.cpp	(revision 12526)
+++ /issm/trunk-jpl/src/c/shared/Numerics/isnan.cpp	(revision 12527)
@@ -2,7 +2,6 @@
 #ifdef _INTEL_WIN_
 
-int isnan(IssmDouble x){
-	if (x!=x)return 1;
-	else return 0;
+int isnan(IssmPDouble x){
+	return (x!=x)?1:0;
 }
 #endif
Index: /issm/trunk-jpl/src/c/shared/Numerics/isnan.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/isnan.h	(revision 12526)
+++ /issm/trunk-jpl/src/c/shared/Numerics/isnan.h	(revision 12527)
@@ -7,7 +7,16 @@
 
 #ifdef _INTEL_WIN_
-int isnan(IssmDouble X);
+int isnan(IssmPDouble X);
 #endif
 
+template <class T> int xIsNan(const T& X) {
+    return isnan(X);
+}
+
+#ifdef _HAVE_ADOLC_
+template <> int xIsNan<adouble> (const adouble& X) {
+  return isnan(X.getValue());
+}
+#endif
 #endif
 
