Nice - you are my new best PRNG friend - I've never met someone in real life that has done the work to make correct floats, although I've read work from a few. That code looks really solid.
>I'm still not 100% sure that my implementation is correct
It's super hard to do so. I've often thought of using Z3 to try to formally prove that my algorithms are correct, but have not yet done so. I had a version for about a decade then found a tiny bug and that type of stuff keeps me always thinking of how to formally derive things, but the formal proofs get hard. Z3 has a really nice proper IEEE floating point object that lets you do such things slightly less painfully.
>I'm still not 100% sure that my implementation is correct
It's super hard to do so. I've often thought of using Z3 to try to formally prove that my algorithms are correct, but have not yet done so. I had a version for about a decade then found a tiny bug and that type of stuff keeps me always thinking of how to formally derive things, but the formal proofs get hard. Z3 has a really nice proper IEEE floating point object that lets you do such things slightly less painfully.