Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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



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).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: