Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
scalar.cpp
Go to the documentation of this file.
1#include "scalar.h"
2
4
5scalar_t::scalar_t(const scalar_t& k) : complex_t(static_cast<complex_t>(k)) {}
6
8 complex_t::operator=(static_cast<const complex_t&>(k));
9 return *this;
10}
11
12scalar_t::operator double() const {
13 if (std::abs(this->imag() / this->real()) > 1e-10) {
14 LOG_WARN("Casting complex values to double discards imaginary part: (", this->real(), ",", this->imag(), ")");
15 }
16 return this->real();
17};
18
20 return -static_cast<complex_t>(*this);
21}
22
23scalar_t operator+(double lhs, const scalar_t& rhs) {
24 return scalar_t(lhs) + rhs;
25}
26
27scalar_t operator+(const scalar_t& lhs, double rhs) {
28 return lhs + scalar_t(rhs);
29}
30
32 lhs += rhs;
33 return lhs;
34}
35
37 lhs -= rhs;
38 return lhs;
39}
40
41scalar_t operator-(double lhs, const scalar_t& rhs) {
42 return scalar_t(lhs) - rhs;
43}
44
45scalar_t operator-(const scalar_t& lhs, double rhs) {
46 return lhs - scalar_t(rhs);
47}
48
50 lhs *= rhs;
51 return lhs;
52}
53
54scalar_t operator*(double lhs, const scalar_t& rhs) {
55 return scalar_t(lhs) * rhs;
56}
57
58scalar_t operator*(const scalar_t& lhs, double rhs) {
59 return lhs * scalar_t(rhs);
60}
61
63 lhs /= rhs;
64 return lhs;
65}
66
67scalar_t operator/(double lhs, const scalar_t& rhs) {
68 return scalar_t(lhs) / rhs;
69}
70
71scalar_t operator/(const scalar_t& lhs, double rhs) {
72 return lhs / scalar_t(rhs);
73}
74
75scalar_t pow(const scalar_t& base, const scalar_t& exp) {
76 return scalar_t(std::pow(static_cast<complex_t>(base), static_cast<complex_t>(exp)));
77}
78
79scalar_t pow(const scalar_t& base, double exp) {
80 return scalar_t(std::pow(static_cast<complex_t>(base), exp));
81}
82
83double real(const scalar_t& z) {
84 return z.real();
85}
86
87double imag(const scalar_t& z) {
88 return z.imag();
89}
#define LOG_WARN(...)
Macro for logging warning messages.
Definition Logger.h:40
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
scalar_t operator-() const
Definition scalar.cpp:19
scalar_t & operator=(const scalar_t &k)
Definition scalar.cpp:7
constexpr scalar_t(double re=0.0, double im=0.0)
Definition scalar.h:13
friend scalar_t operator/(double lhs, const scalar_t &rhs)
Definition scalar.cpp:67
double imag(const scalar_t &z)
Definition scalar.cpp:87
scalar_t operator-(scalar_t lhs, const scalar_t &rhs)
Definition scalar.cpp:36
scalar_t operator+(double lhs, const scalar_t &rhs)
Definition scalar.cpp:23
scalar_t operator/(scalar_t lhs, const scalar_t &rhs)
Definition scalar.cpp:62
scalar_t operator*(scalar_t lhs, const scalar_t &rhs)
Definition scalar.cpp:49
scalar_t pow(const scalar_t &base, const scalar_t &exp)
Definition scalar.cpp:75
double real(const scalar_t &z)
Definition scalar.cpp:83