4 ms·
"The Table-Maker's Dilemma" https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT This is the best sourc
by ReactiveJelly 2mo ago
"The Table-Maker's Dilemma"
https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT https://people.eecs.berkeley.edu/~wkahan/LOG10HAF.TXT
This is the best source I could find, funny enough the author doesn't explain the name "table maker".
I suppose it's from the parable of a table maker who finds that one leg is too long, so they sand down that leg, only to find that another leg is too long, so they sand that down... slowly sanding away all the legs.
As a simple programmer I don't understand the dilemma. I do understand that sin, tan, sqrt, etc., take one argument, so you can guarantee a certain precision for them, at least in 32-bit floats, whereas a log in arbitrary base has two inputs, so its input space is huge and it's hard to guarantee anything, especially for 64-bit doubles.
If someone could write up a good explanation that could be its own HN post
- thirdhaf 2mo agoMy assumption is it's referring to mathematical tables and the historical makers of them. https://en.wikipedia.org/wiki/Mathematical_table https://en.wikipedia.org/wiki/Mathematical_table
- toast0 2mo ago> the author doesn't explain the name "table maker". I suppose that parable fits, but also there is the dilema of someone making a table of (results) of transcendental functions. In the before times, most people got their sines and cosines and logs and what not by looking them up in tables. And someone has to make those tables. The example given where rounding to some specific number of digits depends on how many digits you calculate to is deeply unsatisfying, especially if you wanted to make a table for other people to use to lookup the results of functions.
- lifthrasiir 2mo agoThe dilemma is hypothetical (because we now know the exact precision requirement for those functions over all 64-bit doubles) but let's assume that we don't know that and also we happen to use decimals instead. What if, some f(x) is known to be, say, 123.4999...9997 with 1,000 fractional digits? You have to calculate at least 1,000 decimal digits of f(x) in order to correctly round, before that we only know it's between 123.4999...999 and 123.5000...001. There seems no mathematical theory that specially prevents this annoying possibility, hence the dilemma.
- dataflow 2mo ago> because we now know the exact precision requirement for those functions over all 64-bit doubles Do you have a link or something on this?
- lifthrasiir 2mo agoI'm on a mobile right now so I can't give the exact paper link but you can learn about the CORE-MATH project [1]. [1] https://core-math.gitlabpages.inria.fr/ https://core-math.gitlabpages.inria.fr/
- lioeters 2mo ago> CORE-MATH Mission: provide on-the-shelf high performance open-source mathematical functions with correct rounding that can be integrated into current mathematical libraries (GNU libc, Intel Math Library, AMD Libm, Newlib, OpenLibm, Musl, Apple Libm, llvm-libc, Microsoft libm, CUDA libm, ROCm) That's beautiful. Here's the Git repo with implementation. https://gitlab.inria.fr/core-math/core-math/-/blob/master/README.md https://gitlab.inria.fr/core-math/core-math/-/blob/master/RE...
- jhgb 2mo agoI simply assumed the tables in question were log tables. (No, not that kind of log.)