From 45c1f37d5439bd94a522346af9062b4beaeda039 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 5 Sep 2024 22:52:05 +0200
Subject: [PATCH] + abs_wofz, arg_wofz

---
 pub/lib/fbase.cpp | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/pub/lib/fbase.cpp b/pub/lib/fbase.cpp
index 054964a7..cb27869d 100644
--- a/pub/lib/fbase.cpp
+++ b/pub/lib/fbase.cpp
@@ -641,6 +641,16 @@ double func_im_wofz(double x, double y)
     return cimag(w_of_z({x, y}));
 }
 
+double func_abs_wofz(double x, double y)
+{
+    return cabs(w_of_z({x, y}));
+}
+
+double func_arg_wofz(double x, double y)
+{
+    return atan2(cimag(w_of_z({x, y})), creal(w_of_z({x, y})));
+}
+
 //**************************************************************************************************
 //*  Functions of three arguments
 //**************************************************************************************************
@@ -1079,10 +1089,14 @@ void fbase_initialize()
     G->register_fct_d_dd(m, func_heat_sphere);
     m = {"voigt_hwhm", 3, "(sigma,gamma): hwhm of voigt(x,sigma,gamma)"};
     G->register_fct_d_dd(m, func_voigt_hwhm);
-    m = {"im_wofz", 3, "(x,y): imaginary part of Faddeeva's function"};
-    G->register_fct_d_dd(m, func_im_wofz);
     m = {"re_wofz", 3, "(x,y): real part of Faddeeva's function"};
     G->register_fct_d_dd(m, func_re_wofz);
+    m = {"im_wofz", 3, "(x,y): imaginary part of Faddeeva's function"};
+    G->register_fct_d_dd(m, func_im_wofz);
+    m = {"abs_wofz", 3, "(x,y): absolute valueof Faddeeva's function"};
+    G->register_fct_d_dd(m, func_abs_wofz);
+    m = {"arg_wofz", 3, "(x,y): phase of Faddeeva's function"};
+    G->register_fct_d_dd(m, func_arg_wofz);
 
     // f(3 args)
     m = {"rehavneg", 3, "(x,y,z): real part of the Havriliak-Negami function"};
-- 
GitLab