MaCh3 2.2.1
Reference Guide
Loading...
Searching...
No Matches
Core.h
Go to the documentation of this file.
1#pragma once
2
7
8// C++ includes
9#include <sstream>
10#include <fstream>
11#include <iostream>
12#include <vector>
13#include <iomanip>
14#include <cmath>
15#include <limits>
16
19namespace M3 {
20 #ifdef _LOW_MEMORY_STRUCTS_
22 using float_t = float;
24 using int_t = short;
26 using uint_t = unsigned short;
27 #else
28 using float_t = double;
29 using int_t = int;
30 using uint_t = unsigned;
31 #endif
32
34 template <typename T>
35 constexpr T fmaf_t(T x, T y, T z) {
36 #ifdef _LOW_MEMORY_STRUCTS_
37 return std::fmaf(x, y, z);
38 #else
39 return std::fma(x, y, z);
40 #endif
41 }
43 constexpr static const double _BAD_DOUBLE_ = -999.99;
45 constexpr static const int _BAD_INT_ = -999;
46 constexpr static const double _DEFAULT_RETURN_VAL_ = -999999.123456;
47
49 constexpr static const double Unity_D = 1.;
50 constexpr static const float Unity_F = 1.;
51 #ifdef _LOW_MEMORY_STRUCTS_
52 constexpr static const float_t Unity = Unity_F;
53 #else
54 constexpr static const float_t Unity = Unity_D;
55 #endif
56 constexpr static const double Zero_D = 0.;
57 constexpr static const float Zero_F = 0.;
58 #ifdef _LOW_MEMORY_STRUCTS_
59 constexpr static const float_t Zero = Zero_F;
60 #else
61 constexpr static const float_t Zero = Zero_D;
62 #endif
63
65 constexpr static const double KinematicLowBound = std::numeric_limits<double>::lowest();
67 constexpr static const double KinematicUpBound = std::numeric_limits<double>::max();
68
70 constexpr static const double _LARGE_LOGL_ = 1234567890.0;
71
73 constexpr static const double _LOW_MC_BOUND_ = .00001;
74
76 constexpr static const double DefSplineKnotUpBound = 9999;
78 constexpr static const double DefSplineKnotLowBound = -9999;
79}
80
82#ifndef DEBUG
83#define _noexcept_ noexcept
84#else
85#define _noexcept_
86#endif
87
89#ifndef DEBUG
90#define _restrict_ __restrict__
91#else
92#define _restrict_
93#endif
94
96#define _TH2PolyOverflowBins_ 9
97
98#ifdef MULTITHREAD
99#include "omp.h"
100#endif
101
106#define _MaCh3_Safe_Include_Start_ \
107_Pragma("GCC diagnostic push") \
108_Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \
109_Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") \
110_Pragma("GCC diagnostic ignored \"-Wold-style-cast\"") \
111_Pragma("GCC diagnostic ignored \"-Wformat-nonliteral\"") \
112_Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \
113_Pragma("GCC diagnostic ignored \"-Wconversion\"") \
114_Pragma("GCC diagnostic ignored \"-Wshadow\"") \
115_Pragma("GCC diagnostic ignored \"-Wswitch-enum\"")
117#define _MaCh3_Safe_Include_End_ \
118_Pragma("GCC diagnostic pop")
119
120// clang need slightly different diagnostics
121#if defined(__clang__)
122 #undef _MaCh3_Safe_Include_Start_
123 #define _MaCh3_Safe_Include_Start_ \
124 _Pragma("clang diagnostic push") \
125 _Pragma("clang diagnostic ignored \"-Wfloat-conversion\"") \
126 _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \
127 _Pragma("clang diagnostic ignored \"-Wformat-nonliteral\"") \
128 _Pragma("clang diagnostic ignored \"-Wswitch-enum\"") \
129 _Pragma("clang diagnostic ignored \"-Wconversion\"") \
130 _Pragma("clang diagnostic ignored \"-Wshadow\"") \
131 _Pragma("clang diagnostic ignored \"-Wswitch-enum\"")
132 #undef _MaCh3_Safe_Include_End_
133 #define _MaCh3_Safe_Include_End_ \
134 _Pragma("clang diagnostic pop")
135#endif
Definition: Core.h:19
static constexpr const double DefSplineKnotUpBound
Default value for spline knot capping, default mean not capping is being applied.
Definition: Core.h:76
unsigned uint_t
Definition: Core.h:30
static constexpr const float Unity_F
Definition: Core.h:50
static constexpr const double DefSplineKnotLowBound
Default value for spline knot capping, default mean not capping is being applied.
Definition: Core.h:78
double float_t
Definition: Core.h:28
static constexpr const float Zero_F
Definition: Core.h:57
static constexpr const double _BAD_DOUBLE_
Default value used for double initialisation.
Definition: Core.h:43
static constexpr const double _DEFAULT_RETURN_VAL_
Definition: Core.h:46
static constexpr const float_t Unity
Definition: Core.h:54
static constexpr const double KinematicLowBound
When parameter has no bound this serves as it. Lowest possible value the system.
Definition: Core.h:65
static constexpr const double _LOW_MC_BOUND_
MC prediction lower bound in bin to identify problematic binning definitions and handle LogL calculat...
Definition: Core.h:73
static constexpr const double Zero_D
Definition: Core.h:56
static constexpr const float_t Zero
Definition: Core.h:61
static constexpr const double _LARGE_LOGL_
Large Likelihood is used it parameter go out of physical boundary, this indicates in MCMC that such s...
Definition: Core.h:70
constexpr T fmaf_t(T x, T y, T z)
Function template for fused multiply-add.
Definition: Core.h:35
int int_t
Definition: Core.h:29
static constexpr const double KinematicUpBound
When parameter has no bound this serves as it. Highest possible value the system.
Definition: Core.h:67
static constexpr const int _BAD_INT_
Default value used for int initialisation.
Definition: Core.h:45
static constexpr const double Unity_D
Some commonly used variables to which we set pointers to.
Definition: Core.h:49