diff options
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h')
-rw-r--r-- | contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h | 189 |
1 files changed, 75 insertions, 114 deletions
diff --git a/contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h b/contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h index 47db56ee4529..d8724f8bc5ce 100644 --- a/contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h +++ b/contrib/llvm-project/libcxx/include/__random/lognormal_distribution.h @@ -25,137 +25,98 @@ _LIBCPP_PUSH_MACROS _LIBCPP_BEGIN_NAMESPACE_STD -template<class _RealType = double> -class _LIBCPP_TEMPLATE_VIS lognormal_distribution -{ +template <class _RealType = double> +class _LIBCPP_TEMPLATE_VIS lognormal_distribution { static_assert(__libcpp_random_is_valid_realtype<_RealType>::value, "RealType must be a supported floating-point type"); public: - // types - typedef _RealType result_type; - - class _LIBCPP_TEMPLATE_VIS param_type - { - result_type __m_; - result_type __s_; - public: - typedef lognormal_distribution distribution_type; - - _LIBCPP_HIDE_FROM_ABI - explicit param_type(result_type __m = 0, result_type __s = 1) - : __m_(__m), __s_(__s) {} - - _LIBCPP_HIDE_FROM_ABI - result_type m() const {return __m_;} - _LIBCPP_HIDE_FROM_ABI - result_type s() const {return __s_;} - - friend _LIBCPP_HIDE_FROM_ABI - bool operator==(const param_type& __x, const param_type& __y) - {return __x.__m_ == __y.__m_ && __x.__s_ == __y.__s_;} - friend _LIBCPP_HIDE_FROM_ABI - bool operator!=(const param_type& __x, const param_type& __y) - {return !(__x == __y);} - }; + // types + typedef _RealType result_type; + + class _LIBCPP_TEMPLATE_VIS param_type { + result_type __m_; + result_type __s_; + + public: + typedef lognormal_distribution distribution_type; + + _LIBCPP_HIDE_FROM_ABI explicit param_type(result_type __m = 0, result_type __s = 1) : __m_(__m), __s_(__s) {} + + _LIBCPP_HIDE_FROM_ABI result_type m() const { return __m_; } + _LIBCPP_HIDE_FROM_ABI result_type s() const { return __s_; } + + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const param_type& __x, const param_type& __y) { + return __x.__m_ == __y.__m_ && __x.__s_ == __y.__s_; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const param_type& __x, const param_type& __y) { return !(__x == __y); } + }; private: - normal_distribution<result_type> __nd_; + normal_distribution<result_type> __nd_; public: - // constructor and reset functions + // constructor and reset functions #ifndef _LIBCPP_CXX03_LANG - _LIBCPP_HIDE_FROM_ABI - lognormal_distribution() : lognormal_distribution(0) {} - _LIBCPP_HIDE_FROM_ABI - explicit lognormal_distribution(result_type __m, result_type __s = 1) - : __nd_(__m, __s) {} + _LIBCPP_HIDE_FROM_ABI lognormal_distribution() : lognormal_distribution(0) {} + _LIBCPP_HIDE_FROM_ABI explicit lognormal_distribution(result_type __m, result_type __s = 1) : __nd_(__m, __s) {} #else - _LIBCPP_HIDE_FROM_ABI - explicit lognormal_distribution(result_type __m = 0, - result_type __s = 1) - : __nd_(__m, __s) {} + _LIBCPP_HIDE_FROM_ABI explicit lognormal_distribution(result_type __m = 0, result_type __s = 1) : __nd_(__m, __s) {} #endif - _LIBCPP_HIDE_FROM_ABI - explicit lognormal_distribution(const param_type& __p) - : __nd_(__p.m(), __p.s()) {} - _LIBCPP_HIDE_FROM_ABI - void reset() {__nd_.reset();} - - // generating functions - template<class _URNG> - _LIBCPP_HIDE_FROM_ABI - result_type operator()(_URNG& __g) - { - return std::exp(__nd_(__g)); - } - - template<class _URNG> - _LIBCPP_HIDE_FROM_ABI - result_type operator()(_URNG& __g, const param_type& __p) - { - typename normal_distribution<result_type>::param_type __pn(__p.m(), __p.s()); - return std::exp(__nd_(__g, __pn)); - } - - // property functions - _LIBCPP_HIDE_FROM_ABI - result_type m() const {return __nd_.mean();} - _LIBCPP_HIDE_FROM_ABI - result_type s() const {return __nd_.stddev();} - - _LIBCPP_HIDE_FROM_ABI - param_type param() const {return param_type(__nd_.mean(), __nd_.stddev());} - _LIBCPP_HIDE_FROM_ABI - void param(const param_type& __p) - { - typename normal_distribution<result_type>::param_type __pn(__p.m(), __p.s()); - __nd_.param(__pn); - } - - _LIBCPP_HIDE_FROM_ABI - result_type min() const {return 0;} - _LIBCPP_HIDE_FROM_ABI - result_type max() const {return numeric_limits<result_type>::infinity();} - - friend _LIBCPP_HIDE_FROM_ABI - bool operator==(const lognormal_distribution& __x, - const lognormal_distribution& __y) - {return __x.__nd_ == __y.__nd_;} - friend _LIBCPP_HIDE_FROM_ABI - bool operator!=(const lognormal_distribution& __x, - const lognormal_distribution& __y) - {return !(__x == __y);} - - template <class _CharT, class _Traits, class _RT> - friend - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, - const lognormal_distribution<_RT>& __x); - - template <class _CharT, class _Traits, class _RT> - friend - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, - lognormal_distribution<_RT>& __x); + _LIBCPP_HIDE_FROM_ABI explicit lognormal_distribution(const param_type& __p) : __nd_(__p.m(), __p.s()) {} + _LIBCPP_HIDE_FROM_ABI void reset() { __nd_.reset(); } + + // generating functions + template <class _URNG> + _LIBCPP_HIDE_FROM_ABI result_type operator()(_URNG& __g) { + return std::exp(__nd_(__g)); + } + + template <class _URNG> + _LIBCPP_HIDE_FROM_ABI result_type operator()(_URNG& __g, const param_type& __p) { + typename normal_distribution<result_type>::param_type __pn(__p.m(), __p.s()); + return std::exp(__nd_(__g, __pn)); + } + + // property functions + _LIBCPP_HIDE_FROM_ABI result_type m() const { return __nd_.mean(); } + _LIBCPP_HIDE_FROM_ABI result_type s() const { return __nd_.stddev(); } + + _LIBCPP_HIDE_FROM_ABI param_type param() const { return param_type(__nd_.mean(), __nd_.stddev()); } + _LIBCPP_HIDE_FROM_ABI void param(const param_type& __p) { + typename normal_distribution<result_type>::param_type __pn(__p.m(), __p.s()); + __nd_.param(__pn); + } + + _LIBCPP_HIDE_FROM_ABI result_type min() const { return 0; } + _LIBCPP_HIDE_FROM_ABI result_type max() const { return numeric_limits<result_type>::infinity(); } + + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const lognormal_distribution& __x, const lognormal_distribution& __y) { + return __x.__nd_ == __y.__nd_; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const lognormal_distribution& __x, const lognormal_distribution& __y) { + return !(__x == __y); + } + + template <class _CharT, class _Traits, class _RT> + friend basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const lognormal_distribution<_RT>& __x); + + template <class _CharT, class _Traits, class _RT> + friend basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, lognormal_distribution<_RT>& __x); }; template <class _CharT, class _Traits, class _RT> -inline _LIBCPP_HIDE_FROM_ABI -basic_ostream<_CharT, _Traits>& -operator<<(basic_ostream<_CharT, _Traits>& __os, - const lognormal_distribution<_RT>& __x) -{ - return __os << __x.__nd_; +inline _LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const lognormal_distribution<_RT>& __x) { + return __os << __x.__nd_; } template <class _CharT, class _Traits, class _RT> -inline _LIBCPP_HIDE_FROM_ABI -basic_istream<_CharT, _Traits>& -operator>>(basic_istream<_CharT, _Traits>& __is, - lognormal_distribution<_RT>& __x) -{ - return __is >> __x.__nd_; +inline _LIBCPP_HIDE_FROM_ABI basic_istream<_CharT, _Traits>& +operator>>(basic_istream<_CharT, _Traits>& __is, lognormal_distribution<_RT>& __x) { + return __is >> __x.__nd_; } _LIBCPP_END_NAMESPACE_STD |