lsst.gauss2d.fit g199a45376c+3b7b3fd841
 
Loading...
Searching...
No Matches
math.h
1#ifndef LSST_GAUSS2D_FIT_MATH_H
2#define LSST_GAUSS2D_FIT_MATH_H
3
4#include <cmath>
5
6namespace lsst::gauss2d::fit {
7
8const double LOG_1 = log(1);
9const double SQRT_2_PI = sqrt(2. * M_PI);
10const double LOG_1_M_LOG_SQRT_2_PI = LOG_1 - log(SQRT_2_PI);
11
12template <typename T>
13T logit(T p) {
14 return log(p / (1 + p));
15}
16
17template <typename T>
18double logpdf_norm(T residual, T sigma) {
19 return LOG_1_M_LOG_SQRT_2_PI - log(sigma) - residual * residual / 2;
20}
21
22template <template <typename...> class Container, class Value>
23Value sum_iter(const Container<Value>& container) {
24 Value sum = 0;
25 for (const auto& value : container) sum += value;
26 return sum;
27}
28
29} // namespace lsst::gauss2d::fit
30
31#endif // LSST_GAUSS2D_FIT_MATH_H