Remix.run Logo
WalterBright 2 hours ago

There was no test suite for it available that I could use for correctness checks, so I did what I could.

I also implemented IEEE 754 floating point in asm. For that I did have an exhaustive test suite, and passed it 100%.

nrr an hour ago | parent [-]

We didn't have this definition of correctness until 1990 (due to Steele and White), and it wasn't until the past decade or so that we got a published algorithm (most recently, I think, Dragonbox, due to Jeon when he was still working on his PhD at UCSD), with mathematical proof[0], that satisfied all of the requirements of being complete, being unique, and being deterministic.

(Though, Steele-White expresses these slightly differently, as preserving information, having the shortest possible output, and rounding correctly. Completeness, uniqueness, and determinism seem to be equivalent and are easier to prove.)

--

0: Available at <https://fmt.dev/papers/Dragonbox.pdf>. It's pretty easy to understand either with a numerical analysis background or after having worked through volume 2 of Knuth's TAoCP.

WalterBright 12 minutes ago | parent [-]

I didn't know that! Thanks for the link to the paper. I've saved it for later reading!