Average Error: 18.5 → 0.1
Time: 15.1s
Precision: 64
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
\[\begin{array}{l} \mathbf{if}\;y \le -34474611802046.8828125:\\ \;\;\;\;1 - \log \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\right)\\ \mathbf{elif}\;y \le 43744445.7007110416889190673828125:\\ \;\;\;\;1 - \left(\log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right) + \log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 - \log \left(\sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\\ \end{array}\]
1 - \log \left(1 - \frac{x - y}{1 - y}\right)
\begin{array}{l}
\mathbf{if}\;y \le -34474611802046.8828125:\\
\;\;\;\;1 - \log \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\right)\\

\mathbf{elif}\;y \le 43744445.7007110416889190673828125:\\
\;\;\;\;1 - \left(\log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right) + \log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;1 - \log \left(\sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\\

\end{array}
double f(double x, double y) {
        double r373355 = 1.0;
        double r373356 = x;
        double r373357 = y;
        double r373358 = r373356 - r373357;
        double r373359 = r373355 - r373357;
        double r373360 = r373358 / r373359;
        double r373361 = r373355 - r373360;
        double r373362 = log(r373361);
        double r373363 = r373355 - r373362;
        return r373363;
}

double f(double x, double y) {
        double r373364 = y;
        double r373365 = -34474611802046.883;
        bool r373366 = r373364 <= r373365;
        double r373367 = 1.0;
        double r373368 = x;
        double r373369 = r373368 / r373364;
        double r373370 = r373367 / r373364;
        double r373371 = r373369 * r373370;
        double r373372 = r373371 - r373370;
        double r373373 = r373369 + r373372;
        double r373374 = cbrt(r373373);
        double r373375 = r373374 * r373374;
        double r373376 = r373374 * r373375;
        double r373377 = log(r373376);
        double r373378 = r373367 - r373377;
        double r373379 = 43744445.70071104;
        bool r373380 = r373364 <= r373379;
        double r373381 = r373368 - r373364;
        double r373382 = r373367 - r373364;
        double r373383 = r373381 / r373382;
        double r373384 = r373367 - r373383;
        double r373385 = sqrt(r373384);
        double r373386 = log(r373385);
        double r373387 = r373386 + r373386;
        double r373388 = r373367 - r373387;
        double r373389 = sqrt(r373373);
        double r373390 = r373389 * r373389;
        double r373391 = log(r373390);
        double r373392 = r373367 - r373391;
        double r373393 = r373380 ? r373388 : r373392;
        double r373394 = r373366 ? r373378 : r373393;
        return r373394;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original18.5
Target0.1
Herbie0.1
\[\begin{array}{l} \mathbf{if}\;y \lt -81284752.6194724142551422119140625:\\ \;\;\;\;1 - \log \left(\frac{x}{y \cdot y} - \left(\frac{1}{y} - \frac{x}{y}\right)\right)\\ \mathbf{elif}\;y \lt 30094271212461763678175232:\\ \;\;\;\;\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}\]

Derivation

  1. Split input into 3 regimes
  2. if y < -34474611802046.883

    1. Initial program 53.9

      \[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
    2. Taylor expanded around inf 0.0

      \[\leadsto 1 - \log \color{blue}{\left(\left(\frac{x}{y} + 1 \cdot \frac{x}{{y}^{2}}\right) - 1 \cdot \frac{1}{y}\right)}\]
    3. Simplified0.0

      \[\leadsto 1 - \log \color{blue}{\left(\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt0.0

      \[\leadsto 1 - \log \color{blue}{\left(\left(\sqrt[3]{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}} \cdot \sqrt[3]{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}}\right) \cdot \sqrt[3]{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}}\right)}\]
    6. Simplified0.0

      \[\leadsto 1 - \log \left(\color{blue}{\left(\sqrt[3]{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)}\right)} \cdot \sqrt[3]{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}}\right)\]
    7. Simplified0.0

      \[\leadsto 1 - \log \left(\left(\sqrt[3]{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)}\right) \cdot \color{blue}{\sqrt[3]{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)}}\right)\]

    if -34474611802046.883 < y < 43744445.70071104

    1. Initial program 0.2

      \[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt0.2

      \[\leadsto 1 - \log \color{blue}{\left(\sqrt{1 - \frac{x - y}{1 - y}} \cdot \sqrt{1 - \frac{x - y}{1 - y}}\right)}\]
    4. Applied log-prod0.2

      \[\leadsto 1 - \color{blue}{\left(\log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right) + \log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right)\right)}\]

    if 43744445.70071104 < y

    1. Initial program 29.8

      \[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
    2. Taylor expanded around inf 0.0

      \[\leadsto 1 - \log \color{blue}{\left(\left(\frac{x}{y} + 1 \cdot \frac{x}{{y}^{2}}\right) - 1 \cdot \frac{1}{y}\right)}\]
    3. Simplified0.0

      \[\leadsto 1 - \log \color{blue}{\left(\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}\right)}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt0.0

      \[\leadsto 1 - \log \color{blue}{\left(\sqrt{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}} \cdot \sqrt{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}}\right)}\]
    6. Simplified0.0

      \[\leadsto 1 - \log \left(\color{blue}{\sqrt{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)}} \cdot \sqrt{\left(\frac{x}{y} + \frac{1 \cdot x}{{y}^{2}}\right) - \frac{1}{y}}\right)\]
    7. Simplified0.0

      \[\leadsto 1 - \log \left(\sqrt{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)} \cdot \color{blue}{\sqrt{\frac{x}{y} + \left(\frac{1}{y} \cdot \frac{x}{y} - \frac{1}{y}\right)}}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -34474611802046.8828125:\\ \;\;\;\;1 - \log \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\right)\\ \mathbf{elif}\;y \le 43744445.7007110416889190673828125:\\ \;\;\;\;1 - \left(\log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right) + \log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 - \log \left(\sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019174 
(FPCore (x y)
  :name "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, B"

  :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))))))