From e07a351d694a99f412ecf505311e9d71dbb1332f Mon Sep 17 00:00:00 2001 From: eschnett Date: Mon, 2 Apr 2012 22:00:40 +0000 Subject: 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 --- src/test.cc | 12 +++++++- src/vectors-4-Altivec.h | 33 ++++++++++++++++---- src/vectors-4-SSE.h | 37 ++++++++++++++++++----- src/vectors-4-default.h | 32 +++++++++++++------- src/vectors-8-AVX.h | 71 ++++++++++++++++++++++++++++++-------------- src/vectors-8-DoubleHummer.h | 35 +++++++++++++++++----- src/vectors-8-SSE2.h | 37 +++++++++++++++++------ src/vectors-8-VSX.h | 31 +++++++++++++++---- src/vectors-8-default.h | 32 +++++++++++++------- src/vectors.h | 26 ++++++++++++---- 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 { # 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 -- cgit v1.2.3