Log is non-monotonic in PHP and Lua

(purplesyringa.moe)

12 points | by ibobev 5 hours ago ago

3 comments

  • cwt137 10 minutes ago

    I find it interesting the blog author tied PHP and Lua together. PHP uses a JIT from Lua. Is this related to the log issue?

  • lioeters an hour ago

    Recently I was reading an article on the EML operator (exp-min-log) that uses exponentiation and logarithm to build elementary math functions including arithmetic operations. There was a table of results from testing across languages.

      Language         Result of 2 x 3    Error
      ---
      Node.js v25.3.0  6.000000000000000  0
      Python 3.9.6     6.000000000000001  8.88e-16
      PHP 8.5.1        6.000000000000001  8.88e-16
      Go 1.26.2        6.000000000000000  0
      Rust             6.000000000000001  8.88e-16
    
    It was speculated that this miniscule margin of error, 1 ULP (unit in the last place), is likely due to the difference in how log() is implemented by the language. Supposedly Python, PHP, and Rust use LLVM's libm (C math library) but maybe Go and Node.js internally compile to CPU instructions directly? There was no evidence presented, so I was skeptical of this explanation.
  • dmitrygr an hour ago

      > you can compute any logarithm from two base-e ones.
    
    They need not be base e. Any base will do as long as it is the same for both the numerator and the denominator