8 #ifndef THEORETICA_CONSTANTS_H
9 #define THEORETICA_CONSTANTS_H
17 #ifndef THEORETICA_DISABLE_X86
19 #ifndef THEORETICA_X86
20 #if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) \
21 || defined(_M_AMD64) || defined(_M_X64) || defined(i386) \
22 || defined(__i386) || defined(__i386__) || defined(_M_IX86) \
23 || defined(_X86_) || defined(_M_I86) || defined(__X86__)
28 #define THEORETICA_X86
36 #ifndef THEORETICA_ALGEBRA_ELEMENT_TOL
37 #define THEORETICA_ALGEBRA_ELEMENT_TOL (10*MACH_EPSILON)
42 #ifndef THEORETICA_ALGEBRA_EIGEN_TOL
43 #define THEORETICA_ALGEBRA_EIGEN_TOL 1E-08
48 #ifndef THEORETICA_ALGEBRA_EIGEN_ITER
49 #define THEORETICA_ALGEBRA_EIGEN_ITER 100
54 #ifndef THEORETICA_CORE_TAYLOR_ORDER
55 #define THEORETICA_CORE_TAYLOR_ORDER 12
59 #ifndef THEORETICA_CALCULUS_INTEGRAL_STEPS
60 #define THEORETICA_CALCULUS_INTEGRAL_STEPS 100
64 #ifndef THEORETICA_CALCULUS_INTEGRAL_TOL
65 #define THEORETICA_CALCULUS_INTEGRAL_TOL 1E-08
69 #ifndef THEORETICA_OPTIMIZATION_TOL
70 #define THEORETICA_OPTIMIZATION_TOL 1E-08
74 #ifndef THEORETICA_OPTIMIZATION_BISECTION_ITER
75 #define THEORETICA_OPTIMIZATION_BISECTION_ITER 100
79 #ifndef THEORETICA_OPTIMIZATION_GOLDENSECTION_ITER
80 #define THEORETICA_OPTIMIZATION_GOLDENSECTION_ITER 100
84 #ifndef THEORETICA_OPTIMIZATION_HALLEY_ITER
85 #define THEORETICA_OPTIMIZATION_HALLEY_ITER 100
89 #ifndef THEORETICA_OPTIMIZATION_NEWTON_ITER
90 #define THEORETICA_OPTIMIZATION_NEWTON_ITER 100
94 #ifndef THEORETICA_OPTIMIZATION_STEFFENSEN_ITER
95 #define THEORETICA_OPTIMIZATION_STEFFENSEN_ITER 100
99 #ifndef THEORETICA_OPTIMIZATION_CHEBYSHEV_ITER
100 #define THEORETICA_OPTIMIZATION_CHEBYSHEV_ITER 100
104 #ifndef THEORETICA_OPTIMIZATION_OSTROWSKI_ITER
105 #define THEORETICA_OPTIMIZATION_OSTROWSKI_ITER 100
109 #ifndef THEORETICA_OPTIMIZATION_JARRAT_ITER
110 #define THEORETICA_OPTIMIZATION_JARRAT_ITER 100
114 #ifndef THEORETICA_STATISTICS_TRYANDCATCH_ITER
115 #define THEORETICA_STATISTICS_TRYANDCATCH_ITER 100
119 #ifndef THEORETICA_CALCULUS_DERIV_STEP
120 #define THEORETICA_CALCULUS_DERIV_STEP 1E-3
124 #ifndef THEORETICA_OPTIMIZATION_MINGRAD_GAMMA
125 #define THEORETICA_OPTIMIZATION_MINGRAD_GAMMA -0.005
129 #ifndef THEORETICA_OPTIMIZATION_MINGRAD_TOLERANCE
130 #define THEORETICA_OPTIMIZATION_MINGRAD_TOLERANCE 1E-3
134 #ifndef THEORETICA_OPTIMIZATION_MINGRAD_ITER
135 #define THEORETICA_OPTIMIZATION_MINGRAD_ITER 50000
139 #ifndef THEORETICA_STATISTICS_RAND_PREC
142 #ifdef THEORETICA_FLOAT_PREC
143 #define THEORETICA_STATISTICS_RAND_PREC (uint64_t(1) << 23)
145 #define THEORETICA_STATISTICS_RAND_PREC (uint64_t(1) << 31)
152 #ifndef THEORETICA_STATISTICS_METROPOLIS_DEPTH
153 #define THEORETICA_STATISTICS_METROPOLIS_DEPTH 16
158 #if (__cplusplus >= 201402L)
159 #define TH_CONSTEXPR constexpr
166 #if (__cplusplus >= 201703L)
167 #define TH_CONSTIF constexpr
184 #ifdef THEORETICA_LONG_DOUBLE_PREC
186 using real =
long double;
188 #elif defined(THEORETICA_FLOAT_PREC)
192 #elif defined(THEORETICA_ARBITRARY_PREC)
210 constexpr
real PHI = 1.6180339887498948482045868;
216 constexpr
real PI = 3.141592653589793238462643;
219 constexpr
real PI2 = 1.57079632679489655799898;
237 constexpr
real E = 2.718281828459045235360287;
285 constexpr
real CALCULUS_INTEGRAL_TOL = THEORETICA_CALCULUS_INTEGRAL_TOL;
339 #ifndef THEORETICA_NO_NAMESPACE_ALIAS
#define THEORETICA_OPTIMIZATION_TOL
Approximation tolerance for root finding.
Definition: constants.h:70
#define THEORETICA_OPTIMIZATION_MINGRAD_ITER
Maximum number of iterations for gradient descent minimization.
Definition: constants.h:135
#define THEORETICA_STATISTICS_METROPOLIS_DEPTH
Default depth of the Metropolis algorithm.
Definition: constants.h:153
#define THEORETICA_OPTIMIZATION_STEFFENSEN_ITER
Maximum number of iterations for Steffensen root finding.
Definition: constants.h:95
#define THEORETICA_ALGEBRA_EIGEN_ITER
Maximum number of iterations for eigensolvers.
Definition: constants.h:49
#define THEORETICA_OPTIMIZATION_GOLDENSECTION_ITER
Maximum number of iterations for golden section search.
Definition: constants.h:80
#define THEORETICA_OPTIMIZATION_CHEBYSHEV_ITER
Maximum number of iterations for Chebyshev root finding.
Definition: constants.h:100
#define THEORETICA_STATISTICS_RAND_PREC
Default precision for random number generation using rand_uniform()
Definition: constants.h:145
#define THEORETICA_ALGEBRA_EIGEN_TOL
Tolerance for eigensolvers.
Definition: constants.h:43
#define THEORETICA_OPTIMIZATION_HALLEY_ITER
Maximum number of iterations for Halley's method.
Definition: constants.h:85
#define THEORETICA_CORE_TAYLOR_ORDER
Order of Taylor series approximations.
Definition: constants.h:55
#define THEORETICA_OPTIMIZATION_OSTROWSKI_ITER
Maximum number of iterations for Ostrowski root finding.
Definition: constants.h:105
#define THEORETICA_OPTIMIZATION_MINGRAD_TOLERANCE
Default tolerance for gradient descent minimization.
Definition: constants.h:130
#define THEORETICA_STATISTICS_TRYANDCATCH_ITER
Maximum number of failed iterations for the Try-and-Catch algorithm.
Definition: constants.h:115
#define THEORETICA_OPTIMIZATION_JARRAT_ITER
Maximum number of iterations for Jarrat root finding.
Definition: constants.h:110
#define THEORETICA_ALGEBRA_ELEMENT_TOL
THEORETICA_DISABLE_X86 Define this macro to disable Assembly x86 optimizations.
Definition: constants.h:37
#define THEORETICA_OPTIMIZATION_MINGRAD_GAMMA
Default step size for gradient descent minimization.
Definition: constants.h:125
#define THEORETICA_CALCULUS_DERIV_STEP
Default variation for derivative approximation.
Definition: constants.h:120
#define THEORETICA_OPTIMIZATION_NEWTON_ITER
Maximum number of iterations for Newton-Raphson root finding.
Definition: constants.h:90
#define THEORETICA_CALCULUS_INTEGRAL_STEPS
Default number of steps for integral approximation.
Definition: constants.h:60
#define THEORETICA_OPTIMIZATION_BISECTION_ITER
Maximum number of iterations for bisection.
Definition: constants.h:75
Main namespace of the library which contains all functions and objects.
Definition: algebra.h:27
double real
A real number, defined as a floating point type.
Definition: constants.h:198
constexpr unsigned int OPTIMIZATION_JARRAT_ITER
Maximum number of iterations for the Jarrat algorithm.
Definition: constants.h:312
constexpr unsigned int STATISTICS_METROPOLIS_DEPTH
Default depth of the Metropolis algorithm.
Definition: constants.h:333
constexpr real PI2
Half of Pi.
Definition: constants.h:219
constexpr uint64_t STATISTICS_RAND_PREC
Default precision for random number generation using rand_uniform()
Definition: constants.h:330
constexpr real SQRTPI
The square root of Pi.
Definition: constants.h:234
constexpr real LN10
The natural logarithm of 10.
Definition: constants.h:252
constexpr real LOG210
The binary logarithm of 10.
Definition: constants.h:243
constexpr real INVSQR2
The inverse of the square root of 2.
Definition: constants.h:264
constexpr real ALGEBRA_ELEMENT_TOL
Tolerance for the elements of matrices.
Definition: constants.h:270
constexpr real INVPI
The inverse of Pi.
Definition: constants.h:231
constexpr real OPTIMIZATION_MINGRAD_TOLERANCE
Default tolerance for gradient descent minimization.
Definition: constants.h:324
constexpr real OPTIMIZATION_TOL
Approximation tolerance for root finding.
Definition: constants.h:288
constexpr real CALCULUS_DERIV_STEP
Default variation for derivative approximation.
Definition: constants.h:318
constexpr real LOG10E
The base-10 logarithm of e.
Definition: constants.h:246
constexpr unsigned int STATISTICS_TRYANDCATCH_ITER
Maximum number of failed iterations for the Try-and-Catch algorithm.
Definition: constants.h:315
constexpr real INVPHI
The inverse of the Golden Section mathematical constant.
Definition: constants.h:213
constexpr unsigned int OPTIMIZATION_OSTROWSKI_ITER
Maximum number of iterations for the Ostrowski algorithm.
Definition: constants.h:309
constexpr real LN2
The natural logarithm of 2.
Definition: constants.h:249
constexpr real LOG2E
The binary logarithm of e.
Definition: constants.h:240
constexpr unsigned int OPTIMIZATION_GOLDENSECTION_ITER
Maximum number of iterations for the golden section search algorithm.
Definition: constants.h:294
constexpr unsigned int OPTIMIZATION_MINGRAD_ITER
Maximum number of iterations for gradient descent minimization.
Definition: constants.h:327
constexpr int CALCULUS_INTEGRAL_STEPS
Default number of steps for integral approximation.
Definition: constants.h:282
constexpr real PIDOUBLE
Pi multiplied by 2.
Definition: constants.h:225
constexpr real MACH_EPSILON
Machine epsilon for the real type.
Definition: constants.h:207
constexpr real E
The Euler mathematical constant (e)
Definition: constants.h:237
constexpr unsigned int OPTIMIZATION_CHEBYSHEV_ITER
Maximum number of iterations for the Chebyshev algorithm.
Definition: constants.h:306
constexpr unsigned int OPTIMIZATION_BISECTION_ITER
Maximum number of iterations for the bisection algorithm.
Definition: constants.h:291
constexpr unsigned int OPTIMIZATION_STEFFENSEN_ITER
Maximum number of iterations for the Steffensen algorithm.
Definition: constants.h:303
constexpr int CORE_TAYLOR_ORDER
Order of Taylor series approximations.
Definition: constants.h:279
constexpr real PI4
A quarter of Pi.
Definition: constants.h:222
constexpr unsigned int OPTIMIZATION_NEWTON_ITER
Maximum number of iterations for the Newton-Raphson algorithm.
Definition: constants.h:300
constexpr real PHI
The Phi (Golden Section) mathematical constant.
Definition: constants.h:210
constexpr real SQRT3
The square root of 3.
Definition: constants.h:267
constexpr real DEG2RAD
The scalar conversion factor from degrees to radians.
Definition: constants.h:255
constexpr real ALGEBRA_EIGEN_ITER
Maximum number of iterations for eigensolvers.
Definition: constants.h:276
constexpr real SQRT2
The square root of 2.
Definition: constants.h:261
constexpr unsigned int OPTIMIZATION_HALLEY_ITER
Maximum number of iterations for Halley's method.
Definition: constants.h:297
constexpr real RAD2DEG
The scalar conversion factor from radians to degrees.
Definition: constants.h:258
constexpr real PI
The Pi mathematical constant.
Definition: constants.h:216
constexpr real TAU
The Tau mathematical constant (Pi times 2)
Definition: constants.h:228
constexpr real OPTIMIZATION_MINGRAD_GAMMA
Default step size for gradient descent minimization.
Definition: constants.h:321
constexpr real ALGEBRA_EIGEN_TOL
Tolerance for eigensolvers.
Definition: constants.h:273