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