diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-08-16 14:53:21 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-08-16 14:53:21 -0400 |
commit | 8f377c56d5b0cc81d5fb7c5cd29b3aeee50957ce (patch) | |
tree | 941bc137debbab99e2aefee017e277a67cf59566 | |
parent | 9c55ecd91943159c1f5183b15de67e3709fa5eaf (diff) |
Reinstate dir[] naming work-around; translate Sign[] to isgn()
-rw-r--r-- | Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h | 11 | ||||
-rw-r--r-- | Tools/CodeGen/CalculationFunction.m | 2 | ||||
-rw-r--r-- | Tools/CodeGen/CodeGenCactus.m | 3 | ||||
-rw-r--r-- | Tools/CodeGen/Kranc.m | 4 |
4 files changed, 16 insertions, 4 deletions
diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h index e3f21a0..81a70d9 100644 --- a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h @@ -63,6 +63,17 @@ KRANC_WHERE static inline CCTK_REAL sgn(CCTK_REAL x) return x==(CCTK_REAL)0.0 ? (CCTK_REAL)0.0 : copysign((CCTK_REAL)1.0, x); } +KRANC_WHERE static inline int isgn(CCTK_REAL x) +{ + if (x == (CCTK_REAL)0.0) return 0; +#ifdef __cplusplus + int s = std::signbit(x); +#else + int s = signbit(x); +#endif + return s ? -1 : +1; +} + int GenericFD_GetBoundaryWidth(cGH const * restrict const cctkGH); void GenericFD_GetBoundaryInfo(cGH const * restrict cctkGH, diff --git a/Tools/CodeGen/CalculationFunction.m b/Tools/CodeGen/CalculationFunction.m index 572aa6a..39bbe57 100644 --- a/Tools/CodeGen/CalculationFunction.m +++ b/Tools/CodeGen/CalculationFunction.m @@ -269,7 +269,7 @@ simpCollect[collectList_, eqrhs_, localvar_, debug_] := (* Return a CodeGen block which assigns dest by evaluating expr *) assignVariableFromExpression[dest_, expr_, declare_, vectorise_, noSimplify:Boolean : False] := Module[{type, cleanExpr, code}, - type = DataType[]; + type = If[StringMatchQ[ToString[dest], "dir*"], "ptrdiff_t", DataType[]]; cleanExpr = ReplacePowers[expr, vectorise, noSimplify]; If[SOURCELANGUAGE == "C", diff --git a/Tools/CodeGen/CodeGenCactus.m b/Tools/CodeGen/CodeGenCactus.m index 953b394..33b1c6b 100644 --- a/Tools/CodeGen/CodeGenCactus.m +++ b/Tools/CodeGen/CodeGenCactus.m @@ -568,6 +568,7 @@ DefFn[ fabs[x_] -> kfabs[x], fmax[x_,y_] -> kfmax[x,y], fmin[x_,y_] -> kfmin[x,y], + isgn[x_] -> kisgn[x], log[x_] -> klog[x], pow[x_,y_] -> kpow[x,y], sgn[x_] -> ksgn[x], @@ -810,7 +811,7 @@ DefFn[ rhs = rhs //. Max[xx_, yy__] -> fmax[xx, Max[yy]]; rhs = rhs //. Min[xx_, yy__] -> fmin[xx, Min[yy]]; rhs = rhs //. Abs[x_] -> fabs[x]; - rhs = rhs //. Sign[x_] -> sgn[x]; + rhs = rhs //. Sign[x_] -> isgn[x]; rhs = rhs //. IntAbs[x_] -> abs[x]; If[vectorise === True, diff --git a/Tools/CodeGen/Kranc.m b/Tools/CodeGen/Kranc.m index 8d83404..296b2c0 100644 --- a/Tools/CodeGen/Kranc.m +++ b/Tools/CodeGen/Kranc.m @@ -25,10 +25,10 @@ BeginPackage["Kranc`"]; {INV, SQR, CUB, QAD, ScalarINV, ScalarSQR, ScalarCUB, ScalarQAD, IfThen, Parenthesis, Scalar, ToReal, sqrt, exp, log, pow, atan2, cos, sin, tan, acos, asin, atan, - cosh, sinh, tanh, acosh, asinh, atanh, fmax, fmin, fabs, + cosh, sinh, tanh, acosh, asinh, atanh, fmax, fmin, fabs, isgn, sgn, kmadd, kmsub, knmadd, knmsub, kpos, kneg, kadd, ksub, kmul, kdiv, kacos, kacosh, kasin, kasinh, katan, katanh, kcopysign, kcos, kcosh, kfabs, - kfmax, kfmin, ksqrt, kexp, klog, kpow, ksgn, ksin, ksinh, ktan, ktanh, + kfmax, kfmin, kisgn, ksqrt, kexp, klog, kpow, ksgn, ksin, ksinh, ktan, ktanh, dir1, dir2, dir3, dt, dx, dy, dz, khalf, kthird, ktwothird, kfourthird, keightthird}; |