summaryrefslogtreecommitdiff
path: root/libs/qm-dsp/maths/nan-inf.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/qm-dsp/maths/nan-inf.h')
-rw-r--r--libs/qm-dsp/maths/nan-inf.h21
1 files changed, 7 insertions, 14 deletions
diff --git a/libs/qm-dsp/maths/nan-inf.h b/libs/qm-dsp/maths/nan-inf.h
index 8191713000..c6be51276a 100644
--- a/libs/qm-dsp/maths/nan-inf.h
+++ b/libs/qm-dsp/maths/nan-inf.h
@@ -2,19 +2,12 @@
#ifndef NAN_INF_H
#define NAN_INF_H
-#include <math.h>
-
-#ifdef sun
-
-#include <ieeefp.h>
-#define ISNAN(x) ((sizeof(x)==sizeof(float))?isnanf(x):isnand(x))
-#define ISINF(x) (!finite(x))
-
-#else
-
-#define ISNAN(x) isnan(x)
-#define ISINF(x) isinf(x)
-
-#endif
+#define ISNAN(x) (sizeof(x) == sizeof(double) ? ISNANd(x) : ISNANf(x))
+static inline int ISNANf(float x) { return x != x; }
+static inline int ISNANd(double x) { return x != x; }
+
+#define ISINF(x) (sizeof(x) == sizeof(double) ? ISINFd(x) : ISINFf(x))
+static inline int ISINFf(float x) { return !ISNANf(x) && ISNANf(x - x); }
+static inline int ISINFd(double x) { return !ISNANd(x) && ISNANd(x - x); }
#endif