From 6555bde2866db749b8aecdee30a785b5309818c8 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (l)" <j.wuttke@fz-juelich.de>
Date: Wed, 25 May 2016 18:31:56 +0200
Subject: [PATCH] exp_I and mul_I in FFPolyhedron

---
 Core/FormFactors/FormFactorBox.cpp        |  2 +-
 Core/FormFactors/FormFactorPolyhedron.cpp | 26 +++++++++++------------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/Core/FormFactors/FormFactorBox.cpp b/Core/FormFactors/FormFactorBox.cpp
index 5422f3dc0aa..c8f74036541 100644
--- a/Core/FormFactors/FormFactorBox.cpp
+++ b/Core/FormFactors/FormFactorBox.cpp
@@ -48,6 +48,6 @@ void FormFactorBox::init_parameters()
 {
     clearParameterPool();
     registerParameter(Length, &m_length, AttLimits::n_positive());
-    registerParameter(Width, &m_width, AttLimits::n_positive());
+    registerParameter(Width,  &m_width,  AttLimits::n_positive());
     registerParameter(Height, &m_height, AttLimits::n_positive());
 }
diff --git a/Core/FormFactors/FormFactorPolyhedron.cpp b/Core/FormFactors/FormFactorPolyhedron.cpp
index 13518fb8edb..a0bb10b5990 100644
--- a/Core/FormFactors/FormFactorPolyhedron.cpp
+++ b/Core/FormFactors/FormFactorPolyhedron.cpp
@@ -36,8 +36,8 @@ typedef Geometry::BasicVector3D<double> kvector_t;
 #include "IFormFactorBorn.h"
 #include "FormFactorPolyhedron.h"
 
-static complex_t I(0.,1.);
-static double eps(2e-16);
+static const complex_t I(0.,1.);
+static const double eps(2e-16);
 
 #ifdef POLYHEDRAL_DIAGNOSTIC
 extern Diagnosis diagnosis;
@@ -255,7 +255,7 @@ complex_t PolyhedralFace::expansion(
             count_return_condition = 0;
         if( count_return_condition>2 )
             return sum; // regular exit
-        n_fac *= I;
+        n_fac = mul_I(n_fac);
     }
 #ifdef POLYHEDRAL_DIAGNOSTIC
     if( !diagnosis.request_convergence )
@@ -275,7 +275,7 @@ complex_t PolyhedralFace::edge_sum_ff( cvector_t q, cvector_t qpa, bool sym_Ci )
         const PolyhedralEdge& e = edges[i];
         complex_t qE = e.qE(qpa);
         complex_t qR = e.qR(qpa);
-        complex_t Rfac = sym_S2 ? sin(qR) : ( sym_Ci ? cos(e.qR(q)) : exp(I*qR) );
+        complex_t Rfac = sym_S2 ? sin(qR) : ( sym_Ci ? cos(e.qR(q)) : exp_I(qR) );
         complex_t vfac;
         if( sym_S2 || i<edges.size()-1 ) {
             vfac = prevec.dot(e.E());
@@ -302,7 +302,7 @@ complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const
     decompose_q( q, qperp, qpa );
     double qpa_red = m_radius_2d * qpa.mag();
     complex_t qr_perp = qperp*m_rperp;
-    complex_t ff0 = (sym_Ci ? 2.*I*sin(qr_perp) : exp(I*qr_perp)) * m_area;
+    complex_t ff0 = (sym_Ci ? 2.*I*sin(qr_perp) : exp_I(qr_perp)) * m_area;
     if ( qpa_red==0 ) {
         return ff0;
     } else if ( qpa_red < qpa_limit_series && !sym_S2 ) {
@@ -310,10 +310,10 @@ complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const
         complex_t fac_even;
         complex_t fac_odd;
         if( sym_Ci ) {
-            fac_even = 2. * I * sin(qr_perp);
+            fac_even = 2. * mul_I( sin(qr_perp) );
             fac_odd = 2. * cos(qr_perp);
         } else {
-            fac_even = exp( I*qr_perp );
+            fac_even = exp_I(qr_perp);
             fac_odd = fac_even;
         }
         return ff0 + expansion( fac_even, fac_odd, qpa, std::abs(ff0) );
@@ -321,14 +321,14 @@ complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const
         // direct evaluation of analytic formula
         complex_t prefac;
         if( sym_S2 )
-            prefac = sym_Ci ? -8.*sin(qr_perp) : 4.*I*exp(I*qr_perp);
+            prefac = sym_Ci ? -8.*sin(qr_perp) : 4.*mul_I( exp_I(qr_perp) );
         else
-            prefac = sym_Ci ? 4. : 2.*exp(I*qr_perp);
+            prefac = sym_Ci ? 4. : 2.*exp_I(qr_perp);
 #ifdef POLYHEDRAL_DIAGNOSTIC
         if( diagnosis.debmsg>=2 )
             std::cout<<"       qrperp="<<qr_perp<<" => prefac="<<prefac<<"\n";
 #endif
-        return prefac * edge_sum_ff( q, qpa, sym_Ci ) / ( I*qpa.mag2() );
+        return prefac * edge_sum_ff( q, qpa, sym_Ci ) / mul_I( qpa.mag2() );
     }
 }
 
@@ -424,7 +424,7 @@ void FormFactorPolyhedron::setPolyhedron(
 
 complex_t FormFactorPolyhedron::evaluate_for_q( const cvector_t q ) const
 {
-    return exp(-I*m_z_origin*q.z()) * evaluate_centered(q);
+    return exp_I(-m_z_origin*q.z()) * evaluate_centered(q);
 }
 
 //! Returns the form factor F(q) of this polyhedron, with origin at z=0.
@@ -464,7 +464,7 @@ complex_t FormFactorPolyhedron::evaluate_centered( const cvector_t q ) const
                 count_return_condition = 0;
             if( count_return_condition>2 )
                 return m_volume + sum; // regular exit
-            n_fac *= ( m_sym_Ci ? -1 : I );
+            n_fac = m_sym_Ci ? -n_fac : mul_I(n_fac);
         }
 #ifdef POLYHEDRAL_DIAGNOSTIC
         if( !diagnosis.request_convergence )
@@ -529,7 +529,7 @@ complex_t FormFactorPolygonalPrism::evaluate_for_q( const cvector_t q ) const
     diagnosis.nExpandedFaces = 0;
 #endif
     const cvector_t qxy( q.x(), q.y(), 0. );
-    return m_height * exp(I*(m_height/2)*q.z()) * MathFunctions::sinc(m_height/2*q.z()) *
+    return m_height * exp_I(m_height/2*q.z()) * MathFunctions::sinc(m_height/2*q.z()) *
         m_base->ff_2D( qxy );
 }
 
-- 
GitLab