From cdb9a3ea129910fc7a78edb8be831c07d8f797e6 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (laptop)" <j.wuttke@fz-juelich.de> Date: Sun, 30 Sep 2012 12:35:47 +0200 Subject: [PATCH] function sign(x) --- pub/src/func.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pub/src/func.cpp b/pub/src/func.cpp index 6844343b..23355df8 100644 --- a/pub/src/func.cpp +++ b/pub/src/func.cpp @@ -46,6 +46,17 @@ double func_abs(double v) { return fabs(v); } void deri_abs(double& r, double& dr, double v, double dv) { r=fabs(v); dr=dv; } +double func_sign(double v) { + if ( v<0 ) + return -1; + else if ( v>0 ) + return 1; + else + return 0; +} +void deri_sign(double& r, double& dr, double v, double dv) +{ r=func_sign(v); dr=dv; } + double func_exp(double v) { return exp(v); } void deri_exp(double& r, double& dr, double v, double dv) { r=exp(v); dr=dv*r; } @@ -372,6 +383,8 @@ void NFunctions::initialize(void) { "(x): square root of x, or 0 if x<0" ).register_me(); CFunc( "abs", func_abs, deri_abs, 0, "(x): absolute value of x" ).register_me(); + CFunc( "abs", func_sign, deri_sign, 0, + "(x): sign of x" ).register_me(); CFunc( "exp", func_exp, deri_exp, 0, "(x): exponential function of x" ).register_me(); CFunc( "sin", func_sin, 0, 0, -- GitLab