sigma  0.0.0
Loading...
Searching...
No Matches
error_and_gamma.ipp
1#pragma once
2
4#include <cmath>
5
6namespace sigma {
7
8// -- Definitions --------------------------------------------------------------
9template<typename T>
11 T mean = std::erf(a.mean());
12 T dcda = std::exp(-std::pow(a.mean(), 2)) * (2 / std::sqrt(detail_::pi));
13 return detail_::unary_result(a, mean, dcda);
14}
15
16template<typename T>
18 T mean = std::erfc(a.mean());
19 T dcda = -std::exp(-std::pow(a.mean(), 2)) * (2 / std::sqrt(detail_::pi));
20 return detail_::unary_result(a, mean, dcda);
21}
22
23template<typename T>
25 auto func = [](decltype(a.mean()) x) { return std::tgamma(x); };
26 T mean = std::tgamma(a.mean());
27 T dcda = detail_::numeric_derivative(func, a.mean());
28 return detail_::unary_result(a, mean, dcda);
29}
30
31template<typename T>
33 auto func = [](decltype(a.mean()) x) { return std::lgamma(x); };
34 T mean = std::lgamma(a.mean());
35 T dcda = detail_::numeric_derivative(func, a.mean());
36 return detail_::unary_result(a, mean, dcda);
37}
38
39} // namespace sigma
Models an unceratin variable.
Definition uncertain.hpp:33
value_t mean() const
Get the mean value of the variable.
Definition uncertain.hpp:82
constexpr double pi
Value of Pi.
Definition operation_common.hpp:13
Uncertain< T > unary_result(const Uncertain< T > &a, T mean, T dcda)
Generalized Unary Changes.
Definition operation_common.hpp:44
NumericType numeric_derivative(FunctionType f, NumericType a)
Compute the numeric derivative of a function.
Definition operation_common.hpp:104
The primary namespace for the sigma library.
Definition operation_common.hpp:10
Uncertain< T > lgamma(const Uncertain< T > &a)
Gamma function Natural Logarithm.
Definition error_and_gamma.ipp:32
Uncertain< T > tgamma(const Uncertain< T > &a)
Gamma function.
Definition error_and_gamma.ipp:24
Uncertain< T > erfc(const Uncertain< T > &a)
Complementary error function.
Definition error_and_gamma.ipp:17
Uncertain< T > erf(const Uncertain< T > &a)
Error function.
Definition error_and_gamma.ipp:10
Common implementation details for operations.