From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic301-35.consmr.mail.ne1.yahoo.com (sonic301-35.consmr.mail.ne1.yahoo.com [66.163.184.204]) by sourceware.org (Postfix) with ESMTPS id B55CF3858428 for ; Fri, 5 Nov 2021 16:00:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B55CF3858428 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=att.net Authentication-Results: sourceware.org; spf=none smtp.mailfrom=att.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=att.net; s=s1024; t=1636128056; bh=bhfPPPnS2wGHRAtFokUROmr8gMMhCF6rPPhhgzIf3zs=; h=Date:From:Subject:To:In-Reply-To:References:From:Subject:Reply-To; b=BUkxzBk2DFS/CnTNrNzvNkTXjT72OD87GP4EWwYGRP0d5DgYhHsbGLyQdm8efMnBNjaxU9zz1LCFyMj6jkiw/lXd2m3ep9nTYVs/enLCLdQ4iRxPzu3LZgdCRMR+FdjQsLqJ2FHYvbnfD1CoeRgso5OaP5MtusM2hleZIv8arjA= X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1636128056; bh=vrGAW9irfn6F00JdJ2M4w+vrWwQhzmZaNyIDBcqW6Yy=; h=X-Sonic-MF:Date:From:Subject:To:From:Subject; b=Q1e2o+gr52c66eFzpLynMb/b7tcAo+i7DMK2WyxZPyg59LV3XSHWq4Ru+aYtbsDsN2UaysenieiVFm7Znvylr1HBmWrh0cgx0WENgMf5eAwEGmNPPY/Kq39XibrtdPv1gAdZa14UEDnvmJQwyYnwWDiEXIXwoIpdoHkmyCGryWdkgDMEsdA2DeGR11WAwlxBGZGoszvdPG9yc1rXWkCyc0rayC4esYPkUpZqFbyhpD9dQ2l+WfYHckdHGOfa6lEqCFkhXbduaq+5IF/HTMH6yVxiHxZbvic2s8vun0YhX74CkOzGItoPjGyo6V4m04FoYJ5ogPXfOAl8rdnc/QweWA== X-YMail-OSG: Gmu2qnIVM1nV6HwB.iJePJDbMGJG09mTgXUkuKAS7jKaM07gopPqoF7wGr5vqeu e8zCSVkynS_qvksBdy5RfRSTooZVEiDrYQ534wzKkAeEMjZYaTWLOShg8wg6HtJSVGhZj82CAbrT iyHv72ZYP0fDvA.RXLbZtlrqPvL4lCkcVtUXapbQVRfxFB_i_OzPvOgWxnBUH0kOCsH3zsYtIeAR ENLcgw3qfJEmYX7E3Rn9gbvxroZ6.51nMhgdxw5RReMCZGvary21yy0F5YNeGigiy_g3H6S45pbV J4.kZbjjSfsnYH8tBEIRk74bP_v.ApN7eFl9FSL1qAS6.CO6evHXvDjkA3yQJqomAaPrb75LdlK_ B1c81AzjEAo1sMA.XG98rq_N3uwEfsaRmkQH7tkuL4SDx9wVNynsxYldpGdeSf8OliXxjIon04_A bmb7IIlyp5wcfld1GiZxtqFA3xsjyFniTWmCZ1U1.Bhy005aXyO64gZO0PSYzk21eAY0_Z04Jz2C 17TZ9hZIkWIta7sfzHOelU24tQX5swF83i9sRCLLupl6LitPqZh4S2Po.WVoian6qjSYZFcorr3l K51GJClA.eWJjamskL4ooI1jB7Uelq7oyC7hLJFPQBHu_Ylpz7ViKeJLzw0HVJb2mje3iiFL14jk sPNKCA609svMW7rjKNCpa4S6iQ6QGtrE5KznpYXjpRoHKCzk4vR6iYfreYdVnrSOQafJmNs_Ar7h 6Qlq0PpPM9Fd5IHEXXI.SaJefR7F.Pp.WMRiw0M6PWJDChkCQgTwMnyXQj7fSASTkZ0gQVa9mEE1 EewXnYA0HbgEIiU0d.4EWHSARQ6VqidmZ7BbKpkgaCnWwbmroeSk6y1O9TgkKuHvukcsbE_sZw5C 6.azucyh..zCRDlf2_QsS.Fmkj1eOmd5BjbKRIO3aCYlQ8FpEs0klKBrCA2COZ1EI97v28KKrZx9 AxHNzTgGn38yQp1R6QKSEVggI5n4KZa5SoQlsXN_Qe6n9BlTVrunjZsBnpkS83b2ervbA7D3_Hm. CpC2p3oKMcyXSGWVJ0r6DO3IYRH0rEOm_GGMnVU6TTQfVQR_7svM5HG7CXrDRDscAlf2waRKVob5 L86yZPxopmKpnLGHmAhb_ZCumwZvLfE81bjI8pNreBLTWU_j80YZc5Ztc3Sha2CsxoA.qYiVYcY2 h_uc7EFAUzvxCm8jjW9mXBFfozVRPaKjdSnlOPtRAfJKLsiRRo64LWCvPE5Vn.xx1aihYAvJPbl7 NmX6Wc2Xp0_h3tw09wnPwmr3aumznS486DxHaVSuFe12T8ZS3yLcAzE01OsXspTL5Unbli4YdMDw Ro_fVpD5YhAYADibu0aBJPRETAS5HYJhDkWVtLEnxyTwitQZ_xfhzYbbPtP_.0KcRYvKzeT0ZP2D viNRiDbgW5OKNtiVhLomLOZYDzyGEF.JIYmoKmO86YknfMXhDIvUQ8WxzjCGKagd6sAr5GvKFKWQ DXYir2k6j5C7mzXviE7Mb4fPmTCg199etaXxwYGaO_tdB5MppGocWMmWMxyHEGxnMWYcGWyhdPgq ovEpKBZj9PIU7QcPB7YihQSByHevPjDgu.ab8qcQK3CBYsnrtRqsinv8Oi8vIcZhP.Z9XafMlFek DUqM1Gwx5WyzKdX4AlwOwxnTmkNnKQR1zsiaMtQ6_dBHpqUQ3meT84nDIoxQI4trN4uaHaMf3PZV PTldQXYfJtnjnvJ3lfo3.z23LuNAJvAq9mNRYdCXVJCJpseZKHkHVUnV6o1mJkkyZ1ckDiwU6ji0 bgMSWA9LSDW2Mn_PjMBmVEaaGEP5hAKgO1AkSDGFyYp.ev4tD2KcDdOaNjS2cNsAlHPB8ZeA56EQ 3uO6if0QNaujF4My.XtCmL1LW_H_oINmrW6LChOMbAZxQAf8EhIEm721lI04MR8mPGwTzw2wR5Ez momAgBgUvZbhxp2gYv0nVMAWoCka9UQXDISsvExzL9jQwDKkPkN627V9B8nKAqhzPvCkDu.OifJS j4i1ZjMBaRpMY21dfZx9VPDoS5GupSvsPgzo1FQL_FiWOCWg746DQ2.weC2hy8.7CUHvBJJFIRtG xcL4y4Dn5YuuCJ52kwbC7pxUTQMpOkDKkPriQQ7U5AJelVwE092m4gcjHqlxo5x.zWT8Prrar_o9 8kchhb.3t1lmGECTYmv5rKSWXI4rNblyOhGKAkQT8zxmnx5LgceC4UN_o1ukR0aEXfRhDUmoQ4Q1 h8gVxau8WXow- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ne1.yahoo.com with HTTP; Fri, 5 Nov 2021 16:00:56 +0000 Received: by kubenode531.mail-prod1.omega.ne1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID b702b6c2c8f00ea516ae7ca33b4a921d; Fri, 05 Nov 2021 16:00:51 +0000 (UTC) Date: Fri, 05 Nov 2021 12:00:49 -0400 From: Steven Abner Subject: Re: gcc 11.1.0: printf("%.43f\n", 0x1.52f8a8e32e982p-140): printed value is incorrectly rounded To: Newlib Message-Id: <1636128049.25340.0@smtp.mail.att.net> In-Reply-To: <87r1bvtipt.fsf@keithp.com> References: <87ilx7vpco.fsf@keithp.com> <90598863-5b2c-30a1-ddb4-0d6d7421a835@nadler.com> <874k8rvm49.fsf@keithp.com> <6b742e91-5a56-8a4d-c9a5-b33d2b33bb66@SystematicSw.ab.ca> <87r1bvtipt.fsf@keithp.com> X-Mailer: pantheon-mail/1.0.8 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-Sl8SIwwnvVH4rMPQNB4o" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Nov 2021 16:00:58 -0000 --=-Sl8SIwwnvVH4rMPQNB4o Content-Type: text/plain; charset=us-ascii; format=flowed If you are bold enough to try something different here is some code to examine. I could butcher up something to create full implementation outside my code. Testing showed faster than gdtoa. Low precision routines around 0 exponent show near tie. Added code to show how I have connected to my printf: case 'a': case 'e': case 'f': case 'g': case 'A': case 'E': case 'F': case 'G': /* gcc doesn't permit floats, it converts to doubles */ { unsigned char *(*toStr)(uint32_t [5], unsigned char **, int, int, int, unsigned); uint32_t w160[5]; uint32_t dp; /* 4 byte decimal point param */ int32_t sch; __decimalLoad((unsigned char*)&dp, params); if ((ch | 0x20) == 'a') ch -= 'A', toStr = realtohex; else ch -= 'E', toStr = realtostr; sch = format[-1]; /* force 128bit long double into quad parsing */ if (sch == 'q') { #if (__LDBL_MANT_DIG__ != 64) quad_parse: #endif sch = (('q' << 8) | ch); qtow(((vPtr == NULL) ? va_arg(arg, octle) : *(octle *)vPtr), w160); } else if (sch == 'L') { #if (__LDBL_MANT_DIG__ != 64) goto quad_parse; #endif sch = (('L' << 8) | ch); ldtow(((vPtr == NULL) ? va_arg(arg, long double) : *(long double *)vPtr), w160); } else { sch = (('l' << 8) | ch); dtow(((vPtr == NULL) ? va_arg(arg, double) : *(double *)vPtr), w160); } arg_flags |= (strBuf != buffer) << 7; strPtr = toStr(w160, &strBuf, sch, arg_prec, (int)arg_flags, dp); } if (strPtr == NULL) goto error; val_ul = (n = (int)(strPtr - strBuf)); strPtr = strBuf; arg_prec = 0; arg_flags &= ~ALT_PREFIX; if ((arg_flags & GRP_PREFIX) != 0) strPtr = __localizeReal(strPtr, &n), val_ul = n; goto L300; This is part of my sys/types so above 'octle' doesn't look so strange: typedef union { #if __SIZEOF_INT128__ == 16 uint128_t uo; #endif #ifdef __BIG_ENDIAN__ struct { uint64_t ull1, ull0; } ulls; struct { uint32_t ul3, ul2, ul1, ul0; } uls; struct { uint16_t us7, us6, us5, us4, us3, us2, us1, us0; } uss; #else /* __LITTLE_ENDIAN__ */ struct { uint64_t ull0, ull1; } ulls; struct { uint32_t ul0, ul1, ul2, ul3; } uls; struct { uint16_t us0, us1, us2, us3, us4, us5, us6, us7; } uss; #endif } octle; And from sysdep.h for attached ldtostr: /* endian break down of uint64_t */ #ifdef __BIG_ENDIAN__ typedef struct { uint16_t w3; uint16_t w2; uint16_t w1; uint16_t w0; } _ull_ws; typedef struct { uint32_t hi; uint32_t lo; } _ull_ls; #elif defined (__LITTLE_ENDIAN__) typedef struct { uint16_t w0; uint16_t w1; uint16_t w2; uint16_t w3; } _ull_ws; typedef struct { uint32_t lo; uint32_t hi; } _ull_ls; #else #error: undefined endianness #endif typedef union { uint64_t ull; _ull_ls uls; _ull_ws uss; } _ull_t; Steve --=-Sl8SIwwnvVH4rMPQNB4o Content-Type: application/zip Content-Disposition: attachment; filename=ldtostr.c.zip Content-Transfer-Encoding: base64 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 u0sAAAAA --=-Sl8SIwwnvVH4rMPQNB4o--