summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authoreschnett <eschnett@17b73243-c579-4c4c-a9d2-2d5706c11dac>2012-10-22 18:19:03 +0000
committereschnett <eschnett@17b73243-c579-4c4c-a9d2-2d5706c11dac>2012-10-22 18:19:03 +0000
commit97ca065e9e98b45adb820e5a80bafd17120355e4 (patch)
tree24f1c6edfb814174f7307fdac81079f3647351aa /src/util
parent8dce20df720b35dc1fe400c9e9fb45843a31ad36 (diff)
Provide macros to always make isnan available under its standard name
Provide macros to always make isnan available under its standard name, even if it actually needs to be called in a different manner. Provide C wrapper functions for isnan, which can function as fallback for C++. git-svn-id: http://svn.cactuscode.org/flesh/trunk@4882 17b73243-c579-4c4c-a9d2-2d5706c11dac
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\