This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: glibc-2.21 -- x86: ERANGE failures for exp10*, exp2* ,pow* and tgamma.
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Carlos O'Donell <carlos at redhat dot com>
- Cc: Siddhesh Poyarekar <siddhesh at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Sat, 24 Jan 2015 19:09:16 +0000
- Subject: Re: glibc-2.21 -- x86: ERANGE failures for exp10*, exp2* ,pow* and tgamma.
- Authentication-results: sourceware.org; auth=none
- References: <54C3E6F3 dot 7040207 at redhat dot com>
On Sat, 24 Jan 2015, Carlos O'Donell wrote:
> Joseph,
>
> The 32-bit x86 builds fail test-float for me with ERANGE failures
> in exp10*, exp2*, pow* and tgamma tests.
>
> You can see the test-float.out output here under x86 (32-bit, Linux):
> https://sourceware.org/glibc/wiki/Release/2.21
>
> Before I investigate I wanted to know if you had any thoughts about
> the source of this failure?
I haven't seen those failures, and there haven't been many libm changes in
2.21.
One theoretically possible cause is functions returning values with excess
range and precision in them, and the wrappers math/w_*.c not removing the
excess prevision for the comparison with 0 that determines whether to set
errno (or to call __kernel_standard_f to do so). Such excess precision
returns are the first issue listed at
<https://sourceware.org/glibc/wiki/Development_Todo/Master#libm_itself>,
but I hadn't seen them cause test failures. (Whether they are a standards
conformance issue is unclear; ISO C requires return statements to remove
excess range and precision, but there is no requirement for library
functions to behave as if written in ISO C, hence the statement that
"There is a sequence point immediately before a library function returns."
which would not otherwise be needed.)
--
Joseph S. Myers
joseph@codesourcery.com