diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8fd82e7ab66..8eb14808095 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2012-10-01 Paolo Carlini + + PR libstdc++/54757 + * include/ext/random (rice_distribution<>::operator()): Use std::hypot + only if _GLIBCXX_USE_C99_MATH_TR1. + * include/ext/random.tcc (rice_distribution<>::__generate_impl): + Likewise. + 2012-10-01 Daniel Krugler * include/std/type_traits (result_of): Provide "SFINAE-friendly" diff --git a/libstdc++-v3/include/ext/random b/libstdc++-v3/include/ext/random index 884e8a0ca91..8c40d6d420a 100644 --- a/libstdc++-v3/include/ext/random +++ b/libstdc++-v3/include/ext/random @@ -1042,7 +1042,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { result_type __x = this->_M_ndx(__urng); result_type __y = this->_M_ndy(__urng); +#if _GLIBCXX_USE_C99_MATH_TR1 return std::hypot(__x, __y); +#else + return std::sqrt(__x * __x + __y * __y); +#endif } template @@ -1054,7 +1058,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma()); result_type __x = this->_M_ndx(__px, __urng); result_type __y = this->_M_ndy(__py, __urng); +#if _GLIBCXX_USE_C99_MATH_TR1 return std::hypot(__x, __y); +#else + return std::sqrt(__x * __x + __y * __y); +#endif } template_M_ndx(__px, __urng); result_type __y = this->_M_ndy(__py, __urng); +#if _GLIBCXX_USE_C99_MATH_TR1 *__f++ = std::hypot(__x, __y); +#else + *__f++ = std::sqrt(__x * __x + __y * __y); +#endif } }