From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out-no.shaw.ca (smtp-out-no.shaw.ca [64.59.134.9]) by sourceware.org (Postfix) with ESMTPS id C8851385BF9C for ; Sun, 13 Jun 2021 19:19:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C8851385BF9C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from [192.168.1.104] ([68.147.0.90]) by shaw.ca with ESMTP id sVdylpPtaycp5sVdzlLIQh; Sun, 13 Jun 2021 13:19:40 -0600 X-Authority-Analysis: v=2.4 cv=H864f8Ui c=1 sm=1 tr=0 ts=60c65a4c a=T+ovY1NZ+FAi/xYICV7Bgg==:117 a=T+ovY1NZ+FAi/xYICV7Bgg==:17 a=r77TgQKjGQsHNAKrUKIA:9 a=CCpqsmhAAAAA:8 a=94nOnFI1EgyDtX4ev68A:9 a=QEXdDO2ut3YA:10 a=zb6ZufOp78YA:10 a=WZ2tzKod9SOGMvyo4TUA:9 a=JMNH9X61SiQA:10 a=ul9cdbp4aOFLsgKbc677:22 From: Brian Inglis Subject: Re: gcc 11.1.0: printf("%.43f\n", 0x1.52f8a8e32e982p-140): printed value is incorrectly rounded Reply-To: cygwin@cygwin.com To: cygwin@cygwin.com References: Organization: Systematic Software Message-ID: <6879a094-2bfd-dc85-352f-6c6305fe4c9a@SystematicSw.ab.ca> Date: Sun, 13 Jun 2021 13:19:38 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------0C5D12B9F77078B2EE28FB72" Content-Language: en-CA X-CMAE-Envelope: MS4xfAi2JlLhFRfs547H0I2AYQE2///hUqEU2fg3hl7FgeIKZe59hJknsIUTMuPRF+u8qX5NKTl52oX/oV6jMk/GMuOgxS0nxFgIEHo7J1MU1gp2tQ8sM6xy eR/8aCyUHoFvQw08EfYrqz1o2SIKgOKUj/VWCnGdZygvjPdDv49R9bq8InwsD4LV/eIb/VHovDs9tTOXn2ZTzxfoxXgD7raCzSM= X-Spam-Status: No, score=-3487.7 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH, NICE_REPLY_A, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Jun 2021 19:19:43 -0000 This is a multi-part message in MIME format. --------------0C5D12B9F77078B2EE28FB72 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 2021-06-12 14:45, Pavel M via Cygwin wrote: > Sample code (t903.c): > #include > int main(void) > { > printf("%.43f\n", 0x1.52f8a8e32e982p-140); > return 0; > } > > Invocations: > # gcc on Windows 10 (Cygwin) > $ gcc t903.c -Wall -Wextra -std=c11 -pedantic -Wfatal-errors && ./a.exe > 0.0000000000000000000000000000000000000000010 > > $ gcc --version > gcc (GCC) 11.1.0 > > # gcc on Linux > $ gcc t903.c -Wall -Wextra -std=c11 -pedantic -Wfatal-errors && ./a.exe > 0.0000000000000000000000000000000000000000009 > > # clang on Windows > $ clang t903.c -Wall -Wextra -std=c11 -ffp-model=strict -pedantic > -Wfatal-errors && ./a.exe > 0.0000000000000000000000000000000000000000009 > > # cl on Windows > $ cl t903.c /std:c11 /Za /fp:strict && ./t903.exe > 0.0000000000000000000000000000000000000000009 See newlib mailing list incorrectly rounded square root thread starting: https://sourceware.org/pipermail/newlib/2021/018369.html As suggested lately, I tried adding -frounding-math $ info gcc frounding-math to see if it makes any difference to your test on gcc 10 and got the same result. It may need to be applied to the library functions to have any useful impact. I also tried Cygwin clang and got the same result. It may be an accuracy issue or a bug in the underlying newlib printf conversion. I tried fcvtbuf in the attached test program and found it does the rounding as expected on Cygwin: $ gcc -o test-printf-round{,.c} && ./test-printf-round sgn 0 decpt -42 +0.0000000000000000000000000000000000000000009 0.0000000000000000000000000000000000000000010 -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in binary units and prefixes, physical quantities in SI.] --------------0C5D12B9F77078B2EE28FB72 Content-Type: text/plain; charset=UTF-8; name="test-printf-round.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-printf-round.c" LyogdGVzdC1wcmludGYtcm91bmQuYyAqLwoKI2RlZmluZSBfUE9TSVhfU09VUkNFCiNkZWZp bmUgX1hPUEVOX1NPVVJDRQk2MDAKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3Rk bGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCgoKI2lmIDAKI2RlZmluZSBWCQkwWDEuNTJm OGE4ZTMyZTk4MlArMTQwCiNkZWZpbmUgVgkJMFgwLjAwMDAwMDAwMDAwMDBQKzAKI2VuZGlm CiNkZWZpbmUgVgkJMFgxLjUyZjhhOGUzMmU5ODJQLTE0MAojZGVmaW5lIERFQ0lNQUxTCTQz CgoKCmludAptYWluKHZvaWQpCnsKICAgIGludAkJZGVjcHQJCT0gMDsKICAgIGludAkJc2du CQk9IC0xOwogICAgY2hhcgkqYjsKICAgIHN0YXRpYyBjaGFyIHplcm9zWzEyOF0JPSAKCSIw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwIjsKICAgIHN0YXRpYyBjaGFyIGJ1ZlsxMjhdCT0geyAwIH07 CgogICAgYiA9IGZjdnRidWYoViwgREVDSU1BTFMsICZkZWNwdCwgJnNnbiwgYnVmKTsKCiAg ICBwcmludGYoInNnbiAlZCBkZWNwdCAlZCAlcyUuKnMlcyVzICUuKmZcbiIsCgkJc2duLCBk ZWNwdCwKCQkgICAgIXNnbiA/ICIrIiA6IDEgPT0gc2duID8gIi0iIDogIiIsCgkJCS8qIDAg PCBkZWNwdCAtPiBkZWNwdCBkaWdpdHMgfCAuIHwgYnVmICsgZGVjcHQgZGlnaXRzICovCgkJ CS8qIGRlY3B0IDwgMCAtPiAwLiB8IGRlY3B0IHplcm9zIHwgYnVmIGRpZ2l0cyAqLwoJCQlk ZWNwdCA8IDAgPyAyIDogZGVjcHQsCgkJCSAgICBkZWNwdCA8IDAgPyAiMC4iIDogYiwKCQkJ CWRlY3B0IDwgMCA/IHplcm9zICsgc3RybGVuKHplcm9zKSArIGRlY3B0IDogIi4iLAoJCQkJ ICAgIGRlY3B0IDwgMCA/IGIgOiBiICsgZGVjcHQsCgkJCQkJREVDSU1BTFMsIFYpOwp9Cgo= --------------0C5D12B9F77078B2EE28FB72--