[Ka-Ping Yee] > I'll argue now -- just as i argued back then, but louder! -- that > this isn't necessary. repr(1.1) can be 1.1 without losing any precision. > > Simply stated, you only need to display as many decimal places as are > necessary to regenerate the number. So if x happens to be the > floating-point number closest to 1.1, then 1.1 is all you have to show. > > By definition, if you type x = 1.1, x will get the floating-point > number closest in value to 1.1. This claim is simply false unless the platform string->float routines do proper rounding, and that's more demanding than even the anal 754 std requires (because in the general case proper rounding requires bigint arithmetic). > So x will print as 1.1. By magic <0.1 wink>? This *can* work, but only if Python does float<->string conversions itself, leaving the platform libc out of it. I gave references to directly relevant papers, and to David Gay's NETLIB implementation code, the last time we went thru this. Note that Gay's code bristles with platform #ifdef's, because there is no portable way in C89 to get the bit-level info this requires. It's some of the most excruciatingly delicate code I've ever plowed thru. If you want to submit it as a patch, I expect Guido will require a promise in blood that he'll never have to maintain it <wink>. BTW, Scheme implementations are required to do proper rounding in both string<->float directions, and minimal-length (wrt idempotence) float->string conversions (provided that a given Scheme supports floats at all). That was in fact the original inspiration for Clinger, Steele and White's work in this area. It's exactly what you want too (because it's exactly what you need to make your earlier claims true). A more recent paper by Dybvig and ??? (can't remember now) builds on the earlier work, using Gay's code by reference as a subroutine, and speeding some of the other cases where Gay's code is slothful by a factor of about 70. scheme-does-a-better-job-on-numerics-in-many-respects-ly y'rs - tim
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4