sun compatibility
diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 7932e5d..96a3d98 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -6,10 +6,13 @@
 #ifndef _BSD_SOURCE
 #define	_BSD_SOURCE		/* To reintroduce finite(3) */
 #endif
+#include <asn_internal.h>
 #if	defined(__alpha)
 #include <sys/resource.h>	/* For INFINITY */
 #endif
-#include <asn_internal.h>
+#if defined(sun) || defined(__sun)
+#include <ieeefp.h>
+#endif
 #include <stdlib.h>	/* for strtod(3) */
 #include <math.h>
 #include <float.h>
@@ -24,10 +27,10 @@
 static volatile double real_zero CC_NOTUSED = 0.0;
 #endif
 #ifndef	NAN
-#define	NAN	(real_zero/real_zero)
+#define	NAN	(0.0/0.0)
 #endif
 #ifndef	INFINITY
-#define	INFINITY	(1.0/real_zero)
+#define	INFINITY	(1.0/0.0)
 #endif
 
 #if defined(__clang__)