Actions
Feature #21527
closedProposal: Math.log1p and Math.expm1
Feature #21527:
Proposal: Math.log1p and Math.expm1
Status:
Closed
Assignee:
-
Target version:
-
Description
Let's add Math.log1p and Math.expm1.
-
Math.log1p(x): ComputesMath.log(x + 1) -
Math.expm1(x): ComputesMath.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.
Actions