Commit 12905f10 by Jonathan Wakely Committed by Jonathan Wakely

PR69240 Define inequality operators for <random> param types

	PR libstdc++/69240
	* include/bits/random.h (uniform_real_distribution::param_type)
	(normal_distribution::param_type, lognormal_distribution::param_type)
	(gamma_distribution::param_type, chi_squared_distribution::param_type)
	(cauchy_distribution::param_type, fisher_f_distribution::param_type)
	(student_t_distribution::param_type)
	(bernoulli_distribution::param_type, binomial_distribution::param_type)
	(geometric_distribution::param_type)
	(negative_binomial_distribution::param_type)
	(poisson_distribution::param_type)
	(exponential_distribution::param_type)
	(weibull_distribution::param_type)
	(extreme_value_distribution::param_type)
	(discrete_distribution::param_type)
	(piecewise_constant_distribution::param_type)
	(piecewise_linear_distribution::param_type): Define operator!=.
	* include/bits/uniform_int_dist.h
	(uniform_int_distribution::param_type): Likewise.
	* include/ext/random (beta_distribution::param_type)
	(rice_distribution::param_type, nakagami_distribution::param_type)
	(pareto_distribution::param_type, k_distribution::param_type)
	(arcsine_distribution::param_type, hoyt_distribution::param_type)
	(triangular_distribution::param_type)
	(von_mises_distribution::param_type)
	(hypergeometric_distribution::param_type)
	(logistic_distribution::param_type)
	(uniform_on_sphere_distribution::param_type)
	(uniform_inside_sphere_distribution::param_type): Likewise.
	* testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
	Test construction with param_type.
	* testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/extreme_value_distribution/cons/
	parms.cc: Likewise.
	* testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/negative_binomial_distribution/cons/
	parms.cc: Likewise.
	* testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
	Likewise.
	* testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
	Likewise.
	* testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/triangular_distribution/cons/parms.cc:
	Likewise.
	* testsuite/ext/random/uniform_inside_sphere_distribution/cons/
	parms.cc: Likewise.
	* testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.

