Average Error: 22.3 → 0.2
Time: 26.6s
Precision: 64
\[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
\[\begin{array}{l} \mathbf{if}\;y \le -94786158.39579971134662628173828125:\\ \;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\ \mathbf{elif}\;y \le 366205797.545144379138946533203125:\\ \;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\ \end{array}\]
1 - \frac{\left(1 - x\right) \cdot y}{y + 1}
\begin{array}{l}
\mathbf{if}\;y \le -94786158.39579971134662628173828125:\\
\;\;\;\;\left(\frac{1}{y} - 1 \cdot \frac{x}{y}\right) + x\\

\mathbf{elif}\;y \le 366205797.545144379138946533203125:\\
\;\;\;\;1 - \left(1 - x\right) \cdot \frac{y}{y + 1}\\

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

\end{array}
double f(double x, double y) {
        double r114459902 = 1.0;
        double r114459903 = x;
        double r114459904 = r114459902 - r114459903;
        double r114459905 = y;
        double r114459906 = r114459904 * r114459905;
        double r114459907 = r114459905 + r114459902;
        double r114459908 = r114459906 / r114459907;
        double r114459909 = r114459902 - r114459908;
        return r114459909;
}

double f(double x, double y) {
        double r114459910 = y;
        double r114459911 = -94786158.39579971;
        bool r114459912 = r114459910 <= r114459911;
        double r114459913 = 1.0;
        double r114459914 = r114459913 / r114459910;
        double r114459915 = x;
        double r114459916 = r114459915 / r114459910;
        double r114459917 = r114459913 * r114459916;
        double r114459918 = r114459914 - r114459917;
        double r114459919 = r114459918 + r114459915;
        double r114459920 = 366205797.5451444;
        bool r114459921 = r114459910 <= r114459920;
        double r114459922 = r114459913 - r114459915;
        double r114459923 = r114459910 + r114459913;
        double r114459924 = r114459910 / r114459923;
        double r114459925 = r114459922 * r114459924;
        double r114459926 = r114459913 - r114459925;
        double r114459927 = r114459921 ? r114459926 : r114459919;
        double r114459928 = r114459912 ? r114459919 : r114459927;
        return r114459928;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original22.3
Target0.2
Herbie0.2
\[\begin{array}{l} \mathbf{if}\;y \lt -3693.848278829724677052581682801246643066:\\ \;\;\;\;\frac{1}{y} - \left(\frac{x}{y} - x\right)\\ \mathbf{elif}\;y \lt 6799310503.41891002655029296875:\\ \;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{y} - \left(\frac{x}{y} - x\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -94786158.39579971 or 366205797.5451444 < y

    1. Initial program 46.0

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity46.0

      \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{1 \cdot \left(y + 1\right)}}\]
    4. Applied times-frac29.4

      \[\leadsto 1 - \color{blue}{\frac{1 - x}{1} \cdot \frac{y}{y + 1}}\]
    5. Simplified29.4

      \[\leadsto 1 - \color{blue}{\left(1 - x\right)} \cdot \frac{y}{y + 1}\]
    6. Using strategy rm
    7. Applied flip3--50.6

      \[\leadsto \color{blue}{\frac{{1}^{3} - {\left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right)}^{3}}{1 \cdot 1 + \left(\left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right) \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right) + 1 \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right)\right)}}\]
    8. Simplified50.6

      \[\leadsto \frac{\color{blue}{1 \cdot \left(1 \cdot 1\right) - \left(\left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right) \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right)\right) \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right)}}{1 \cdot 1 + \left(\left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right) \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right) + 1 \cdot \left(\left(1 - x\right) \cdot \frac{y}{y + 1}\right)\right)}\]
    9. Taylor expanded around inf 0.1

      \[\leadsto \color{blue}{\left(x + 1 \cdot \frac{1}{y}\right) - 1 \cdot \frac{x}{y}}\]
    10. Simplified0.1

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

    if -94786158.39579971 < y < 366205797.5451444

    1. Initial program 0.2

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.2

      \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{1 \cdot \left(y + 1\right)}}\]
    4. Applied times-frac0.2

      \[\leadsto 1 - \color{blue}{\frac{1 - x}{1} \cdot \frac{y}{y + 1}}\]
    5. Simplified0.2

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

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

Reproduce

herbie shell --seed 2019173 
(FPCore (x y)
  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, D"

  :herbie-target
  (if (< y -3693.8482788297247) (- (/ 1.0 y) (- (/ x y) x)) (if (< y 6799310503.41891) (- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))) (- (/ 1.0 y) (- (/ x y) x))))

  (- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))))