freebsd-dev/lib
Bruce Evans 12be4e0d5a Fixed 2 bugs in the computation /* t_h=ax+bp[k] High */.
(1) The bit for the 1.0 part of bp[k] was right shifted by 4.  This seems
    to have been caused by a typo in converting e_pow.c to e_powf.c.
(2) The lower 12 bits of ax+bp[k] were not discarded, so t_h was actually
    plain ax+bp[k].  This seems to have been caused by a logic error in
    the conversion.

These bugs gave wrong results like:

    powf(-1.1, 101.0) = -15158.703 (should be -15158.707)
      hex values: BF8CCCCD 42CA0000 C66CDAD0 C66CDAD4

Fixing (1) gives a result wrong in the opposite direction (hex C66CDAD8),
and fixing (2) gives the correct result.

ucbtest has been reporting this particular wrong result on i386 systems
with unpatched libraries for 9 years.  I finally figured out the extent
of the bugs.  On i386's they are normally hidden by extra precision.
We use the trick of representing floats as a sum of 2 floats (one much
smaller) to get extra precision in intermediate calculations without
explicitly using more than float precision.  This trick is just a
pessimization when extra precision is available naturally (as it always
is when dealing with IEEE single precision, so the float precision part
of the library is mostly misimplemented).  (1) and (2) break the trick
in different ways, except on i386's it turns out that the intermediate
calculations are done in enough precision to mask both the bugs and
the limited precision of the float variables (as far as ucbtest can
check).

ucbtest detects the bugs because it forces float precision, but this
is not a normal mode of operation so the bug normally has little effect
on i386's.

