delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/03/05/06:42:25

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019