cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
Math.cpp
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2023 Laurent Forthomme
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#include <cmath>
20
21#include "CepGen/Utils/Math.h"
22
23namespace cepgen {
24 namespace utils {
25 template <typename T>
26 bool positive(const T& val) {
27 return val > T{} && std::isfinite(val);
28 }
29 template bool positive<double>(const double&);
30 template bool positive<float>(const float&);
31 template bool positive<int>(const int&);
32
33 double fastHypot(double x, double y) {
34 x *= x, y *= y;
35 return std::sqrt(x + y);
36 }
37
38 double fastHypot(double x, double y, double z) {
39 x *= x, y *= y, z *= z;
40 return std::sqrt(x + y + z);
41 }
42
43 double fastSqrtSqDiff(double x, double y) {
44 if (std::fabs(x) == std::fabs(y))
45 return 0.;
46 return std::sqrt((x + y) * (x - y));
47 }
48 } // namespace utils
49} // namespace cepgen
template bool positive< double >(const double &)
template bool positive< float >(const float &)
template bool positive< int >(const int &)
bool positive(const T &val)
Check if a number is positive and finite.
Definition Math.cpp:26
double fastSqrtSqDiff(double x, double y)
Compute the square root of the squared difference (sqrt(a^2-b^2))
Definition Math.cpp:43
double fastHypot(double x, double y)
Definition Math.cpp:33
Common namespace for this Monte Carlo generator.