On 2/7/2018 6:08 PM, Neil Girdhar wrote:
On Wed, Feb 7, 2018 at 5:52 PM Steven D'Aprano
mailto:steve@pearwood.info> wrote: On Wed, Feb 07, 2018 at 10:08:50PM +0000, Neil Girdhar wrote:
> Oh, and to answer your specific question, I want to change the way > arithmetic is done. I want it to be done in a different radix.
Why?
There are clear advantages to floating point arithmetic done in base 2 (speed, minimum possible rounding error, least amount of wobble), and a different advantage to floating point done in base 10 (matches exactly the standard decimal notation used by humans with no conversion error),
This is the specialness of base 10
Outside of those two bases, arithmetic done in any other base is going to combine the worst of both:
- slower; - larger errors when converting from decimal numbers (in general); - larger rounding errors; - larger wobble;
I don't see why it would have any of those problems.
Any base other than 2 has decreased speed (on a binary computer) and increased computational rounding errors and wobble.
Base 10 isn't special in any way.
Except as noted above and the fact that computation with binary coded decimal goes back to the early days of electronic computation.
with no corresponding advantages unless your data is coming to you in arbitrary bases.
Right, I was playing with this problem (https://brilliant.org/weekly-problems/2017-10-02/advanced/?problem=no-comput...) and wanted to work in base 2. I realize it's niche, but it's not exactly a significant change to the interface even if it's a big change to the implementation.
In cpython, decimal uses _cdecimal for speed. I suspect that 10 is not only explicitly hard-coded as the base but implicitly hard-coded by using algorithm tricks that depend on and only work when the base is 10. -- Terry Jan Reedy