aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreschnett <eschnett@105869f7-3296-0410-a4ea-f4349344b45a>2012-04-02 22:00:40 +0000
committereschnett <eschnett@105869f7-3296-0410-a4ea-f4349344b45a>2012-04-02 22:00:40 +0000
commite07a351d694a99f412ecf505311e9d71dbb1332f (patch)
treebe3a2f0ccd69da5b94cb180c328db14180c211e7
parentb21da6f8ea2a34554be2f87b27eef895c888ccf4 (diff)
Implement asin, sinh, asinh, and friends
git-svn-id: https://svn.cct.lsu.edu/repos/numrel/LSUThorns/Vectors/trunk@55 105869f7-3296-0410-a4ea-f4349344b45a
-rw-r--r--src/test.cc12
-rw-r--r--src/vectors-4-Altivec.h33
-rw-r--r--src/vectors-4-SSE.h37
-rw-r--r--src/vectors-4-default.h32
-rw-r--r--src/vectors-8-AVX.h71
-rw-r--r--src/vectors-8-DoubleHummer.h35
-rw-r--r--src/vectors-8-SSE2.h37
-rw-r--r--src/vectors-8-VSX.h31
-rw-r--r--src/vectors-8-default.h32
-rw-r--r--src/vectors.h26
10 files changed, 259 insertions, 87 deletions
diff --git a/src/test.cc b/src/test.cc
index efd66ad..f5ecbd2 100644
--- a/src/test.cc
+++ b/src/test.cc
@@ -194,17 +194,27 @@ void Vectors_Test(CCTK_ARGUMENTS)
VECTEST("knmadd", knmadd(av, bv, cv), -a[i] * b[i] - c[i] );
VECTEST("knmsub", knmsub(av, bv, cv), -a[i] * b[i] + c[i] );
+ VECTEST("kacos", kacos(av), acos(a[i]) );
+ VECTEST("kacosh", kacosh(av), acosh(a[i]) );
+ VECTEST("kasin", kasin(av), asin(a[i]) );
+ VECTEST("kasinh", kasinh(av), asinh(a[i]) );
+ VECTEST("katan", katan(av), atan(a[i]) );
+ VECTEST("katan2", katan2(av, bv), atan2(a[i], b[i]) );
+ VECTEST("katanh", katanh(av), atanh(a[i]) );
VECTEST("kcos", kcos(av), cos(a[i]) );
+ VECTEST("kcosh", kcosh(av), cosh(a[i]) );
VECTEST("kexp", kexp(av), exp(a[i]) );
VECTEST("kfabs", kfabs(av), fabs(a[i]) );
VECTEST("kfmax", kfmax(av, bv), fmax(a[i], b[i]) );
VECTEST("kfmin", kfmin(av, bv), fmin(a[i], b[i]) );
VECTEST("kfnabs", kfnabs(av), -fabs(a[i]) );
VECTEST("klog", klog(av), log(a[i]) );
- VECTEST("kpow", kpow(av, 3.14159), pow(a[i], 3.14159) );
+ VECTEST("kpow", kpow(av, b[0]), pow(a[i], b[0]) );
VECTEST("ksin", ksin(av), sin(a[i]) );
+ VECTEST("ksinh", ksinh(av), sinh(a[i]) );
VECTEST("ksqrt", ksqrt(av), sqrt(a[i]) );
VECTEST("ktan", ktan(av), tan(a[i]) );
+ VECTEST("ktanh", ktanh(av), tanh(a[i]) );
VECTEST("kifpos positive",
kifpos(av, bv, cv), my_signbit(a[i]) ? c[i] : b[i]);
diff --git a/src/vectors-4-Altivec.h b/src/vectors-4-Altivec.h
index 45e91d3..78c07ca 100644
--- a/src/vectors-4-Altivec.h
+++ b/src/vectors-4-Altivec.h
@@ -144,7 +144,7 @@
f(vec4_elt2(x)), \
f(vec4_elt3(x))); \
})
-#define K4REPL2(f,x_,a_) \
+#define K4REPL2S(f,x_,a_) \
({ \
CCTK_REAL4_VEC const x__=(x_); \
CCTK_REAL4 const a__=(a_); \
@@ -155,11 +155,34 @@
f(vec4_elt2(x),a), \
f(vec4_elt3(x),a)); \
})
+#define K4REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL4_VEC const x__=(x_); \
+ CCTK_REAL4_VEC const y__=(y_); \
+ CCTK_REAL4_VEC const x=x__; \
+ CCTK_REAL4_VEC const y=y__; \
+ vec4_set(f(vec4_elt0(x),vec4_elt0(y)), \
+ f(vec4_elt1(x),vec4_elt1(y)), \
+ f(vec4_elt2(x),vec4_elt2(y)), \
+ f(vec4_elt3(x),vec4_elt3(y))); \
+ })
-#define k4exp(x) K4REPL(exp,x)
-#define k4log(x) K4REPL(log,x)
-#define k4pow(x,a) K4REPL2(pow,x,a)
-#define k4sqrt(x) K4REPL(sqrt,x)
+#define k4acos(x) K4REPL(acosf,x)
+#define k4acosh(x) K4REPL(acoshf,x)
+#define k4asin(x) K4REPL(asinf,x)
+#define k4asinh(x) K4REPL(asinhf,x)
+#define k4atan(x) K4REPL(atanf,x)
+#define k4atan2(x,y) K4REPL2(atan2f,x,y)
+#define k4atanh(x) K4REPL(atanhf,x)
+#define k4cos(x) K4REPL(cosf,x)
+#define k4cosh(x) K4REPL(coshf,x)
+#define k4exp(x) K4REPL(expf,x)
+#define k4log(x) K4REPL(logf,x)
+#define k4pow(x,a) K4REPL2S(powf,x,a)
+#define k4sin(x) K4REPL(sinf,x)
+#define k4sinh(x) K4REPL(sinhf,x)
+#define k4tan(x) K4REPL(tanf,x)
+#define k4tanh(x) K4REPL(tanhf,x)
#define k4ifmsb(x,y,z) \
(vec_sel((z), (y), vec_sra(vec_convert((x), &(vector int*)0), 31)))
diff --git a/src/vectors-4-SSE.h b/src/vectors-4-SSE.h
index 46fc4da..68388b6 100644
--- a/src/vectors-4-SSE.h
+++ b/src/vectors-4-SSE.h
@@ -323,7 +323,7 @@ static const union {
f(vec4_elt2(x)), \
f(vec4_elt3(x))); \
})
-#define K4REPL2(f,x_,a_) \
+#define K4REPL2S(f,x_,a_) \
({ \
CCTK_REAL4_VEC const x__=(x_); \
CCTK_REAL4 const a__=(a_); \
@@ -334,13 +334,34 @@ static const union {
f(vec4_elt2(x),a), \
f(vec4_elt3(x),a)); \
})
+#define K4REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL4_VEC const x__=(x_); \
+ CCTK_REAL4_VEC const y__=(y_); \
+ CCTK_REAL4_VEC const x=x__; \
+ CCTK_REAL4_VEC const y=y__; \
+ vec4_set(f(vec4_elt0(x),vec4_elt0(y)), \
+ f(vec4_elt1(x),vec4_elt1(y)), \
+ f(vec4_elt2(x),vec4_elt2(y)), \
+ f(vec4_elt3(x),vec4_elt3(y))); \
+ })
-#define k4cos(x) K4REPL(cos,x)
-#define k4exp(x) K4REPL(exp,x)
-#define k4log(x) K4REPL(log,x)
-#define k4pow(x,a) K4REPL2(pow,x,a)
-#define k4sin(x) K4REPL(sin,x)
-#define k4tan(x) K4REPL(tan,x)
+#define k4acos(x) K4REPL(acosf,x)
+#define k4acosh(x) K4REPL(acoshf,x)
+#define k4asin(x) K4REPL(asinf,x)
+#define k4asinh(x) K4REPL(asinhf,x)
+#define k4atan(x) K4REPL(atanf,x)
+#define k4atan2(x,y) K4REPL2(atan2f,x,y)
+#define k4atanh(x) K4REPL(atanhf,x)
+#define k4cos(x) K4REPL(cosf,x)
+#define k4cosh(x) K4REPL(coshf,x)
+#define k4exp(x) K4REPL(expf,x)
+#define k4log(x) K4REPL(logf,x)
+#define k4pow(x,a) K4REPL2S(powf,x,a)
+#define k4sin(x) K4REPL(sinf,x)
+#define k4sinh(x) K4REPL(sinhf,x)
+#define k4tan(x) K4REPL(tanf,x)
+#define k4tanh(x) K4REPL(tanhf,x)
// Choice [sign(x)>0 ? y : z]
#ifdef __SSE4_1__
@@ -349,7 +370,7 @@ static const union {
# ifdef __cplusplus
# define k4sgn(x) ({ using namespace std; signbit(x); })
# else
-# define k4sgn(x) (signbit(x))
+# define k4sgn(x) (signbitf(x))
# endif
# define k4ifmsb(x,y,z) \
({ \
diff --git a/src/vectors-4-default.h b/src/vectors-4-default.h
index 361a7dd..ff675f6 100644
--- a/src/vectors-4-default.h
+++ b/src/vectors-4-default.h
@@ -79,17 +79,27 @@
#define k4nmsub(x,y,z) (-(x)*(y)+(z))
// Functions
-#define k4cos(x) (cosf(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 k4sqrt(x) (sqrtf(x))
-#define k4tan(x) (tanf(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 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))
#ifdef __cplusplus
# define k4sgn(x) ({ using namespace std; signbit(x); })
diff --git a/src/vectors-8-AVX.h b/src/vectors-8-AVX.h
index 274b376..9e1d98b 100644
--- a/src/vectors-8-AVX.h
+++ b/src/vectors-8-AVX.h
@@ -238,29 +238,54 @@ static const k8const_t k8abs_mask_union =
#define k8sqrt(x) (_mm256_sqrt_pd(x))
// Expensive functions
-#define K8REPL(f,x) \
-({ \
- CCTK_REAL8_VEC const xfunc=(x); \
- vec8_set(f(vec8_elt0(xfunc)), \
- f(vec8_elt1(xfunc)), \
- f(vec8_elt2(xfunc)), \
- f(vec8_elt3(xfunc))); \
-})
-#define K8REPL2(f,x,a) \
-({ \
- CCTK_REAL8_VEC const xfunc=(x); \
- CCTK_REAL8 const afunc=(a); \
- vec8_set(f(vec8_elt0(xfunc),afunc), \
- f(vec8_elt1(xfunc),afunc), \
- f(vec8_elt2(xfunc),afunc), \
- f(vec8_elt3(xfunc),afunc)); \
-})
-#define k8cos(x) K8REPL(cos,x)
-#define k8exp(x) K8REPL(exp,x)
-#define k8log(x) K8REPL(log,x)
-#define k8pow(x,a) K8REPL2(pow,x,a)
-#define k8sin(x) K8REPL(sin,x)
-#define k8tan(x) K8REPL(tan,x)
+#define K8REPL(f,x_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8_VEC const x=x__; \
+ vec8_set(f(vec8_elt0(x)), \
+ f(vec8_elt1(x)), \
+ f(vec8_elt2(x)), \
+ f(vec8_elt3(x))); \
+ })
+#define K8REPL2S(f,x_,a_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8 const a__=(a_); \
+ CCTK_REAL8_VEC const x=x__; \
+ CCTK_REAL8 const a=a__; \
+ vec8_set(f(vec8_elt0(x),a), \
+ f(vec8_elt1(x),a), \
+ f(vec8_elt2(x),a), \
+ f(vec8_elt3(x),a)); \
+ })
+#define K8REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8_VEC const y__=(y_); \
+ CCTK_REAL8_VEC const x=x__; \
+ CCTK_REAL8_VEC const y=y__; \
+ vec8_set(f(vec8_elt0(x),vec8_elt0(y)), \
+ f(vec8_elt1(x),vec8_elt1(y)), \
+ f(vec8_elt2(x),vec8_elt2(y)), \
+ f(vec8_elt3(x),vec8_elt3(y))); \
+ })
+
+#define k8acos(x) K8REPL(acos,x)
+#define k8acosh(x) K8REPL(acosh,x)
+#define k8asin(x) K8REPL(asin,x)
+#define k8asinh(x) K8REPL(asinh,x)
+#define k8atan(x) K8REPL(atan,x)
+#define k8atan2(x,y) K8REPL2(atan2,x,y)
+#define k8atanh(x) K8REPL(atanh,x)
+#define k8cos(x) K8REPL(cos,x)
+#define k8cosh(x) K8REPL(cosh,x)
+#define k8exp(x) K8REPL(exp,x)
+#define k8log(x) K8REPL(log,x)
+#define k8pow(x,a) K8REPL2S(pow,x,a)
+#define k8sin(x) K8REPL(sin,x)
+#define k8sinh(x) K8REPL(sinh,x)
+#define k8tan(x) K8REPL(tan,x)
+#define k8tanh(x) K8REPL(tanh,x)
// Choice [sign(x)>0 ? y : z]
#define k8ifmsb(x,y,z) (_mm256_blendv_pd(z,y,x))
diff --git a/src/vectors-8-DoubleHummer.h b/src/vectors-8-DoubleHummer.h
index fdc4be7..3366a0a 100644
--- a/src/vectors-8-DoubleHummer.h
+++ b/src/vectors-8-DoubleHummer.h
@@ -224,21 +224,40 @@
vec8_set(f(vec8_elt0(x)), \
f(vec8_elt1(x))); \
})
-#define K8REPL2(f,x_,a_) \
+#define K8REPL2S(f,x_,a_) \
({ \
CCTK_REAL8_VEC const x__=(x_); \
- CCTK_REAL8_VEC const x=x__; \
CCTK_REAL8 const a__=(a_); \
+ CCTK_REAL8_VEC const x=x__; \
CCTK_REAL8 const a=a__; \
vec8_set(f(vec8_elt0(x),a), \
f(vec8_elt1(x),a)); \
})
+#define K8REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8_VEC const y__=(y_); \
+ CCTK_REAL8_VEC const x=x__; \
+ CCTK_REAL8_VEC const y=y__; \
+ vec8_set(f(vec8_elt0(x),vec8_elt0(y)), \
+ f(vec8_elt1(x),vec8_elt1(y))); \
+ })
-#define k8cos(x) K8REPL(cos,x)
-#define k8exp(x) K8REPL(exp,x)
-#define k8log(x) K8REPL(log,x)
-#define k8pow(x,a) K8REPL2(pow,x,a)
-#define k8sin(x) K8REPL(sin,x)
-#define k8tan(x) K8REPL(tan,x)
+#define k8acos(x) K8REPL(acos,x)
+#define k8acosh(x) K8REPL(acosh,x)
+#define k8asin(x) K8REPL(asin,x)
+#define k8asinh(x) K8REPL(asinh,x)
+#define k8atan(x) K8REPL(atan,x)
+#define k8atan2(x,y) K8REPL2(atan2,x,y)
+#define k8atanh(x) K8REPL(atanh,x)
+#define k8cos(x) K8REPL(cos,x)
+#define k8cosh(x) K8REPL(cosh,x)
+#define k8exp(x) K8REPL(exp,x)
+#define k8log(x) K8REPL(log,x)
+#define k8pow(x,a) K8REPL2S(pow,x,a)
+#define k8sin(x) K8REPL(sin,x)
+#define k8sinh(x) K8REPL(sinh,x)
+#define k8tan(x) K8REPL(tan,x)
+#define k8tanh(x) K8REPL(tanh,x)
#define k8ifmsb(x,y,z) (__fpsel(x,y,z))
diff --git a/src/vectors-8-SSE2.h b/src/vectors-8-SSE2.h
index e6e7867..4138a18 100644
--- a/src/vectors-8-SSE2.h
+++ b/src/vectors-8-SSE2.h
@@ -281,7 +281,7 @@ static const union {
vec8_set(f(vec8_elt0(x)), \
f(vec8_elt1(x))); \
})
-#define K8REPL2(f,x_,a_) \
+#define K8REPL2S(f,x_,a_) \
({ \
CCTK_REAL8_VEC const x__=(x_); \
CCTK_REAL8 const a__=(a_); \
@@ -290,13 +290,32 @@ static const union {
vec8_set(f(vec8_elt0(x),a), \
f(vec8_elt1(x),a)); \
})
+#define K8REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8_VEC const y__=(y_); \
+ CCTK_REAL8_VEC const x=x__; \
+ CCTK_REAL8_VEC const y=y__; \
+ vec8_set(f(vec8_elt0(x),vec8_elt0(y)), \
+ f(vec8_elt1(x),vec8_elt1(y))); \
+ })
-#define k8cos(x) K8REPL(cos,x)
-#define k8exp(x) K8REPL(exp,x)
-#define k8log(x) K8REPL(log,x)
-#define k8pow(x,a) K8REPL2(pow,x,a)
-#define k8sin(x) K8REPL(sin,x)
-#define k8tan(x) K8REPL(tan,x)
+#define k8acos(x) K8REPL(acos,x)
+#define k8acosh(x) K8REPL(acosh,x)
+#define k8asin(x) K8REPL(asin,x)
+#define k8asinh(x) K8REPL(asinh,x)
+#define k8atan(x) K8REPL(atan,x)
+#define k8atan2(x,y) K8REPL2(atan2,x,y)
+#define k8atanh(x) K8REPL(atanh,x)
+#define k8cos(x) K8REPL(cos,x)
+#define k8cosh(x) K8REPL(cosh,x)
+#define k8exp(x) K8REPL(exp,x)
+#define k8log(x) K8REPL(log,x)
+#define k8pow(x,a) K8REPL2S(pow,x,a)
+#define k8sin(x) K8REPL(sin,x)
+#define k8sinh(x) K8REPL(sinh,x)
+#define k8tan(x) K8REPL(tan,x)
+#define k8tanh(x) K8REPL(tanh,x)
// Choice [sign(x)>0 ? y : z]
#ifdef __SSE4_1__
@@ -315,8 +334,8 @@ static const union {
CCTK_REAL8_VEC r; \
switch (m) { \
case 0: r = y; break; \
- case 1: r = _mm_move_sd(y,z); break; \
- case 2: r = _mm_move_sd(z,y); break; \
+ case 1: r = _mm_move_sd(y,z); break; \
+ case 2: r = _mm_move_sd(z,y); break; \
case 3: r = z; break; \
} \
r; \
diff --git a/src/vectors-8-VSX.h b/src/vectors-8-VSX.h
index 93249a5..8007bb2 100644
--- a/src/vectors-8-VSX.h
+++ b/src/vectors-8-VSX.h
@@ -93,7 +93,7 @@
vec8_set(f(vec8_elt0(x)), \
f(vec8_elt1(x))); \
})
-#define K8REPL2(f,x_,a_) \
+#define K8REPL2S(f,x_,a_) \
({ \
CCTK_REAL8_VEC const x__=(x_); \
CCTK_REAL8 const a__=(a_); \
@@ -102,11 +102,32 @@
vec8_set(f(vec8_elt0(x),a), \
f(vec8_elt1(x),a)); \
})
+#define K8REPL2(f,x_,y_) \
+ ({ \
+ CCTK_REAL8_VEC const x__=(x_); \
+ CCTK_REAL8_VEC const y__=(y_); \
+ CCTK_REAL8_VEC const x=x__; \
+ CCTK_REAL8_VEC const y=y__; \
+ vec8_set(f(vec8_elt0(x),vec8_elt0(y)), \
+ f(vec8_elt1(x),vec8_elt1(y))); \
+ })
-#define k8exp(x) K8REPL(exp,x)
-#define k8log(x) K8REPL(log,x)
-#define k8pow(x,a) K8REPL2(pow,x,a)
-#define k8sqrt(x) K8REPL(sqrt,x)
+#define k8acos(x) K8REPL(acos,x)
+#define k8acosh(x) K8REPL(acosh,x)
+#define k8asin(x) K8REPL(asin,x)
+#define k8asinh(x) K8REPL(asinh,x)
+#define k8atan(x) K8REPL(atan,x)
+#define k8atan2(x,y) K8REPL2(atan2,x,y)
+#define k8atanh(x) K8REPL(atanh,x)
+#define k8cos(x) K8REPL(cos,x)
+#define k8cosh(x) K8REPL(cosh,x)
+#define k8exp(x) K8REPL(exp,x)
+#define k8log(x) K8REPL(log,x)
+#define k8pow(x,a) K8REPL2S(pow,x,a)
+#define k8sin(x) K8REPL(sin,x)
+#define k8sinh(x) K8REPL(sinh,x)
+#define k8tan(x) K8REPL(tan,x)
+#define k8tanh(x) K8REPL(tanh,x)
#define k8ifmsb(x,y,z) \
(vec_sel((z), (y), vec_sra(vec_convert((x), &(vector long long*)0), 63)))
diff --git a/src/vectors-8-default.h b/src/vectors-8-default.h
index ee85593..94d9ed4 100644
--- a/src/vectors-8-default.h
+++ b/src/vectors-8-default.h
@@ -76,17 +76,27 @@
#define k8nmsub(x,y,z) (-(x)*(y)+(z))
// Functions
-#define k8cos(x) (cos(x))
-#define k8exp(x) (exp(x))
-#define k8fabs(x) (fabs(x))
-#define k8fmax(x,y) (fmax(x,y))
-#define k8fmin(x,y) (fmin(x,y))
-#define k8fnabs(x) (-fabs(x))
-#define k8log(x) (log(x))
-#define k8pow(x,a) (pow(x,a))
-#define k8sin(x) (sin(x))
-#define k8sqrt(x) (sqrt(x))
-#define k8tan(x) (tan(x))
+#define k8acos(x) (acos(x))
+#define k8acosh(x) (acosh(x))
+#define k8asin(x) (asin(x))
+#define k8asinh(x) (asinh(x))
+#define k8atan(x) (atan(x))
+#define k8atan2(x,y) (atan2(x,y))
+#define k8atanh(x) (atanh(x))
+#define k8cos(x) (cos(x))
+#define k8cosh(x) (cosh(x))
+#define k8exp(x) (exp(x))
+#define k8fabs(x) (fabs(x))
+#define k8fmax(x,y) (fmax(x,y))
+#define k8fmin(x,y) (fmin(x,y))
+#define k8fnabs(x) (-fabs(x))
+#define k8log(x) (log(x))
+#define k8pow(x,a) (pow(x,a))
+#define k8sin(x) (sin(x))
+#define k8sinh(x) (sinh(x))
+#define k8sqrt(x) (sqrt(x))
+#define k8tan(x) (tan(x))
+#define k8tanh(x) (tanh(x))
#ifdef __cplusplus
# define k8sgn(x) ({ using namespace std; signbit(x); })
diff --git a/src/vectors.h b/src/vectors.h
index 6cb1238..316904e 100644
--- a/src/vectors.h
+++ b/src/vectors.h
@@ -80,7 +80,15 @@
# define knmadd k4nmadd
# define knmsub k4nmsub
+# define kacos k4acos
+# define kacosh k4acosh
+# define kasin k4asin
+# define kasinh k4asinh
+# define katan k4atan
+# define katan2 k4atan2
+# define katanh k4atanh
# define kcos k4cos
+# define kcosh k4cosh
# define kexp k4exp
# define kfabs k4fabs
# define kfmax k4fmax
@@ -89,8 +97,10 @@
# define klog k4log
# define kpow k4pow
# define ksin k4sin
+# define ksinh k4sinh
# define ksqrt k4sqrt
# define ktan k4tan
+# define ktanh k4tanh
# define kifmsb k4ifmsb
@@ -131,7 +141,15 @@
# define knmadd k8nmadd
# define knmsub k8nmsub
+# define kacos k8acos
+# define kacosh k8acosh
+# define kasin k8asin
+# define kasinh k8asinh
+# define katan k8atan
+# define katan2 k8atan2
+# define katanh k8atanh
# define kcos k8cos
+# define kcosh k8cosh
# define kexp k8exp
# define kfabs k8fabs
# define kfmax k8fmax
@@ -140,8 +158,10 @@
# define klog k8log
# define kpow k8pow
# define ksin k8sin
+# define ksinh k8sinh
# define ksqrt k8sqrt
# define ktan k8tan
+# define ktanh k8tanh
# define kifmsb k8ifmsb
@@ -325,12 +345,6 @@ struct vecprops<CCTK_REAL8> {
# define KRANC_DIFF_FUNCTIONS
# endif
-# undef E
-# define E (ToReal(M_E))
-
-# undef Pi
-# define Pi (ToReal(M_PI))
-
# undef Sign
# define Sign(x) -999999999 // poison