On systems that do float arithmetic in float precision, e.g., amd64's,
there is no accidental extra precision and the bugs just give wrong
results.
2004-06-01 18:08:39 +00:00
..
compat Update with the 4.9 pam modules, and add pam_opieaccess.so to the mix. 2003-12-07 03:02:27 +00:00
csu C runtime support for FreeBSD/arm. 2004-05-14 12:19:04 +00:00
libalias Unbreak natd. 2004-04-02 17:57:57 +00:00
libarchive Connect libarchive decompress support to the build. 2004-05-27 23:57:45 +00:00
libatm Use WARNS?=3 for these in the arm case for now, due to toolchain issues. 2004-05-14 13:31:21 +00:00
libbind Removed now unused INTERNALSTATICLIB. 2002-05-13 11:09:07 +00:00
libbluetooth Make NULL a (void*)0 whereever possible, and fix the warnings(-Werror) 2004-03-05 08:10:19 +00:00
libbsnmp Use a MANFILTER to patch the man pages to point to the right path. 2004-04-14 16:31:54 +00:00
libbz2 Remove MAINTAINER lines. 2003-06-14 19:32:52 +00:00
libc Change the signature of ftok from (const char *, char) to (const char *, int) 2004-06-01 06:53:07 +00:00
libc_r style cleanup: Remove duplicate $FreeBSD$ tags. 2004-02-10 20:45:28 +00:00
libcalendar mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
libcam Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
libcom_err
libcompat mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
libcrypt Stage 3 of dynamic root support. Make all the libraries needed to run 2003-08-17 08:28:46 +00:00
libdevinfo mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
libdevstat Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
libdisk Remove spurious semicolons. Outside of functions they are actually errors but 2004-05-16 22:08:17 +00:00
libedit mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
libexpat Stage 3 of dynamic root support. Make all the libraries needed to run 2003-08-17 08:28:46 +00:00
libfetch Slight tweak to previous commit: don't forget to call _http_seterr() if 2004-02-11 09:35:27 +00:00
libform Use 2003-06-06 13:46:55 +00:00
libftpio The .Fn function 2003-06-08 10:34:00 +00:00
libgeom Make libgeom usable by C++ programs: 2004-03-09 21:14:18 +00:00
libio Remove now redundant and now conflicting declaration of sysarch(2). 2004-01-10 18:37:11 +00:00
libipsec Initial import of RFC 2385 (TCP-MD5) digest support. 2004-02-11 04:34:34 +00:00
libipx Don't declare spectHex() inside a function, use a real prototype. 2004-05-24 16:48:53 +00:00
libisc Fix the #include part of the SYNOPSIS for heap.3 2003-06-17 08:43:19 +00:00
libkiconv Fixed misspellings of '\0' as NULL. 2004-03-14 05:14:00 +00:00
libkse Arm bits for libpthread. It has no chances to work and should be considered 2004-05-14 12:21:29 +00:00
libkvm Implement crashdump decoding for AMD64 as well, now that I have finally 2004-05-19 18:24:13 +00:00
libmd Backed out rev.1.6 and subsequent copying of it (bogus addition of 2004-02-26 07:44:37 +00:00
libmenu Use 2003-06-06 13:46:55 +00:00
libmilter Honor NOINET6 and disable IPv6 support in libmilter and sendmail if it 2004-06-01 01:29:42 +00:00
libmp Add a reference to bn(3) for those looking for functional multiprecision 2003-08-30 05:35:46 +00:00
libncp Fixed a misspelling of 0 as NULL. Removed a spelling of NULL as 0. 2004-03-14 05:19:38 +00:00
libncurses Unbreak the NOINSTALLLIB install. 2003-08-30 13:57:31 +00:00
libnetgraph Increment WARNS. 2004-01-28 00:11:42 +00:00
libngatm style.Makefile: 2004-02-23 20:07:47 +00:00
libopie Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
libpam Add -DDEBUG to DEBUG_FLAGS if PAM_DEBUG is defined. 2004-03-15 13:23:20 +00:00
libpanel Use 2003-06-06 13:46:55 +00:00
libpcap Merge of libpcap 0.8.3 from tcpdump.org. 2004-03-31 09:15:09 +00:00
libpthread Arm bits for libpthread. It has no chances to work and should be considered 2004-05-14 12:21:29 +00:00
libpthread_dbg Add missing file. 2004-02-04 06:32:45 +00:00
libradius Put crypto-aware version of the library into the right distribution. 2004-05-12 06:31:36 +00:00
librpcsvc clnt_call takes args of type xdrproc_t. 2003-10-26 03:43:35 +00:00
libsbuf style.Makefile(5) 2003-08-18 15:25:39 +00:00
libsdp Make sure Bluetooth stuff can be compiled on amd64 2004-04-09 23:01:42 +00:00
libsm Honor NOINET6 and disable IPv6 support in libmilter and sendmail if it 2004-06-01 01:29:42 +00:00
libsmb Zap now-unused SHLIB_MINOR 2002-09-28 00:25:32 +00:00
libsmdb Remove MAINTAINER= lines from individual Makefiles in favor of the 2003-07-07 03:54:04 +00:00
libsmutil Remove MAINTAINER= lines from individual Makefiles in favor of the 2003-07-07 03:54:04 +00:00
libstand Define iaddr_t and saddr_t for arm. 2004-05-14 13:32:13 +00:00
libtacplus Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
libtelnet Make sure that a "make release" (more accurately the bit that makes 2003-07-24 17:19:15 +00:00
libthr Make libthr async-signal-safe without costly signal masking. The guidlines I 2004-05-20 12:06:16 +00:00
libufs Remove unneccessary include of sys/types.h in the SYNOPSIS 2003-10-09 09:45:20 +00:00
libugidfw Fixed misspellings of 0 as NULL. 2004-03-11 09:56:04 +00:00
libusbhid Do not cast dval. 2004-02-11 21:09:13 +00:00
libutil Humanize_number(3) is a part of libutil. 2004-05-25 20:11:50 +00:00
libvgl Fix typo. 2004-05-12 20:40:09 +00:00
libwrap Turn on the extended syntax, which TCP_wrappers has by default, as 2003-07-24 19:58:56 +00:00
libxpg4 Mark libxpg4 as OBSOLETE_IN_6: it has been empty since its contents 2003-06-13 07:21:37 +00:00
liby Include <stdlib.h> for exit() and add a prototype for yyparse(). 2004-05-24 09:50:57 +00:00
libypclnt Nothing in libypclnt depends on librpcsvc. 2004-02-04 09:53:29 +00:00
libz Stage 3 of dynamic root support. Make all the libraries needed to run 2003-08-17 08:28:46 +00:00
msun Fixed 2 bugs in the computation /* t_h=ax+bp[k] High */. 2004-06-01 18:08:39 +00:00
ncurses Unbreak the NOINSTALLLIB install. 2003-08-30 13:57:31 +00:00
Makefile Style fixes: 2004-05-14 19:52:35 +00:00
Makefile.inc Zap now-unused SHLIB_MINOR 2002-09-28 00:25:32 +00:00