Average Error: 18.3 → 0.4
Time: 31.5s
Precision: binary64
Cost: 27649
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
↓
\[\begin{array}{l}
\mathbf{if}\;\frac{x - y}{1 - y} \leq 0.025059855742236136:\\
\;\;\;\;1 - \log \left(1 - \frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \log \left(\frac{x + -1}{y}\right)\\
\end{array}\]
1 - \log \left(1 - \frac{x - y}{1 - y}\right)↓
\begin{array}{l}
\mathbf{if}\;\frac{x - y}{1 - y} \leq 0.025059855742236136:\\
\;\;\;\;1 - \log \left(1 - \frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \log \left(\frac{x + -1}{y}\right)\\
\end{array}(FPCore (x y) :precision binary64 (- 1.0 (log (- 1.0 (/ (- x y) (- 1.0 y))))))
↓
(FPCore (x y)
:precision binary64
(if (<= (/ (- x y) (- 1.0 y)) 0.025059855742236136)
(-
1.0
(log
(-
1.0
(*
(/ 1.0 (* (cbrt (- 1.0 y)) (cbrt (- 1.0 y))))
(/ (- x y) (cbrt (- 1.0 y)))))))
(- 1.0 (log (/ (+ x -1.0) y)))))double code(double x, double y) {
return 1.0 - log(1.0 - ((x - y) / (1.0 - y)));
}
↓
double code(double x, double y) {
double tmp;
if (((x - y) / (1.0 - y)) <= 0.025059855742236136) {
tmp = 1.0 - log(1.0 - ((1.0 / (cbrt(1.0 - y) * cbrt(1.0 - y))) * ((x - y) / cbrt(1.0 - y))));
} else {
tmp = 1.0 - log((x + -1.0) / y);
}
return tmp;
}
Try it out
Enter valid numbers for all inputs
Target
| Original | 18.3 |
|---|
| Target | 0.1 |
|---|
| Herbie | 0.4 |
|---|
\[\begin{array}{l}
\mathbf{if}\;y < -81284752.61947241:\\
\;\;\;\;1 - \log \left(\frac{x}{y \cdot y} - \left(\frac{1}{y} - \frac{x}{y}\right)\right)\\
\mathbf{elif}\;y < 3.0094271212461764 \cdot 10^{+25}:\\
\;\;\;\;\log \left(\frac{e^{1}}{1 - \frac{x - y}{1 - y}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \log \left(\frac{x}{y \cdot y} - \left(\frac{1}{y} - \frac{x}{y}\right)\right)\\
\end{array}\]
Alternatives
| Alternative 1 |
|---|
| Error | 53.9 |
|---|
| Cost | 52672 |
|---|
\[1 - \log \left(1 - \frac{\sqrt{y} + \sqrt{x}}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{\sqrt{x} - \sqrt{y}}{\sqrt[3]{1 - y}}\right)\]
| Alternative 2 |
|---|
| Error | 46.3 |
|---|
| Cost | 39872 |
|---|
\[1 - \log \left(1 - \frac{\sqrt{x - y}}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{\sqrt{x - y}}{\sqrt[3]{1 - y}}\right)\]
| Alternative 3 |
|---|
| Error | 41.4 |
|---|
| Cost | 39872 |
|---|
\[1 - \log \left(1 - \frac{\sqrt[3]{x - y}}{1 - \sqrt{y}} \cdot \frac{\sqrt[3]{x - y} \cdot \sqrt[3]{x - y}}{1 + \sqrt{y}}\right)\]
| Alternative 4 |
|---|
| Error | 20.7 |
|---|
| Cost | 39872 |
|---|
\[1 - \log \left(1 - \frac{\sqrt[3]{x - y} \cdot \sqrt[3]{x - y}}{\sqrt{1 - y}} \cdot \frac{\sqrt[3]{x - y}}{\sqrt{1 - y}}\right)\]
| Alternative 5 |
|---|
| Error | 54.0 |
|---|
| Cost | 32960 |
|---|
\[1 - \log \left(1 - \left(\sqrt{y} + \sqrt{x}\right) \cdot \frac{\sqrt{x} - \sqrt{y}}{1 - y}\right)\]
| Alternative 6 |
|---|
| Error | 18.4 |
|---|
| Cost | 27072 |
|---|
\[1 - \left(\log \left(\sqrt[3]{1 - \frac{x - y}{1 - y}}\right) + 2 \cdot \log \left(\sqrt[3]{1 - \frac{x - y}{1 - y}}\right)\right)\]
| Alternative 7 |
|---|
| Error | 16.8 |
|---|
| Cost | 26944 |
|---|
\[1 - \log \left(1 - \frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}\right)\]
| Alternative 8 |
|---|
| Error | 17.3 |
|---|
| Cost | 26816 |
|---|
\[1 - \log \left(1 - \left(\sqrt[3]{x - y} \cdot \sqrt[3]{x - y}\right) \cdot \frac{\sqrt[3]{x - y}}{1 - y}\right)\]
| Alternative 9 |
|---|
| Error | 16.9 |
|---|
| Cost | 26816 |
|---|
\[1 - \log \left(1 - \frac{\frac{x - y}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}}}{\sqrt[3]{1 - y}}\right)\]
| Alternative 10 |
|---|
| Error | 17.4 |
|---|
| Cost | 26816 |
|---|
\[1 - \log \left(1 - \frac{\sqrt[3]{x - y} \cdot \sqrt[3]{x - y}}{\frac{1 - y}{\sqrt[3]{x - y}}}\right)\]
| Alternative 11 |
|---|
| Error | 29.9 |
|---|
| Cost | 21248 |
|---|
\[1 - \left(\log \left(1 - {\left(\frac{x - y}{1 - y}\right)}^{3}\right) - \log \left(1 + \frac{x - y}{1 - y} \cdot \left(1 + \frac{x - y}{1 - y}\right)\right)\right)\]
| Alternative 12 |
|---|
| Error | 36.2 |
|---|
| Cost | 20864 |
|---|
\[1 - \left(\log \left(1 - \frac{x - y}{\frac{{\left(1 - y\right)}^{2}}{x - y}}\right) - \log \left(1 + \frac{x - y}{1 - y}\right)\right)\]
| Alternative 13 |
|---|
| Error | 20.8 |
|---|
| Cost | 20288 |
|---|
\[1 - \log \left(1 - \frac{x - y}{\sqrt{1 - y}} \cdot \frac{1}{\sqrt{1 - y}}\right)\]
| Alternative 14 |
|---|
| Error | 20.9 |
|---|
| Cost | 20160 |
|---|
\[1 - \log \left(1 + \frac{\frac{y - x}{\sqrt{1 - y}}}{\sqrt{1 - y}}\right)\]
| Alternative 15 |
|---|
| Error | 46.8 |
|---|
| Cost | 20160 |
|---|
\[1 - \log \left(1 - \sqrt{x - y} \cdot \frac{\sqrt{x - y}}{1 - y}\right)\]
| Alternative 16 |
|---|
| Error | 41.5 |
|---|
| Cost | 20160 |
|---|
\[1 - \log \left(1 - \frac{\frac{x - y}{1 + \sqrt{y}}}{1 - \sqrt{y}}\right)\]
| Alternative 17 |
|---|
| Error | 46.9 |
|---|
| Cost | 20160 |
|---|
\[1 - \log \left(1 - \frac{\sqrt{x - y}}{\frac{1 - y}{\sqrt{x - y}}}\right)\]
| Alternative 18 |
|---|
| Error | 29.8 |
|---|
| Cost | 19968 |
|---|
\[1 - \log \left(\sqrt[3]{{\left(1 - \frac{x - y}{1 - y}\right)}^{3}}\right)\]
| Alternative 19 |
|---|
| Error | 18.4 |
|---|
| Cost | 19968 |
|---|
\[\sqrt[3]{{\left(1 - \log \left(1 - \frac{x - y}{1 - y}\right)\right)}^{3}}\]
| Alternative 20 |
|---|
| Error | 37.4 |
|---|
| Cost | 19904 |
|---|
\[1 - \log \log \left(e^{1 - \frac{x - y}{1 - y}}\right)\]
| Alternative 21 |
|---|
| Error | 37.4 |
|---|
| Cost | 19904 |
|---|
\[1 - \log \left(1 - \log \left(e^{\frac{x - y}{1 - y}}\right)\right)\]
| Alternative 22 |
|---|
| Error | 26.5 |
|---|
| Cost | 14464 |
|---|
\[1 - \log \left(\frac{1 - \frac{x - y}{\frac{{\left(1 - y\right)}^{2}}{x - y}}}{1 + \frac{x - y}{1 - y}}\right)\]
| Alternative 23 |
|---|
| Error | 20.8 |
|---|
| Cost | 14080 |
|---|
\[1 - \log \left(1 + \frac{y - x}{1 - {y}^{3}} \cdot \left(1 + \left(y + y \cdot y\right)\right)\right)\]
| Alternative 24 |
|---|
| Error | 43.6 |
|---|
| Cost | 13376 |
|---|
\[1 - \left(\log \left(1 - x\right) + \log \left(\frac{-1}{y}\right)\right)\]
| Alternative 25 |
|---|
| Error | 41.8 |
|---|
| Cost | 13376 |
|---|
\[1 + \left(\log \left(1 - y\right) + \log \left(\frac{-1}{x}\right)\right)\]
| Alternative 26 |
|---|
| Error | 57.9 |
|---|
| Cost | 13376 |
|---|
\[1 - \left(\log \left(\frac{-1}{1 - y}\right) + \log x\right)\]
| Alternative 27 |
|---|
| Error | 57.9 |
|---|
| Cost | 13248 |
|---|
\[1 - \left(\log \left(x + -1\right) - \log y\right)\]
| Alternative 28 |
|---|
| Error | 37.6 |
|---|
| Cost | 7872 |
|---|
\[1 - \left(\log \left(1 + \frac{y}{1 - y}\right) - \frac{x}{\left(1 - y\right) \cdot \left(1 + \frac{y}{1 - y}\right)}\right)\]
| Alternative 29 |
|---|
| Error | 18.1 |
|---|
| Cost | 7488 |
|---|
\[1 - \log \left(1 - \frac{x - y}{1 - y \cdot y} \cdot \left(1 + y\right)\right)\]
| Alternative 30 |
|---|
| Error | 18.3 |
|---|
| Cost | 7360 |
|---|
\[1 - \log \left(\frac{y}{1 - y} + \left(1 - \frac{x}{1 - y}\right)\right)\]
| Alternative 31 |
|---|
| Error | 17.9 |
|---|
| Cost | 7232 |
|---|
\[1 - \log \left(1 - \left(x - y\right) \cdot \frac{1}{1 - y}\right)\]
| Alternative 32 |
|---|
| Error | 18.3 |
|---|
| Cost | 7104 |
|---|
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
| Alternative 33 |
|---|
| Error | 18.3 |
|---|
| Cost | 7104 |
|---|
\[\log \left(\frac{e}{1 - \frac{x - y}{1 - y}}\right)\]
| Alternative 34 |
|---|
| Error | 38.4 |
|---|
| Cost | 6976 |
|---|
\[1 - \log \left(1 + \frac{y}{1 - y}\right)\]
| Alternative 35 |
|---|
| Error | 36.1 |
|---|
| Cost | 6912 |
|---|
\[1 - \log \left(-\frac{x}{1 - y}\right)\]
| Alternative 36 |
|---|
| Error | 36.1 |
|---|
| Cost | 6912 |
|---|
\[\log \left(\frac{e}{-\frac{x}{1 - y}}\right)\]
| Alternative 37 |
|---|
| Error | 37.9 |
|---|
| Cost | 6848 |
|---|
\[1 - \log \left(\frac{x + -1}{y}\right)\]
| Alternative 38 |
|---|
| Error | 25.2 |
|---|
| Cost | 6848 |
|---|
\[1 - \left(y + \log \left(1 - x\right)\right)\]
| Alternative 39 |
|---|
| Error | 24.0 |
|---|
| Cost | 6720 |
|---|
\[\log \left(\frac{e}{1 - x}\right)\]
| Alternative 40 |
|---|
| Error | 24.0 |
|---|
| Cost | 6720 |
|---|
\[1 - \log \left(1 - x\right)\]
| Alternative 41 |
|---|
| Error | 36.6 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 42 |
|---|
| Error | 62.0 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 43 |
|---|
| Error | 60.6 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
- Split input into 2 regimes
if (/.f64 (-.f64 x y) (-.f64 1 y)) < 0.0250598557422361361
Initial program 0.0
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
- Using strategy
rm Applied add-cube-cbrt_binary64_80980.0
\[\leadsto 1 - \log \left(1 - \frac{x - y}{\color{blue}{\left(\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}\right) \cdot \sqrt[3]{1 - y}}}\right)\]
Applied *-un-lft-identity_binary64_80630.0
\[\leadsto 1 - \log \left(1 - \frac{\color{blue}{1 \cdot \left(x - y\right)}}{\left(\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}\right) \cdot \sqrt[3]{1 - y}}\right)\]
Applied times-frac_binary64_80690.0
\[\leadsto 1 - \log \left(1 - \color{blue}{\frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}}\right)\]
Simplified0.0
\[\leadsto \color{blue}{1 - \log \left(1 - \frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}\right)}\]
if 0.0250598557422361361 < (/.f64 (-.f64 x y) (-.f64 1 y))
Initial program 60.4
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
Taylor expanded around inf 1.3
\[\leadsto 1 - \log \color{blue}{\left(\frac{x - 1}{y}\right)}\]
Simplified1.3
\[\leadsto 1 - \log \color{blue}{\left(\frac{x + -1}{y}\right)}\]
Simplified1.3
\[\leadsto \color{blue}{1 - \log \left(\frac{x + -1}{y}\right)}\]
- Recombined 2 regimes into one program.
Final simplification0.4
\[\leadsto \begin{array}{l}
\mathbf{if}\;\frac{x - y}{1 - y} \leq 0.025059855742236136:\\
\;\;\;\;1 - \log \left(1 - \frac{1}{\sqrt[3]{1 - y} \cdot \sqrt[3]{1 - y}} \cdot \frac{x - y}{\sqrt[3]{1 - y}}\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \log \left(\frac{x + -1}{y}\right)\\
\end{array}\]
Reproduce
herbie shell --seed 2021042
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(if (< y -81284752.61947241) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y))))) (if (< y 3.0094271212461764e+25) (log (/ (exp 1.0) (- 1.0 (/ (- x y) (- 1.0 y))))) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y)))))))
(- 1.0 (log (- 1.0 (/ (- x y) (- 1.0 y))))))