Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
special_generic.h
Go to the documentation of this file.
1#ifndef SPECIAL_GENERIC_H
2#define SPECIAL_GENERIC_H
3
4#include <cmath>
5#include "scalar.h"
6
12double Ei(double x);
13
19double Li2(double x);
20
27
34
41
47double Li3(double x);
48
54double Cl2(double x);
55
61double Cl3(double x);
62
63// Bessel
64
65double I0(double x);
66double I1(double x);
67double K0(double x);
68double K1(double x);
69double K2(double x);
70double K3(double x);
71double K4(double x);
72double Lbessel(double x);
73double Mbessel(double x);
74double Nbessel(double x);
75double K0exp(double x, double z);
76double K1exp(double x, double z);
77double K2exp(double x, double z);
78
85double kron(int x, int y);
86
93template <typename T> int sgn(T val) {
94 return (T(0) < val) -(val<T(0));
95}
96
105template <class T>
106std::enable_if_t<not std::numeric_limits<T>::is_integer, bool>
107fpeq(T x, T y, std::size_t n) {
108 const T m = std::min(std::fabs(x), std::fabs(y));
109 const int exp = m < std::numeric_limits<T>::min()
110 ? std::numeric_limits<T>::min_exponent - 1
111 : std::ilogb(m);
112 return std::fabs(x - y) <= n * std::ldexp(std::numeric_limits<T>::epsilon(), exp);
113}
114
115#endif // SPECIAL_GENERIC_H
double T(double x)
Wilson coefficient T(x).
scalar_t CLi2(scalar_t x)
Computes the complex dilogarithm function.
Definition polylog.cpp:1312
double K0exp(double x, double z)
double Cl2(double x)
Computes the Clausen function Cl2(x).
Definition polylog.cpp:1333
int sgn(T val)
Returns the sign of a value.
double K3(double x)
double Ei(double x)
Computes the exponential integral function Ei(x).
double Nbessel(double x)
double K2exp(double x, double z)
double I1(double x)
double K1(double x)
double I0(double x)
double Cl3(double x)
Computes the Clausen function Cl3(x).
Definition polylog.cpp:1337
double Mbessel(double x)
double Li3(double x)
Computes the trilogarithm function Li3(x).
Definition polylog.cpp:1267
double K1exp(double x, double z)
std::enable_if_t< not std::numeric_limits< T >::is_integer, bool > fpeq(T x, T y, std::size_t n)
Compares two floating point numbers with a given precision.
scalar_t CLi3(scalar_t x)
Computes the complex trilogarithm function.
Definition polylog.cpp:1320
double Lbessel(double x)
double K2(double x)
scalar_t CLi4(scalar_t x)
Computes the complex quadrilogarithm function.
Definition polylog.cpp:1326
double K0(double x)
double kron(int x, int y)
Kronecker delta function.
double Li2(double x)
Computes the dilogarithm function Li2(x).
Definition polylog.cpp:1257
double K4(double x)