aboutsummaryrefslogtreecommitdiff
path: root/src/vectors-4-default.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vectors-4-default.h')
-rw-r--r--src/vectors-4-default.h57
1 files changed, 32 insertions, 25 deletions
diff --git a/src/vectors-4-default.h b/src/vectors-4-default.h
index ff675f6..d1b2135 100644
--- a/src/vectors-4-default.h
+++ b/src/vectors-4-default.h
@@ -64,7 +64,6 @@
// Operators
-#define k4pos(x) (+(x))
#define k4neg(x) (-(x))
#define k4add(x,y) ((x)+(y))
@@ -79,32 +78,40 @@
#define k4nmsub(x,y,z) (-(x)*(y)+(z))
// Functions
-#define k4acos(x) (acosf(x))
-#define k4acosh(x) (acoshf(x))
-#define k4asin(x) (asinf(x))
-#define k4asinh(x) (asinhf(x))
-#define k4atan(x) (atanf(x))
-#define k4atan2(x,y) (atan2f(x,y))
-#define k4atanh(x) (atanhf(x))
-#define k4cos(x) (cosf(x))
-#define k4cosh(x) (coshf(x))
-#define k4exp(x) (expf(x))
-#define k4fabs(x) (fabsf(x))
-#define k4fmax(x,y) (fmaxf(x,y))
-#define k4fmin(x,y) (fminf(x,y))
-#define k4fnabs(x) (-fabsf(x))
-#define k4log(x) (logf(x))
-#define k4pow(x,a) (powf(x,a))
-#define k4sin(x) (sinf(x))
-#define k4sinh(x) (sinhf(x))
-#define k4sqrt(x) (sqrtf(x))
-#define k4tan(x) (tanf(x))
-#define k4tanh(x) (tanhf(x))
+#define k4acos(x) (acosf(x))
+#define k4acosh(x) (acoshf(x))
+#define k4asin(x) (asinf(x))
+#define k4asinh(x) (asinhf(x))
+#define k4atan(x) (atanf(x))
+#define k4atan2(x,y) (atan2f(x,y))
+#define k4atanh(x) (atanhf(x))
+#define k4copysign(x,y) (copysign(x,y))
+#define k4cos(x) (cosf(x))
+#define k4cosh(x) (coshf(x))
+#define k4exp(x) (expf(x))
+#define k4fabs(x) (fabsf(x))
+#define k4fmax(x,y) (fmaxf(x,y))
+#define k4fmin(x,y) (fminf(x,y))
+#define k4fnabs(x) (-fabsf(x))
+#define k4log(x) (logf(x))
+#define k4pow(x,a) (powf(x,a))
+#define k4sin(x) (sinf(x))
+#define k4sinh(x) (sinhf(x))
+#define k4sqrt(x) (sqrtf(x))
+#define k4tan(x) (tanf(x))
+#define k4tanh(x) (tanhf(x))
+
+#define k4sgn(x_) \
+ ({ \
+ CCTK_REAL x__=(x_); \
+ CCTK_REAL x=x__; \
+ x==(CCTK_REAL)0.0 ? (CCTK_REAL)0.0 : copysign((CCTK_REAL)1.0, x); \
+ })
#ifdef __cplusplus
-# define k4sgn(x) ({ using namespace std; signbit(x); })
+# define k4signbit(x) ({ using namespace std; signbit(x); })
#else
-# define k4sgn(x) (signbit(x))
+# define k4signbit(x) (signbit(x))
#endif
-#define k4ifmsb(x,y,z) (k4sgn(x)?(y):(z))
+#define k4ifthen(x,y,z) (k4signbit(x)?(y):(z))