QCDLoop
One-loop scalar Feynman integrals
Main Page
Related Pages
Namespaces
Classes
Files
File List
src
qcdloop
maths.h
1
//
2
// QCDLoop 2016
3
//
4
// Authors: Stefano Carrazza: stefano.carrazza@cern.ch
5
// Keith Ellis: keith.ellis@durham.ac.uk
6
// Giulia Zanderighi: giulia.zanderighi@cern.ch
7
8
#pragma once
9
10
#include "types.h"
11
16
namespace
ql
17
{
18
// Logarithms
19
inline
double
Log(
double
const
& x) {
return
std::log(x); }
20
inline
qdouble Log(qdouble
const
& x) {
return
logq(x); }
21
inline
complex Log(complex
const
& x) {
return
std::log(x); }
22
inline
qcomplex Log(qcomplex
const
& x) {
return
clogq(x); }
23
24
// Power
25
inline
double
Pow(
double
const
& x,
int
const
& a) {
return
std::pow(x, a); }
26
inline
qdouble Pow(qdouble
const
& x,
int
const
& a) {
return
powq(x,a); }
27
inline
complex Pow(complex
const
& x,
int
const
& a) {
return
std::pow(x,a); }
28
inline
qcomplex Pow(qcomplex
const
& x,
int
const
& a){
return
cpowq(x,a); }
29
30
// Root
31
inline
double
Sqrt(
double
const
& x) {
return
std::sqrt(x); }
32
inline
qdouble Sqrt(qdouble
const
& x) {
return
sqrtq(x); }
33
inline
complex Sqrt(complex
const
& x) {
return
std::sqrt(x); }
34
inline
qcomplex Sqrt(qcomplex
const
& x){
return
csqrtq(x); }
35
36
// Absolute value
37
inline
double
Abs(
double
const
& x) {
return
std::fabs(x); }
38
inline
qdouble Abs(qdouble
const
& x) {
return
fabsq(x);}
39
inline
double
Abs(complex
const
& x) {
return
std::fabs(x);}
40
inline
qdouble Abs(qcomplex
const
& x) {
return
cabsq(x); }
41
42
// Complex tools, imag, real and conj.
43
inline
double
Imag(
double
const
& x) { UNUSED(x);
return
0; }
44
inline
qdouble Imag(qdouble
const
& x) { UNUSED(x);
return
0.0q; }
45
inline
double
Imag(complex
const
& x) {
return
x.imag(); }
46
inline
qdouble Imag(qcomplex
const
& x){
return
cimagq(x);}
47
48
inline
double
Real(
double
const
& x) {
return
x; }
49
inline
qdouble Real(qdouble
const
& x) {
return
x; }
50
inline
double
Real(complex
const
& x) {
return
x.real(); }
51
inline
qdouble Real(qcomplex
const
& x) {
return
crealq(x); }
52
53
inline
complex Conjg(complex
const
& x) {
return
std::conj(x); }
54
inline
qcomplex Conjg(qcomplex
const
& x){
return
conjq(x); }
55
56
// Comparison and sign operations
57
inline
int
Sign(
double
const
& x) {
return
(
double
(0) < x) - (x < double(0)); }
58
inline
int
Sign(qdouble
const
& x){
return
(qdouble(0) < x) -(x < qdouble(0));}
59
60
inline
double
Max(
double
const
& a,
double
const
& b)
61
{
62
if
(Abs(a) > Abs(b))
return
a;
63
else
return
b;
64
}
65
inline
qdouble Max(qdouble
const
& a, qdouble
const
& b)
66
{
67
if
(Abs(a) > Abs(b))
return
a;
68
else
return
b;
69
}
70
inline
complex Max(complex
const
& a, complex
const
& b)
71
{
72
if
(Abs(a) > Abs(b))
return
a;
73
else
return
b;
74
}
75
inline
qcomplex Max(qcomplex
const
& a, qcomplex
const
& b)
76
{
77
if
(Abs(a) > Abs(b))
return
a;
78
else
return
b;
79
}
80
81
inline
double
Min(
double
const
& a,
double
const
& b)
82
{
83
if
(Abs(a) > Abs(b))
return
b;
84
else
return
a;
85
}
86
inline
qdouble Min(qdouble
const
& a, qdouble
const
& b)
87
{
88
if
(Abs(a) > Abs(b))
return
b;
89
else
return
a;
90
}
91
inline
complex Min(complex
const
& a, complex
const
& b)
92
{
93
if
(Abs(a) > Abs(b))
return
b;
94
else
return
a;
95
}
96
inline
qcomplex Min(qcomplex
const
& a, qcomplex
const
& b)
97
{
98
if
(Abs(a) > Abs(b))
return
b;
99
else
return
a;
100
}
101
102
// Heaviside function
103
inline
double
Htheta(
double
const
& x) {
return
0.5*(1+Sign(x)); }
104
inline
qdouble Htheta(qdouble
const
& x){
return
0.5q*(1.0q+Sign(x));}
105
}
ql
Definition:
box.cc:14
Generated on Wed May 4 2016 19:05:18 for QCDLoop by
1.8.9.1