]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/math/test/test_dist_deduction_guides.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / math / test / test_dist_deduction_guides.cpp
CommitLineData
1e59de90
TL
1// (C) Copyright John Maddock 2022.
2// (C) Copyright James Folberth 2022.
3// Use, modification and distribution are subject to the
4// Boost Software License, Version 1.0. (See accompanying file
5// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7// Issue 754
8// Check that the class template argument deduction guides properly promote
9// integral ctor args to a real floating point type.
10
11#include <boost/math/distributions/arcsine.hpp>
12#include <boost/math/distributions/bernoulli.hpp>
13#include <boost/math/distributions/beta.hpp>
14#include <boost/math/distributions/binomial.hpp>
15#include <boost/math/distributions/cauchy.hpp>
16#include <boost/math/distributions/chi_squared.hpp>
17//#include <boost/math/distributions/empirical_cumulative_distribution_function.hpp>
18#include <boost/math/distributions/exponential.hpp>
19#include <boost/math/distributions/extreme_value.hpp>
20#include <boost/math/distributions/fisher_f.hpp>
21#include <boost/math/distributions/gamma.hpp>
22#include <boost/math/distributions/geometric.hpp>
23//#include <boost/math/distributions/hyperexponential.hpp>
24//#include <boost/math/distributions/hypergeometric.hpp>
25#include <boost/math/distributions/inverse_chi_squared.hpp>
26#include <boost/math/distributions/inverse_gamma.hpp>
27#include <boost/math/distributions/inverse_gaussian.hpp>
28#include <boost/math/distributions/kolmogorov_smirnov.hpp>
29#include <boost/math/distributions/laplace.hpp>
30#include <boost/math/distributions/logistic.hpp>
31#include <boost/math/distributions/lognormal.hpp>
32#include <boost/math/distributions/negative_binomial.hpp>
33#include <boost/math/distributions/non_central_beta.hpp>
34#include <boost/math/distributions/non_central_chi_squared.hpp>
35#include <boost/math/distributions/non_central_f.hpp>
36#include <boost/math/distributions/non_central_t.hpp>
37#include <boost/math/distributions/normal.hpp>
38#include <boost/math/distributions/pareto.hpp>
39#include <boost/math/distributions/poisson.hpp>
40#include <boost/math/distributions/rayleigh.hpp>
41#include <boost/math/distributions/skew_normal.hpp>
42#include <boost/math/distributions/students_t.hpp>
43#include <boost/math/distributions/triangular.hpp>
44#include <boost/math/distributions/uniform.hpp>
45#include <boost/math/distributions/weibull.hpp>
46
47// Instantiate a DistType object with the parameter pack given by Types.
48// Then verify that the `RealType` template parameter of DistType (stored in
49// in value_type) is promoted correctly according to the deduction guides.
50template <template<class, class> class DistType, class PromType = double, class... Types>
51void test_deduction_guide(Types... types)
52{
53 DistType d(types...);
54 static_assert(std::is_same<typename decltype(d)::value_type, PromType>::value);
55}
56
57int main()
58{
59 using namespace boost::math;
60
61 test_deduction_guide<arcsine_distribution>(0);
62 test_deduction_guide<arcsine_distribution>(0, 1);
63
64 test_deduction_guide<bernoulli_distribution>(0);
65
66 test_deduction_guide<beta_distribution>(1);
67 test_deduction_guide<beta_distribution>(1, 1);
68
69 test_deduction_guide<binomial_distribution>(1);
70 test_deduction_guide<binomial_distribution>(1, 0);
71
72 test_deduction_guide<cauchy_distribution>(0);
73 test_deduction_guide<cauchy_distribution>(0, 1);
74
75 test_deduction_guide<chi_squared_distribution>(2);
76
77 test_deduction_guide<exponential_distribution>(1);
78
79 test_deduction_guide<extreme_value_distribution>(0);
80 test_deduction_guide<extreme_value_distribution>(0, 1);
81
82 test_deduction_guide<fisher_f_distribution>(1, 2);
83
84 test_deduction_guide<gamma_distribution>(1);
85 test_deduction_guide<gamma_distribution>(1, 1);
86
87 test_deduction_guide<geometric_distribution>(1);
88
89 test_deduction_guide<inverse_chi_squared_distribution>(1);
90 test_deduction_guide<inverse_chi_squared_distribution>(1, 1);
91
92 test_deduction_guide<inverse_gamma_distribution>(1);
93 test_deduction_guide<inverse_gamma_distribution>(1, 1);
94
95 test_deduction_guide<inverse_gaussian_distribution>(1);
96 test_deduction_guide<inverse_gaussian_distribution>(1, 1);
97
98 test_deduction_guide<kolmogorov_smirnov_distribution>(1);
99
100 test_deduction_guide<laplace_distribution>(0);
101 test_deduction_guide<laplace_distribution>(0, 1);
102
103 test_deduction_guide<logistic_distribution>(0);
104 test_deduction_guide<logistic_distribution>(0, 1);
105
106 test_deduction_guide<lognormal_distribution>(0);
107 test_deduction_guide<lognormal_distribution>(0, 1);
108
109 test_deduction_guide<negative_binomial_distribution>(1, 1);
110
111 test_deduction_guide<non_central_beta_distribution>(1, 1, 1);
112
113 test_deduction_guide<non_central_chi_squared_distribution>(1, 1);
114
115 test_deduction_guide<non_central_f_distribution>(1, 1, 1);
116
117 test_deduction_guide<non_central_t_distribution>(1, 1);
118
119 test_deduction_guide<normal_distribution>(2);
120 test_deduction_guide<normal_distribution>(2, 3);
121
122 test_deduction_guide<pareto_distribution>(2);
123 test_deduction_guide<pareto_distribution>(2, 3);
124
125 test_deduction_guide<poisson_distribution>(1);
126
127 test_deduction_guide<rayleigh_distribution>(1);
128
129 test_deduction_guide<skew_normal_distribution>(0);
130 test_deduction_guide<skew_normal_distribution>(0, 1);
131 test_deduction_guide<skew_normal_distribution>(0, 1, 0);
132
133 test_deduction_guide<students_t_distribution>(2);
134
135 test_deduction_guide<triangular_distribution>(-1);
136 test_deduction_guide<triangular_distribution>(-1, 0);
137 test_deduction_guide<triangular_distribution>(-1, 0, 1);
138
139 test_deduction_guide<uniform_distribution>(0);
140 test_deduction_guide<uniform_distribution>(0, 1);
141
142 test_deduction_guide<weibull_distribution>(1);
143 test_deduction_guide<weibull_distribution>(1, 1);
144}