From: "Eregon (Benoit Daloze) via ruby-core" Date: 2025-08-05T21:23:08+00:00 Subject: [ruby-core:122918] [Ruby Feature#21527] Proposal: Math.log1p and Math.expm1 Issue #21527 has been updated by Eregon (Benoit Daloze). I find these method names pretty cryptic, typical of the libc I guess. How about: * `Math.log_of_one_plus(x)` / `Math.log_one_plus(x)` * `Math.exp_of_minus_one(x)` / `Math.exp_minus_one(x)` A bit verbose, but I think these methods are (I think) very rarely needed, so that seems acceptable. Actually, given they are probably so rarely needed, why not just using FFI or Fiddle to call them for the few cases that need them? ---------------------------------------- Feature #21527: Proposal: Math.log1p and Math.expm1 https://bugs.ruby-lang.org/issues/21527#change-114225 * Author: mame (Yusuke Endoh) * Status: Open ---------------------------------------- Let's add `Math.log1p` and `Math.expm1`. * `Math.log1p(x)`: Computes `Math.log(x + 1)` * `Math.expm1(x)`: Computes `Math.exp(x) - 1` These methods are often more accurate than the straightforward computation, especially when `x` is close to zero. ``` # The current approach loses precision p Math.log(1 + 1.0e-16) #=> 0.0 p Math.exp(1.0e-16) - 1 #=> 0.0 # The proposed methods return the accurate result p Math.log1p(1.0e-16) #=> 1.0e-16 p Math.expm1(1.0e-16) #=> 1.0e-16 ``` Note that they are very standard; the C99 even defines `log1p()` and `expm1()`. Other major programming languages (Python, JavaScript, Java, Go, Rust, etc.) also provide them. PR: https://github.com/ruby/ruby/pull/14087 -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/