4 ms·
The GNU libc atanh is correctly rounded
- deleted 6mo ago[deleted]
- jonathrg 6mo agoGood to know!
- kergonath 6mo agoI don’t think I ever used atanh, but I always love some floating-point nerdery. These other documents by the same team are fantastic resources: https://inria.hal.science/hal-04714173v2/document https://inria.hal.science/hal-04714173v2/document for complex values and https://members.loria.fr/PZimmermann/papers/accuracy.pdf https://members.loria.fr/PZimmermann/papers/accuracy.pdf for real values. Lots of good stuff here: https://members.loria.fr/PZimmermann/papers/ https://members.loria.fr/PZimmermann/papers/ .
- nmbrskeptix 6mo agoTanh, and therefore atanh, are wonderful. It's linear for small x, and exponential for large. Lots of applications of this: Compressing data Mapping (zoomed in near by, zoned out from afar) There's a whole class of electronics amps for this.
- cyco130 6mo agotanh is a very pleasant sounding overdrive function for audio, for example.
- jcranmer 6mo agoOne of the major projects that's ongoing in the current decade is moving the standard math library functions to fully correctly-rounded, as opposed to the traditional accuracy target of ~1 ULP (the last bit is off). For single-precision unary functions, it's easy enough to just exhaustively test every single input (there's only 4 billion of them). But double precision has prohibitively many inputs to test, so you have to resort to actual proof techniques to prove correct rounding for double-precision functions.
- WalterGR 6mo ago> traditional accuracy target of ~1 ULP I had to google this one… ULP: “Unit in the Last Place” or “Unit of Least Precision: https://en.wikipedia.org/wiki/Unit_in_the_last_place https://en.wikipedia.org/wiki/Unit_in_the_last_place
- mananaysiempre 6mo agoFor what it’s worth, this is basically the first word you learn when discussing numerical precision; and I mean word—nobody thinks of it as an abbreviation, to the point that it’s very often written in lower case. So welcome to the club.
- adgjlsfhk1 6mo agoto me this feels like wasted effort due to solving the wrong problem. The extra half ulp error makes no difference to the accuracy of calculations. the problem is that languages traditionally rely on an OS provided libm leading to cross architecture differences. If instead, languages use a specific libm, all of these problems vanish.
- lifthrasiir 6mo agoStandardizing a particular libm essentially locks any further optimizations because that libm's implementation quirks have to be exactly followed. In comparison the "most correct" (0.5 ulp) answer is easy to standardize and agree upon.
- fweimer 6mo agoMany of the conversions so far have been clearly faster. I don't think anything has been merged which shows a clear performance regression, at least not on CPUs with FMA support.
- gajjanag 6mo agoThe bigger challenge is GPU/NPU. Branches for fast vs accurate path get costlier, among other things. On CPU this is less of a cost. Most published libm on GPU/NPU side have a few ULP of error for the perf vs accuracy tradeoff. Eg, documented explicitly in the CUDA programming guide: https://docs.nvidia.com/cuda/cuda-programming-guide/05-appendices/mathematical-functions.html https://docs.nvidia.com/cuda/cuda-programming-guide/05-appen... . Prof. Zimmermann and collaborators have a great table at https://members.loria.fr/PZimmermann/papers/accuracy.pdf https://members.loria.fr/PZimmermann/papers/accuracy.pdf (Feb 2026) comparing various libm wrt accuracy.
- brcmthrowaway 6mo agoWho wrote it? Someone at Red Hat likely.
- DiabloD3 6mo agohttps://en.wikipedia.org/wiki/Paul_Zimmermann_(mathematician) https://en.wikipedia.org/wiki/Paul_Zimmermann_(mathematician... He doesn't work for Red Hat.
- ameliaquining 6mo agoAs the paper mentions, this particular routine was the work of Alexei Sibidanov, though Zimmermann seems to have been maintaining it since it was contributed. (Sibidanov doesn't work for Red Hat either, though.)
- stephencanon 6mo agoThe CORE-MATH project authors, most of whom are French academics (including the author of the linked paper). I don’t know of any interesting work in this space that came out of Red Hat, why do you suggest them?
- brcmthrowaway 6mo agoGNU libc
- RyJones 6mo agoInteresting: https://youtu.be/cb5r3r38O9c https://youtu.be/cb5r3r38O9c Guy's world records get deleted due to changes in atanh over time
- im3w1l 6mo agoAs that's a pretty long video would you mind giving a short summary of what happened? Was it a world record in a game?
- dgaudet 6mo agoyeah one of the trackmania games -- which feature a nominally deterministic physics engine, allowing for replays from a recorded sequence of inputs... except the physics engine relies on libc transcendental functions. players are generally on windows, but backend servers doing anti-cheat validations via replays are running linux. this resulted in false cheat positives when the linux server was running glibc prior to the glibc rounding fixes... and as a result the guy's world record kept being flagged as a cheat. it's a pretty good video with a lot of detail on how they narrowed it down to specific glibc versions/etc.
- ncruces 6mo agoPretty sure that's atan.
- RandomTeaParty 6mo agoWhy not arxiv?
- TimorousBestie 6mo agoThe author works at a French university. Some French researchers do choose to cross-post to arXiv (and Zimmermann may have too, I haven’t checked), but HAL is the default.
- mananaysiempre 6mo ago> HAL is the default. HAL is an institutional requirement, I believe.
- tempaccountabcd 6mo ago[dead]
- stefantalpalaru 6mo ago[dead]