summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/Math.c78
-rw-r--r--src/util/make.code.defn1
2 files changed, 79 insertions, 0 deletions
diff --git a/src/util/Math.c b/src/util/Math.c
new file mode 100644
index 00000000..0d4dccf0
--- /dev/null
+++ b/src/util/Math.c
@@ -0,0 +1,78 @@
+ /*@@
+ @file Math.c
+ @date 2012-10-17
+ @author Erik Schnetter
+ @desc
+ Miscellaneous math routines, providing fallback C
+ implementations for broken C++ compilers, and providing
+ dummy implementations for broken C compilers.
+ @enddesc
+ @@*/
+
+#include <math.h>
+#include <cctk_Config.h>
+
+
+
+double CCTK_copysign(double x, double y)
+{
+#ifdef HAVE_COPYSIGN
+ return copysign(x, y);
+#else
+ return y >= 0.0 ? fabs(x) : -fabs(x);
+#endif
+}
+
+int CCTK_fpclassify(double x)
+{
+#ifdef HAVE_FPCLASSIFY
+ return fpclassify(x);
+#else
+ return 0; /* don't know what else to return */
+#endif
+}
+
+int CCTK_isfinite(double x)
+{
+#ifdef HAVE_ISFINITE
+ return isfinite(x);
+#else
+ return 1; /* default */
+#endif
+}
+
+int CCTK_isinf(double x)
+{
+#ifdef HAVE_ISINF
+ return isinf(x);
+#else
+ return 0; /* default */
+#endif
+}
+
+int CCTK_isnan(double x)
+{
+#ifdef HAVE_ISNAN
+ return isnan(x);
+#else
+ return 0; /* default */
+#endif
+}
+
+int CCTK_isnormal(double x)
+{
+#ifdef HAVE_ISNORMAL
+ return isnormal(x);
+#else
+ return 1; /* default */
+#endif
+}
+
+int CCTK_signbit(double x)
+{
+#ifdef HAVE_SIGNBIT
+ return signbit(x);
+#else
+ return x < 0.0;
+#endif
+}
diff --git a/src/util/make.code.defn b/src/util/make.code.defn
index 547e1459..179e6440 100644
--- a/src/util/make.code.defn
+++ b/src/util/make.code.defn
@@ -13,6 +13,7 @@ SKBinTree.c\
Hash.c\
Cache.c\
Malloc.c\
+Math.c\
snprintf.c\
String.c\
StringList.c\