thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.1.4
ThePEG::Math Namespace Reference

The Math namespace includes the declaration of some useful mathematical functions. More...

Namespaces

 Functions
 This namespace introduces some useful function classes with known primitive and inverse primitive functions.
 

Classes

struct  MathType
 MathType is an empty non-polymorphic base class for all mathematical function types. More...
 
struct  Power
 Templated class for calculating integer powers. More...
 
struct  Power< 0, false >
 Struct for powers. More...
 
struct  Power< 0, true >
 Struct for powers. More...
 
struct  Power< N, false >
 Struct for powers. More...
 
struct  Power< N, true >
 Struct for powers. More...
 

Functions

double gamma (double)
 The gamma function.
 
double lngamma (double)
 The log of the gamma function.
 
double atanh (double)
 Return ${\rm atanh}(x)$.
 
double exp1m (double x)
 Return $1-e^x$, with highest possible precision for $x\rightarrow 0$. More...
 
double log1m (double)
 Return $1\log(1-x)$, with highest possible precision for $x\rightarrow 0$. More...
 
double powi (double x, int p)
 Return x rased to the integer power p, using recursion. More...
 
double pIntegrate (double p, double xl, double xu)
 Return the integral of $x^p dx$ between xl and xu. More...
 
double pIntegrate (int p, double xl, double xu)
 Return the integral of $x^p dx$ between xl and xu. More...
 
double pXIntegrate (double e, double xl, double dx)
 Return the integral of $x^{e-1} dx$ between xl and xl+dx with highest possible precision for $dx\rightarrow 0$ and/or $e\rightarrow 0$. More...
 
double pGenerate (double p, double xl, double xu, double rnd)
 Generate an x between xl and xu distributed as $x^p$. More...
 
double pGenerate (int p, double xl, double xu, double rnd)
 Generate an x between xl and xu distributed as $x^p$. More...
 
double pXGenerate (double e, double xl, double dx, double rnd)
 Generate an x between xl and xl + dx distributed as $x^{e-1}$ with highest possible precision for $dx\rightarrow 0$ and/or * $e\rightarrow 0$. More...
 
template<typename FloatType >
double relativeError (FloatType x, FloatType y)
 Returns (x - y)/(|x| + |y|). More...
 
template<typename T >
absmin (const T &x, const T &y)
 Return x if |x|<|y|, else return y. More...
 
template<typename T >
absmax (const T &x, const T &y)
 Return x if |x|>|y|, else return y. More...
 
template<typename T , typename U >
sign (T x, U y)
 Transfer the sign of the second argument to the first. More...
 
template<int N>
double Pow (double x)
 Templated function to calculate integer powers known at compile-time. More...
 

Detailed Description

The Math namespace includes the declaration of some useful mathematical functions.

Function Documentation

◆ absmax()

template<typename T >
T ThePEG::Math::absmax ( const T &  x,
const T &  y 
)
inline

Return x if |x|>|y|, else return y.

Definition at line 101 of file Maths.h.

◆ absmin()

template<typename T >
T ThePEG::Math::absmin ( const T &  x,
const T &  y 
)
inline

Return x if |x|<|y|, else return y.

Definition at line 95 of file Maths.h.

◆ exp1m()

double ThePEG::Math::exp1m ( double  x)

Return $1-e^x$, with highest possible precision for $x\rightarrow 0$.

Referenced by ThePEG::PartonBinInstance::eps(), pXGenerate(), and pXIntegrate().

◆ log1m()

double ThePEG::Math::log1m ( double  )

Return $1\log(1-x)$, with highest possible precision for $x\rightarrow 0$.

Referenced by pXGenerate(), and pXIntegrate().

◆ pGenerate() [1/2]

double ThePEG::Math::pGenerate ( double  p,
double  xl,
double  xu,
double  rnd 
)
inline

Generate an x between xl and xu distributed as $x^p$.

Definition at line 64 of file Maths.h.

◆ pGenerate() [2/2]

double ThePEG::Math::pGenerate ( int  p,
double  xl,
double  xu,
double  rnd 
)
inline

Generate an x between xl and xu distributed as $x^p$.

Definition at line 70 of file Maths.h.

References powi().

◆ pIntegrate() [1/2]

double ThePEG::Math::pIntegrate ( double  p,
double  xl,
double  xu 
)
inline

Return the integral of $x^p dx$ between xl and xu.

Definition at line 47 of file Maths.h.

◆ pIntegrate() [2/2]

double ThePEG::Math::pIntegrate ( int  p,
double  xl,
double  xu 
)
inline

Return the integral of $x^p dx$ between xl and xu.

Definition at line 52 of file Maths.h.

References powi().

◆ Pow()

template<int N>
double ThePEG::Math::Pow ( double  x)
inline

Templated function to calculate integer powers known at compile-time.

Definition at line 161 of file Maths.h.

◆ powi()

double ThePEG::Math::powi ( double  x,
int  p 
)

Return x rased to the integer power p, using recursion.

Referenced by pGenerate(), and pIntegrate().

◆ pXGenerate()

double ThePEG::Math::pXGenerate ( double  e,
double  xl,
double  dx,
double  rnd 
)
inline

Generate an x between xl and xl + dx distributed as $x^{e-1}$ with highest possible precision for $dx\rightarrow 0$ and/or * $e\rightarrow 0$.

Parameters
ethe parameter defining the power in $x^{e-1}$.
xlthe lower bound of the generation interval.
dxthe interval.
rnda flat random number in the interval ]0,1[.

Definition at line 82 of file Maths.h.

References exp1m(), and log1m().

◆ pXIntegrate()

double ThePEG::Math::pXIntegrate ( double  e,
double  xl,
double  dx 
)
inline

Return the integral of $x^{e-1} dx$ between xl and xl+dx with highest possible precision for $dx\rightarrow 0$ and/or $e\rightarrow 0$.

Definition at line 59 of file Maths.h.

References exp1m(), and log1m().

◆ relativeError()

template<typename FloatType >
double ThePEG::Math::relativeError ( FloatType  x,
FloatType  y 
)
inline

◆ sign()

template<typename T , typename U >
T ThePEG::Math::sign ( x,
y 
)
inline

Transfer the sign of the second argument to the first.

Returns
$|x|$ if $y>0$ otherwise return $-|x|$.

Definition at line 109 of file Maths.h.