Average Error: 41.6 → 0.0
Time: 6.4s
Precision: 64
Internal precision: 1408
\[\log \left(1 + x\right)\]
⬇
\[\begin{array}{l}
\mathbf{if}\;x \le 7.988163388129748:\\
\;\;\;\;{x}^2 \cdot \left(x \cdot \frac{1}{3} - \frac{1}{2}\right) + x\\
\mathbf{else}:\\
\;\;\;\;\log \left(1 + x\right)\\
\end{array}\]
Target
| Original | 41.6 |
| Comparison | 6.8 |
| Herbie | 0.0 |
\[ \begin{array}{l}
\mathbf{if}\;1 + x = 1:\\
\;\;\;\;x\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot \log \left(1 + x\right)}{\left(1 + x\right) - 1}\\
\end{array} \]
Derivation
- Split input into 2 regimes.
-
if x < 7.988163388129748
Initial program 59.5
\[\log \left(1 + x\right)\]
Applied taylor 0.1
\[\leadsto \left(\frac{1}{3} \cdot {x}^{3} + x\right) - \frac{1}{2} \cdot {x}^2\]
Taylor expanded around 0 0.1
\[\leadsto \color{blue}{\left(\frac{1}{3} \cdot {x}^{3} + x\right) - \frac{1}{2} \cdot {x}^2}\]
Applied simplify 0.1
\[\leadsto \color{blue}{{x}^2 \cdot \left(x \cdot \frac{1}{3} - \frac{1}{2}\right) + x}\]
if 7.988163388129748 < x
Initial program 0
\[\log \left(1 + x\right)\]
- Recombined 2 regimes into one program.
- Removed slow pow expressions
Runtime
Please include this information when filing a bug report:
herbie shell --seed '#(1064524629 4159152179 2999149171 575749698 4006532819 692958815)'
(FPCore (x)
:name "ln(1 + x)"
:target
(if (== (+ 1 x) 1) x (/ (* x (log (+ 1 x))) (- (+ 1 x) 1)))
(log (+ 1 x)))