Hacker News new | ask | show | jobs
by madflame991 484 days ago
Here are some values that are (understandably) not listed on the blog. They happen only due to the limited precision of floating point formats.

  128              = √(2 / √√(√2 - (2 / √2)))
  8192             = √√(2 / ((√2 * √2) - 2))
  16384            = (2 / √√(√2 - (2 / √2)))
  67108864         = √(2 / ((√2 * √2) - 2))
  134217728        = (2 / √(√2 - (2 / √2)))
  4503599627370496 = (2 / ((√2 * √2) - 2))
  9007199254740992 = (2 / (√2 - (2 / √2)))
  6369051672525773 = (√2 / (√2 - (2 / √2)))
I found these by accident a long time ago but kept them because they do "work". Try to input one expression in the lil box in https://www.wolframalpha.com/?source=nav and they will quickly evaluate to these values; the charade goes away after you press Enter and get the (mathematically) correct answer.

My old solvers from what feels like a previous life: https://madflame991.blogspot.com/2013/02/four-fours.html https://madflame991.blogspot.com/2013/02/return-of-four-four...

That was fun

2 comments

When everything is an IEEE 754 floating point number, a mathematically "linear" function can indeed be coerced into anything: http://tom7.org/grad/
Nice! Looking into them a bit deeper, they all rely on two facts involving quantities that are off by 1 ulp:

    √2 - 2/√2 as a float64 is exactly equal to 2^{-52}

    √2 * √2   as a float64 is exactly equal to 2 + 2^{-51}
and all other calculations after that are mathematically exact. For example:

    √(2 / √√(√2 - (2 / √2))) := √(2 / √√(2^{-52})) = √(2 / 2^{-13}) = 2^7 = 128
and

    √√(2 / ((√2 * √2) - 2)) := √√(2 / 2^{-51}) = √√(2^{52}) = 2^{13} = 8192
In your last one,

    6369051672525773 = 2^{52} * 1.4142135623730951454746218587388284504413604736328125
(https://float.exposed/0x4336a09e667f3bcd) where the second value is the exact value of the floating-point representation of √2 (i.e. the closest representable-in-float64 value to √2).