Date: Wed, 27 Feb 2002 09:31:05 -0800 (PST) From: David Monniaux <monniaux@genievre.ens.fr> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/35381: incorrect floating-point display of large values when using round-upward IEEE mode Message-ID: <200202271731.g1RHV5d29073@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 35381
>Category: misc
>Synopsis: incorrect floating-point display of large values when using round-upward IEEE mode
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 27 09:40:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: David Monniaux
>Release: 4.4
>Organization:
ENS
>Environment:
FreeBSD airelle 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Mon Jan 7 11:46:25 CET 2002 root@airelle:/usr/src/sys/compile/AIRELLE i386
>Description:
Very large floating-point values (very close to the maximal non
infinite number for the current IEEE precision mode, i.e.
DBL_MAX = 1.7976931348623157E+308 when left to the default)
are displayed incorrectly if the system has been put in
round-upward mode (using fpsetround()).
The output string is not even a valid number (contains a colon
in place of a digit).
>How-To-Repeat:
#include <ieeefp.h>
#include <stdio.h>
main()
{
fpsetround(FP_RP);
printf("%g\n", 1E308);
}
airelle% ./essai
:e+307
^^ incorrect display
>Fix:
Save/restore the floating-point rounding mode
(and possibly precision mode) around library functions that expect
a particular mode.
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202271731.g1RHV5d29073>