From-SVN: r244722
parent 0a3ec628
2017-01-20 Jonathan Wakely <jwakely@redhat.com> 2017-01-20 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/69240
* include/bits/random.h (uniform_real_distribution::param_type)
(normal_distribution::param_type, lognormal_distribution::param_type)
(gamma_distribution::param_type, chi_squared_distribution::param_type)
(cauchy_distribution::param_type, fisher_f_distribution::param_type)
(student_t_distribution::param_type)
(bernoulli_distribution::param_type, binomial_distribution::param_type)
(geometric_distribution::param_type)
(negative_binomial_distribution::param_type)
(poisson_distribution::param_type)
(exponential_distribution::param_type)
(weibull_distribution::param_type)
(extreme_value_distribution::param_type)
(discrete_distribution::param_type)
(piecewise_constant_distribution::param_type)
(piecewise_linear_distribution::param_type): Define operator!=.
* include/bits/uniform_int_dist.h
(uniform_int_distribution::param_type): Likewise.
* include/ext/random (beta_distribution::param_type)
(rice_distribution::param_type, nakagami_distribution::param_type)
(pareto_distribution::param_type, k_distribution::param_type)
(arcsine_distribution::param_type, hoyt_distribution::param_type)
(triangular_distribution::param_type)
(von_mises_distribution::param_type)
(hypergeometric_distribution::param_type)
(logistic_distribution::param_type)
(uniform_on_sphere_distribution::param_type)
(uniform_inside_sphere_distribution::param_type): Likewise.
* testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc:
Test construction with param_type.
* testsuite/26_numerics/random/binomial_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/extreme_value_distribution/cons/
parms.cc: Likewise.
* testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/gamma_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/geometric_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/negative_binomial_distribution/cons/
parms.cc: Likewise.
* testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/poisson_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc:
Likewise.
* testsuite/26_numerics/random/weibull_distribution/cons/parms.cc:
Likewise.
* testsuite/ext/random/arcsine_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/beta_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/hypergeometric_distribution/cons/parms.cc:
Likewise.
* testsuite/ext/random/k_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/logistic_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/nakagami_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/pareto_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/rice_distribution/cons/parms.cc: Likewise.
* testsuite/ext/random/triangular_distribution/cons/parms.cc:
Likewise.
* testsuite/ext/random/uniform_inside_sphere_distribution/cons/
parms.cc: Likewise.
* testsuite/ext/random/von_mises_distribution/cons/parms.cc: Likewise.
PR libstdc++/72792 PR libstdc++/72792
* include/bits/alloc_traits.h (__allocator_traits_base::__diff_type) * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
(__allocator_traits_base::__size_type): Remove. (__allocator_traits_base::__size_type): Remove.
......
...@@ -1707,6 +1707,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1707,6 +1707,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1732,6 +1733,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1732,6 +1733,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_a; _RealType _M_a;
_RealType _M_b; _RealType _M_b;
...@@ -1925,6 +1930,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1925,6 +1930,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1951,6 +1957,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1951,6 +1957,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return (__p1._M_mean == __p2._M_mean { return (__p1._M_mean == __p2._M_mean
&& __p1._M_stddev == __p2._M_stddev); } && __p1._M_stddev == __p2._M_stddev); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_mean; _RealType _M_mean;
_RealType _M_stddev; _RealType _M_stddev;
...@@ -2138,6 +2148,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2138,6 +2148,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2161,6 +2172,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2161,6 +2172,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_m; _RealType _M_m;
_RealType _M_s; _RealType _M_s;
...@@ -2342,6 +2357,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2342,6 +2357,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2370,6 +2386,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2370,6 +2386,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return (__p1._M_alpha == __p2._M_alpha { return (__p1._M_alpha == __p2._M_alpha
&& __p1._M_beta == __p2._M_beta); } && __p1._M_beta == __p2._M_beta); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize(); _M_initialize();
...@@ -2559,6 +2579,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2559,6 +2579,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2577,6 +2598,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2577,6 +2598,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_n == __p2._M_n; } { return __p1._M_n == __p2._M_n; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_n; _RealType _M_n;
}; };
...@@ -2769,6 +2794,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2769,6 +2794,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2792,6 +2818,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2792,6 +2818,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_a; _RealType _M_a;
_RealType _M_b; _RealType _M_b;
...@@ -2970,6 +3000,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2970,6 +3000,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2993,6 +3024,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2993,6 +3024,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_m; _RealType _M_m;
_RealType _M_n; _RealType _M_n;
...@@ -3194,6 +3229,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3194,6 +3229,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3212,6 +3248,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3212,6 +3248,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_n == __p2._M_n; } { return __p1._M_n == __p2._M_n; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_n; _RealType _M_n;
}; };
...@@ -3409,6 +3449,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3409,6 +3449,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef bool result_type; typedef bool result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3429,6 +3470,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3429,6 +3470,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_p == __p2._M_p; } { return __p1._M_p == __p2._M_p; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
double _M_p; double _M_p;
}; };
...@@ -3617,6 +3662,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3617,6 +3662,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _IntType result_type; typedef _IntType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3645,6 +3691,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3645,6 +3691,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize(); _M_initialize();
...@@ -3848,6 +3898,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3848,6 +3898,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _IntType result_type; typedef _IntType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3870,6 +3921,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3870,6 +3921,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_p == __p2._M_p; } { return __p1._M_p == __p2._M_p; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize() _M_initialize()
...@@ -4048,6 +4103,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4048,6 +4103,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _IntType result_type; typedef _IntType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -4072,6 +4128,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4072,6 +4128,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_IntType _M_k; _IntType _M_k;
double _M_p; double _M_p;
...@@ -4270,6 +4330,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4270,6 +4330,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _IntType result_type; typedef _IntType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -4292,6 +4353,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4292,6 +4353,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_mean == __p2._M_mean; } { return __p1._M_mean == __p2._M_mean; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
// Hosts either log(mean) or the threshold of the simple method. // Hosts either log(mean) or the threshold of the simple method.
void void
...@@ -4486,6 +4551,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4486,6 +4551,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -4506,6 +4572,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4506,6 +4572,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_lambda == __p2._M_lambda; } { return __p1._M_lambda == __p2._M_lambda; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_lambda; _RealType _M_lambda;
}; };
...@@ -4688,6 +4758,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4688,6 +4758,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -4711,6 +4782,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4711,6 +4782,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_a; _RealType _M_a;
_RealType _M_b; _RealType _M_b;
...@@ -4891,6 +4966,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4891,6 +4966,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -4914,6 +4990,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -4914,6 +4990,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_a; _RealType _M_a;
_RealType _M_b; _RealType _M_b;
...@@ -5091,6 +5171,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5091,6 +5171,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _IntType result_type; typedef _IntType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -5127,6 +5208,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5127,6 +5208,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_prob == __p2._M_prob; } { return __p1._M_prob == __p2._M_prob; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize(); _M_initialize();
...@@ -5321,6 +5406,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5321,6 +5406,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -5368,6 +5454,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5368,6 +5454,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize(); _M_initialize();
...@@ -5588,6 +5678,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5588,6 +5678,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -5633,8 +5724,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -5633,8 +5724,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return (__p1._M_int == __p2._M_int { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; }
&& __p1._M_den == __p2._M_den); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
......
...@@ -91,6 +91,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -91,6 +91,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_IntType _M_a; _IntType _M_a;
_IntType _M_b; _IntType _M_b;
...@@ -363,6 +367,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -363,6 +367,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*__f++ = __uctype(__urng()) - __urngmin + __param.a(); *__f++ = __uctype(__urng()) - __urngmin + __param.a();
} }
// operator!= and operator<< and operator>> are defined in <bits/random.h>
_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION
} // namespace std } // namespace std
......
...@@ -404,6 +404,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -404,6 +404,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -432,6 +433,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -432,6 +433,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return (__p1._M_alpha == __p2._M_alpha { return (__p1._M_alpha == __p2._M_alpha
&& __p1._M_beta == __p2._M_beta); } && __p1._M_beta == __p2._M_beta); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void void
_M_initialize(); _M_initialize();
...@@ -710,6 +715,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -710,6 +715,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_mean == __p2._M_mean && __p1._M_t == __p2._M_t; } { return __p1._M_mean == __p2._M_mean && __p1._M_t == __p2._M_t; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
template <typename _InputIterator1, typename _InputIterator2> template <typename _InputIterator1, typename _InputIterator2>
void _M_init_full(_InputIterator1 __meanbegin, void _M_init_full(_InputIterator1 __meanbegin,
...@@ -942,6 +951,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -942,6 +951,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -965,8 +975,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -965,8 +975,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_nu == __p2._M_nu { return __p1._M_nu == __p2._M_nu && __p1._M_sigma == __p2._M_sigma; }
&& __p1._M_sigma == __p2._M_sigma; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -1184,6 +1197,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1184,6 +1197,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1207,8 +1221,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1207,8 +1221,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_mu == __p2._M_mu { return __p1._M_mu == __p2._M_mu && __p1._M_omega == __p2._M_omega; }
&& __p1._M_omega == __p2._M_omega; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -1417,6 +1434,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1417,6 +1434,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1442,6 +1460,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1442,6 +1460,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_alpha == __p2._M_alpha && __p1._M_mu == __p2._M_mu; } { return __p1._M_alpha == __p2._M_alpha && __p1._M_mu == __p2._M_mu; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -1651,6 +1673,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1651,6 +1673,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1680,9 +1703,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1680,9 +1703,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_lambda == __p2._M_lambda {
return __p1._M_lambda == __p2._M_lambda
&& __p1._M_mu == __p2._M_mu && __p1._M_mu == __p2._M_mu
&& __p1._M_nu == __p2._M_nu; } && __p1._M_nu == __p2._M_nu;
}
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -1890,6 +1919,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1890,6 +1919,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -1914,6 +1944,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1914,6 +1944,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -2126,6 +2160,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2126,6 +2160,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2149,8 +2184,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2149,8 +2184,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_q == __p2._M_q { return __p1._M_q == __p2._M_q && __p1._M_omega == __p2._M_omega; }
&& __p1._M_omega == __p2._M_omega; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -2359,6 +2397,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2359,6 +2397,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -2393,8 +2432,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2393,8 +2432,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return (__p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b {
&& __p1._M_c == __p2._M_c); } return (__p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b
&& __p1._M_c == __p2._M_c);
}
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
...@@ -2646,8 +2691,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2646,8 +2691,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return (__p1._M_mu == __p2._M_mu { return __p1._M_mu == __p2._M_mu && __p1._M_kappa == __p2._M_kappa; }
&& __p1._M_kappa == __p2._M_kappa); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_mu; _RealType _M_mu;
...@@ -2889,6 +2937,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -2889,6 +2937,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
&& (__p1._M_K == __p2._M_K) && (__p1._M_K == __p2._M_K)
&& (__p1._M_n == __p2._M_n); } && (__p1._M_n == __p2._M_n); }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
result_type _M_N; result_type _M_N;
...@@ -3111,6 +3163,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3111,6 +3163,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef _RealType result_type; typedef _RealType result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3133,8 +3186,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3133,8 +3186,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_a == __p2._M_a { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; }
&& __p1._M_b == __p2._M_b; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
void _M_initialize(); void _M_initialize();
...@@ -3317,6 +3373,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3317,6 +3373,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public: public:
/** The type of the range of the distribution. */ /** The type of the range of the distribution. */
typedef std::array<_RealType, _Dimen> result_type; typedef std::array<_RealType, _Dimen> result_type;
/** Parameter type. */ /** Parameter type. */
struct param_type struct param_type
{ {
...@@ -3325,8 +3382,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3325,8 +3382,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ } { }
friend bool friend bool
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type&, const param_type&)
{ return true; } { return true; }
friend bool
operator!=(const param_type&, const param_type&)
{ return false; }
}; };
/** /**
...@@ -3530,6 +3591,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -3530,6 +3591,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
operator==(const param_type& __p1, const param_type& __p2) operator==(const param_type& __p1, const param_type& __p2)
{ return __p1._M_radius == __p2._M_radius; } { return __p1._M_radius == __p2._M_radius; }
friend bool
operator!=(const param_type& __p1, const param_type& __p2)
{ return !(__p1 == __p2); }
private: private:
_RealType _M_radius; _RealType _M_radius;
}; };
......
...@@ -35,8 +35,20 @@ test01() ...@@ -35,8 +35,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<bool>::max() ); VERIFY( u.max() == std::numeric_limits<bool>::max() );
} }
void
test02()
{
using param_type = std::bernoulli_distribution::param_type;
const param_type p(0.75);
std::bernoulli_distribution u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == std::numeric_limits<bool>::min() );
VERIFY( u.max() == std::numeric_limits<bool>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,20 @@ test01() ...@@ -36,8 +36,20 @@ test01()
VERIFY( u.max() == u.t() ); VERIFY( u.max() == u.t() );
} }
void
test02()
{
using param_type = std::binomial_distribution<>::param_type;
const param_type p(3, 0.75);
std::binomial_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == 0 );
VERIFY( u.max() == u.t() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::cauchy_distribution<>::param_type;
const param_type p(5.0, 2.0);
std::cauchy_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::cauchy_distribution<>::result_type result_type;
VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,21 @@ test01() ...@@ -36,8 +36,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::chi_squared_distribution<>::param_type;
const param_type p(1.5);
std::chi_squared_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::chi_squared_distribution<>::result_type result_type;
VERIFY( u.min() == 0.0 );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,21 @@ test01() ...@@ -36,8 +36,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::exponential_distribution<>::param_type;
const param_type p(0.5);
std::exponential_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::exponential_distribution<>::result_type result_type;
VERIFY( u.min() == 0.0 );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::extreme_value_distribution<>::param_type;
const param_type p(5.0, 2.0);
std::extreme_value_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::extreme_value_distribution<>::result_type result_type;
VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::fisher_f_distribution<>::param_type;
const param_type p(0.75);
std::fisher_f_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::fisher_f_distribution<>::result_type result_type;
VERIFY( u.min() == 0.0 );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,20 @@ test01() ...@@ -37,8 +37,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::gamma_distribution<>::param_type;
const param_type p(1.5, 3.0);
std::gamma_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::gamma_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,20 @@ test01() ...@@ -36,8 +36,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::geometric_distribution<>::param_type;
const param_type p(0.75);
std::geometric_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::geometric_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::lognormal_distribution<>::param_type;
const param_type p(5.0, 2.0);
std::lognormal_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::lognormal_distribution<>::result_type result_type;
VERIFY( u.min() == 0.0 );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::negative_binomial_distribution<>::param_type;
const param_type p(3, 0.75);
std::negative_binomial_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::negative_binomial_distribution<>::result_type result_type;
VERIFY( u.min() == 0 );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,21 @@ test01() ...@@ -37,8 +37,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::normal_distribution<>::param_type;
const param_type p(5.0, 2.0);
std::normal_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::normal_distribution<>::result_type result_type;
VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,20 @@ test01() ...@@ -36,8 +36,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::poisson_distribution<>::param_type;
const param_type p(5.0);
std::poisson_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::poisson_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,21 @@ test01() ...@@ -36,8 +36,21 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::student_t_distribution<>::param_type;
const param_type p(1.5);
std::student_t_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::student_t_distribution<>::result_type result_type;
VERIFY( u.min() == std::numeric_limits<result_type>::lowest() );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,20 @@ test01() ...@@ -36,8 +36,20 @@ test01()
VERIFY( u.max() == 20 ); VERIFY( u.max() == 20 );
} }
void
test02()
{
using param_type = std::uniform_int_distribution<int>::param_type;
const param_type p(1, 20);
std::uniform_int_distribution<int> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == 1 );
VERIFY( u.max() == 20 );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -36,8 +36,20 @@ test01() ...@@ -36,8 +36,20 @@ test01()
VERIFY( u.max() == 5.0 ); VERIFY( u.max() == 5.0 );
} }
void
test02()
{
using param_type = std::uniform_real_distribution<double>::param_type;
const param_type p(-5.0, 5.0);
std::uniform_real_distribution<double> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == -5.0 );
VERIFY( u.max() == 5.0 );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,8 +37,20 @@ test01() ...@@ -37,8 +37,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
void
test02()
{
using param_type = std::weibull_distribution<>::param_type;
const param_type p(2.0, 3.5);
std::weibull_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef std::weibull_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -33,9 +33,20 @@ test01() ...@@ -33,9 +33,20 @@ test01()
VERIFY( u.max() == 3.0 ); VERIFY( u.max() == 3.0 );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::arcsine_distribution<>::param_type;
const param_type p(-1.5, 3.0);
__gnu_cxx::arcsine_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == -1.5 );
VERIFY( u.max() == 3.0 );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -34,8 +34,20 @@ test01() ...@@ -34,8 +34,20 @@ test01()
VERIFY( u.max() == 1.0 ); VERIFY( u.max() == 1.0 );
} }
void
test02()
{
using param_type = __gnu_cxx::beta_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::beta_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == 0.0 );
VERIFY( u.max() == 1.0 );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -34,9 +34,20 @@ test01() ...@@ -34,9 +34,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::hoyt_distribution<>::param_type;
const param_type p(0.05, 3.0);
__gnu_cxx::hoyt_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::hoyt_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,9 +37,20 @@ test01() ...@@ -37,9 +37,20 @@ test01()
VERIFY( u.max() == 2 ); VERIFY( u.max() == 2 );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::hypergeometric_distribution<>::param_type;
const param_type p(15, 3, 2);
__gnu_cxx::hypergeometric_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == 0 );
VERIFY( u.max() == 2 );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -38,9 +38,20 @@ test01() ...@@ -38,9 +38,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::k_distribution<>::param_type;
const param_type p(2.0, 1.5, 3.0);
__gnu_cxx::k_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::k_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -38,9 +38,22 @@ test01() ...@@ -38,9 +38,22 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::logistic_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::logistic_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::logistic_distribution<>::result_type result_type;
VERIFY( u.min() == -std::numeric_limits<result_type>::max() );
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,9 +37,20 @@ test01() ...@@ -37,9 +37,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::nakagami_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::nakagami_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::nakagami_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -40,8 +40,23 @@ test01() ...@@ -40,8 +40,23 @@ test01()
VERIFY( u.max()[1] == std::numeric_limits<result_type::value_type>::max() ); VERIFY( u.max()[1] == std::numeric_limits<result_type::value_type>::max() );
} }
void
test02()
{
using param_type = __gnu_cxx::normal_mv_distribution<2>::param_type;
const param_type p({5.0, 4.0}, {4.0, 9.0});
__gnu_cxx::normal_mv_distribution<2> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::normal_mv_distribution<2>::result_type result_type;
VERIFY( u.min()[0] == std::numeric_limits<result_type::value_type>::lowest() );
VERIFY( u.max()[0] == std::numeric_limits<result_type::value_type>::max() );
VERIFY( u.min()[1] == std::numeric_limits<result_type::value_type>::lowest() );
VERIFY( u.max()[1] == std::numeric_limits<result_type::value_type>::max() );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,9 +37,20 @@ test01() ...@@ -37,9 +37,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::pareto_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::pareto_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::pareto_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -37,9 +37,20 @@ test01() ...@@ -37,9 +37,20 @@ test01()
VERIFY( u.max() == std::numeric_limits<result_type>::max() ); VERIFY( u.max() == std::numeric_limits<result_type>::max() );
} }
int void
main() test02()
{
using param_type = __gnu_cxx::rice_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::rice_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
typedef __gnu_cxx::rice_distribution<>::result_type result_type;
VERIFY( u.max() == std::numeric_limits<result_type>::max() );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -35,8 +35,20 @@ test01() ...@@ -35,8 +35,20 @@ test01()
VERIFY( u.max() == 3.5 ); VERIFY( u.max() == 3.5 );
} }
void
test02()
{
using param_type = __gnu_cxx::triangular_distribution<>::param_type;
const param_type p(1.5, 3.0, 3.5);
__gnu_cxx::triangular_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == 1.5 );
VERIFY( u.max() == 3.5 );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -27,8 +27,6 @@ ...@@ -27,8 +27,6 @@
void void
test01() test01()
{ {
bool test [[gnu::unused]] = true;
__gnu_cxx::uniform_inside_sphere_distribution<2> u(1.5); __gnu_cxx::uniform_inside_sphere_distribution<2> u(1.5);
VERIFY( u.radius() == 1.5 ); VERIFY( u.radius() == 1.5 );
...@@ -36,9 +34,19 @@ test01() ...@@ -36,9 +34,19 @@ test01()
VERIFY( v.radius() == 3.0 ); VERIFY( v.radius() == 3.0 );
} }
int void
main() test02()
{
using param_type
= __gnu_cxx::uniform_inside_sphere_distribution<2>::param_type;
const param_type p(1.5);
__gnu_cxx::uniform_inside_sphere_distribution<2> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
}
int main()
{ {
test01(); test01();
return 0; test02();
} }
...@@ -34,8 +34,20 @@ test01() ...@@ -34,8 +34,20 @@ test01()
VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi ); VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
} }
void
test02()
{
using param_type = __gnu_cxx::von_mises_distribution<>::param_type;
const param_type p(1.5, 3.0);
__gnu_cxx::von_mises_distribution<> u(p);
VERIFY( u.param() == p );
VERIFY( u.param() != param_type{} );
VERIFY( u.min() == -__gnu_cxx::__math_constants<double>::__pi );
VERIFY( u.max() == __gnu_cxx::__math_constants<double>::__pi );
}
int main() int main()
{ {
test01(); test01();
return 0; test02();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment