www.delorie.com/archives/browse.cgi | search |
X-Spam-Check-By: | sourceware.org |
Message-ID: | <440ACF12.7000403@cs.unipr.it> |
Date: | Sun, 05 Mar 2006 12:44:18 +0100 |
From: | Roberto Bagnara <bagnara AT cs DOT unipr DOT it> |
User-Agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050929 Thunderbird/1.0.7 Fedora/1.0.7-1.1.fc4 Mnenhy/0.7.3.0 |
MIME-Version: | 1.0 |
To: | tprince AT computer DOT org |
CC: | cygwin AT cygwin DOT com, |
"The Parma Polyhedra Library developers' list" <ppl-devel AT cs DOT unipr DOT it> | |
Subject: | Re: Precision of doubles and stdio |
References: | <4408B886 DOT 5010209 AT cs DOT unipr DOT it> <4408C140 DOT 9030100 AT myrealbox DOT com> |
In-Reply-To: | <4408C140.9030100@myrealbox.com> |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Tim Prince wrote: > Roberto Bagnara wrote: >> >> Hi there, >> >> the following little program >> >> #include <stdio.h> >> >> int main() { >> double d; >> scanf("%lf", &d); >> printf("%.1000g\n", d); >> return 0; >> } >> >> does this on Linux/i686 >> >> $ gcc -W -Wall in.c >> $ a.out >> 70.9 >> 70.900000000000005684341886080801486968994140625 >> >> and does the following under Cygwin on the same machine: >> >> roberto AT quark /tmp >> $ gcc -W -Wall in.c >> >> roberto AT quark /tmp >> $ ./a.exe >> 70.9 >> 70.90000000000000568434188608080148696899414 >> >> Why? Is there a way to reconcile the two behaviors? >> Notice that I know about the x87 and its vaguaries: >> nonetheless I wonder why such a scanf immediately >> followed by a printf shows a difference between >> Cygwin and Linux. > If you haven't gone out of your way to install similar printf() support > libraries on cygwin and linux, they will definitely not be the same. My > past reading of various relevant documents convinced me that digits > beyond the 17th in formatting of doubles are not required by any > standard to be consistent between implementations. They have no useful > function, as 17 digits are sufficient to determine uniquely the > corresponding binary value in IEEE 754 format. Thank you Tim. We were unaware of this giant bug in the C standard. All the best, Roberto -- Prof. Roberto Bagnara Computer Science Group Department of Mathematics, University of Parma, Italy http://www.cs.unipr.it/~bagnara/ mailto:bagnara AT cs DOT unipr DOT it -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |