[PATCH] Fix ilogb exception and errno (bug 6794)
Mike Frysinger
vapier@gentoo.org
Wed Apr 18 03:24:00 GMT 2012
On Wednesday 11 April 2012 15:30:13 Adhemerval Zanella wrote:
> Following Joseph comments about bug 6794, here is a proposed fix. It turned
> out to be a large fix mainly because I had to move some file along to
> follow libm files/names conventions.
>
> Basically I have added wrappers (w_ilogb.c, w_ilogbf.c, w_ilogbl.c) that
> now calls the symbol '__ieee754_ilogb'. The wrappers checks for
> '__ieee754_ilogb' output and set the errno and raise exceptions as
> expected.
>
> The '__ieee754_ilogb' is implemented in sysdeps. I have moved the
> 's_ilogb[f|l]' files to e_ilogb[f|l] and renamed the '__ilogb[f|l]' to
> '__ieee754_ilogb[f|l]'.
>
> I also found out a bug in i386 and x86-64 assembly coded ilogb
> implementation where it raises a FE_DIVBYZERO when argument is '0.0'. I
> corrected this issue as well.
>
> Finally I added the errno and FE_INVALID tests for 0.0, NaN and +-InF
> argument. Tested on i386, x86-64, ppc32 and ppc64.
>
> ---
> 2012-04-11 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
>
> [BZ #6794]
> * math/Makefile: Add e_ilogb and w_ilogb, remove s_logb.
> * math/libm-test.inc: Add ilogb errno and exception tests.
> * math/w_ilogb.c: New file: ilogb wrapper.
> * math/w_ilogbf.c: New file: ilogbf wrapper.
> * math/w_ilogbl.c: New file: ilogbl wrapper.
> * sysdeps/generic/math_private.h: Add __ieee754_ilogb[l|f] prototypes.
> * sysdeps/i386/fpu/s_ilogb.S: Moved to ...
> * sysdeps/i386/fpu/e_ilogb.S: ... here. Also fixed a FE_DIVBYZERO
> exception being thrown with 0.0 as argument.
> * sysdeps/i386/fpu/s_ilogbf.S: Moved to ...
> * sysdeps/i386/fpu/e_ilogbf.S: ... here. Also fixed a FE_DIVBYZERO
> exception being thrown with 0.0 as argument.
> * sysdeps/i386/fpu/s_ilogbl.S: Moved to ...
> * sysdeps/i386/fpu/e_ilogbl.S: ... here. Also fixed a FE_DIVBYZERO
> exception being thrown with 0.0 as argument.
> * sysdeps/x86_64/fpu/s_ilogbl.S: Moved to ...
> * sysdeps/x86_64/fpu/e_ilogbl.S: ... here. Also fixed a FE_DIVBYZERO
> exception being thrown with 0.0 as argument.
> * sysdeps/ieee754/dbl-64/s_ilogb.c: Moved to ...
> * sysdeps/ieee754/dbl-64/e_ilogb.c: ... here.
> * sysdeps/ieee754/flt-32/e_ilogbf.c: Moved to ...
> * sysdeps/ieee754/flt-32/e_ilogbf.c: ... here.
> * sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c: Moved to ...
> * sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c: ... here.
> * sysdeps/ieee754/ldbl-opt/s_ilogb.c: Moved to ...
> * sysdeps/ieee754/ldbl-opt/w_ilogb.c: ... here.
> * sysdeps/ieee754/ldbl-opt/w_ilogbl.c: New file: ilogbl wrapper.
i see a bunch of e_ilogbl.c files still in the tree. did you miss some in
renaming to e_ilogbl.c ?
sysdeps/ieee754/ldbl-128/s_ilogbl.c
sysdeps/ieee754/ldbl-64-128/s_ilogbl.c
sysdeps/ieee754/ldbl-96/s_ilogbl.c
sysdeps/sparc/sparc64/soft-fp/s_ilogbl.c
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20120418/12412b8b/attachment.sig>
More information about the Libc-alpha
mailing list