RandLib 2.0.0
Probability distributions, fitting, and heavy-tail tools for C++20
Loading...
Searching...
No Matches
circular.hpp
Go to the documentation of this file.
1#pragma once
2
7
8namespace randlib
9{
10
17template <typename RealType>
19{
20protected:
21 double loc{};
22
23 CircularDistribution(double location = 0);
24
25public:
27
28protected:
29public:
30 [[nodiscard]] Support SupportType() const override { return Support::Finite; }
31 [[nodiscard]] RealType MinValue() const override { return loc - randlib::consts::pi; }
32 [[nodiscard]] RealType MaxValue() const override { return loc + randlib::consts::pi; }
33
34 void SetLocation(double location);
35 [[nodiscard]] inline double GetLocation() const noexcept { return loc; }
36
37 [[nodiscard]] long double Mean() const override { return NAN; }
38 [[nodiscard]] long double Variance() const override { return NAN; }
39 [[nodiscard]] long double Skewness() const override { return NAN; }
40 [[nodiscard]] long double ExcessKurtosis() const override { return NAN; }
41
45 [[nodiscard]] virtual long double CircularMean() const = 0;
46
50 [[nodiscard]] virtual long double CircularVariance() const = 0;
51};
52
53} // namespace randlib
54
55namespace randlib
56{
57
58template <typename RealType>
60{
61 SetLocation(location);
62}
63
64template <typename RealType>
66{
67 if (!std::isfinite(location))
68 throw std::invalid_argument("Circular distribution: location should be finite");
69 loc = location;
70}
71
72} // namespace randlib
The CircularDistribution class Abstract class for all continuous circular distributions.
Definition circular.hpp:19
double GetLocation() const noexcept
Definition circular.hpp:35
RealType MinValue() const override
Definition circular.hpp:31
void SetLocation(double location)
Definition circular.hpp:65
CircularDistribution(double location=0)
Definition circular.hpp:59
long double Skewness() const override
Definition circular.hpp:39
long double Variance() const override
Definition circular.hpp:38
virtual ~CircularDistribution()
Definition circular.hpp:26
virtual long double CircularMean() const =0
RealType MaxValue() const override
Definition circular.hpp:32
double loc
Definition circular.hpp:21
long double ExcessKurtosis() const override
Definition circular.hpp:40
long double Mean() const override
Definition circular.hpp:37
virtual long double CircularVariance() const =0
Support SupportType() const override
Definition circular.hpp:30
The ContinuousDistribution class Abstract class for all continuous distributions.
Definition continuous.hpp:22
constexpr long double pi
Definition constants.hpp:22
Definition bivariate_normal.hpp:10
Support
Shape of the support of a univariate distribution.
Definition univariate.hpp:15