Project

General

Profile

Actions

Feature #21527

open

Proposal: Math.log1p and Math.expm1

Added by mame (Yusuke Endoh) about 17 hours ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:122898]

Description

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

No data to display

Actions

Also available in: Atom PDF

Like0