Comment

Comment by lioeters

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.
parent lioeters 3 months ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton