Message ID | 20150513133233.GH30202@redhat.com |
---|---|
State | New |
Headers | show |
2015-05-13 15:32 GMT+02:00 Jonathan Wakely <jwakely@redhat.com>: > http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4383.html#2459 > > Voted into the WP in Lenexa. > > Tested powerpc64le-linux, comitted to trunk. What about assertions regarding non-NAN rho and finite theta, as decided for by the LWG 2439? - Daniel
On 13/05/15 15:36 +0200, Daniel Krügler wrote: >2015-05-13 15:32 GMT+02:00 Jonathan Wakely <jwakely@redhat.com>: >> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4383.html#2459 >> >> Voted into the WP in Lenexa. >> >> Tested powerpc64le-linux, comitted to trunk. > >What about assertions regarding non-NAN rho and finite theta, as >decided for by the LWG 2439? I don't know how to reliably test those conditions. What if _Tp is not a floating-point type? The assertion I added addresses the original issue as reported numerous times to libc++. I don't really care if it doesn't deal with the additional preconditions added in Cologne, as users don't seem to expect a meaningful answer for NaNs and infinities.
On Wed, 13 May 2015, Daniel Krügler wrote: > 2015-05-13 15:32 GMT+02:00 Jonathan Wakely <jwakely@redhat.com>: >> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4383.html#2459 >> >> Voted into the WP in Lenexa. >> >> Tested powerpc64le-linux, comitted to trunk. > > What about assertions regarding non-NAN rho and finite theta, as > decided for by the LWG 2439? non-NAN rho is already covered by rho >= 0.
2015-05-13 16:05 GMT+02:00 Marc Glisse <marc.glisse@inria.fr>: > On Wed, 13 May 2015, Daniel Krügler wrote: >> What about assertions regarding non-NAN rho and finite theta, as >> decided for by the LWG 2439? > > non-NAN rho is already covered by rho >= 0. Agreed on that. - Daniel
commit 9bf3b9ea20334711ecdced656323f69959521a82 Author: Jonathan Wakely <jwakely@redhat.com> Date: Wed May 13 14:18:03 2015 +0100 * include/std/complex (polar): Check for negative rho (LWG 2459). diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 585683c..f2a6cf9 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -667,7 +667,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp> inline complex<_Tp> polar(const _Tp& __rho, const _Tp& __theta) - { return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); } + { + _GLIBCXX_DEBUG_ASSERT( __rho >= 0 ); + return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); + } template<typename _Tp> inline complex<_Tp>