Average Error: 7.0 → 2.5
Time: 12.9s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;x \le 2.20761997366181834 \cdot 10^{-298} \lor \neg \left(x \le 1.374279956057484 \cdot 10^{-254}\right):\\ \;\;\;\;\frac{x + y \cdot \frac{z}{t \cdot z - x}}{x + 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\begin{array}{l}
\mathbf{if}\;x \le 2.20761997366181834 \cdot 10^{-298} \lor \neg \left(x \le 1.374279956057484 \cdot 10^{-254}\right):\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t \cdot z - x}}{x + 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r730577 = x;
        double r730578 = y;
        double r730579 = z;
        double r730580 = r730578 * r730579;
        double r730581 = r730580 - r730577;
        double r730582 = t;
        double r730583 = r730582 * r730579;
        double r730584 = r730583 - r730577;
        double r730585 = r730581 / r730584;
        double r730586 = r730577 + r730585;
        double r730587 = 1.0;
        double r730588 = r730577 + r730587;
        double r730589 = r730586 / r730588;
        return r730589;
}

double f(double x, double y, double z, double t) {
        double r730590 = x;
        double r730591 = 2.2076199736618183e-298;
        bool r730592 = r730590 <= r730591;
        double r730593 = 1.3742799560574841e-254;
        bool r730594 = r730590 <= r730593;
        double r730595 = !r730594;
        bool r730596 = r730592 || r730595;
        double r730597 = y;
        double r730598 = z;
        double r730599 = t;
        double r730600 = r730599 * r730598;
        double r730601 = r730600 - r730590;
        double r730602 = r730598 / r730601;
        double r730603 = r730597 * r730602;
        double r730604 = r730590 + r730603;
        double r730605 = 1.0;
        double r730606 = r730590 + r730605;
        double r730607 = r730604 / r730606;
        double r730608 = r730590 / r730601;
        double r730609 = r730608 / r730606;
        double r730610 = r730607 - r730609;
        double r730611 = r730597 / r730599;
        double r730612 = r730590 + r730611;
        double r730613 = r730612 / r730606;
        double r730614 = r730596 ? r730610 : r730613;
        return r730614;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.0
Target0.4
Herbie2.5
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Split input into 2 regimes
  2. if x < 2.2076199736618183e-298 or 1.3742799560574841e-254 < x

    1. Initial program 6.9

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Using strategy rm
    3. Applied div-sub6.9

      \[\leadsto \frac{x + \color{blue}{\left(\frac{y \cdot z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}}{x + 1}\]
    4. Simplified2.1

      \[\leadsto \frac{x + \left(\color{blue}{y \cdot \frac{z}{t \cdot z - x}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]
    5. Using strategy rm
    6. Applied associate-+r-2.1

      \[\leadsto \frac{\color{blue}{\left(x + y \cdot \frac{z}{t \cdot z - x}\right) - \frac{x}{t \cdot z - x}}}{x + 1}\]
    7. Applied div-sub2.1

      \[\leadsto \color{blue}{\frac{x + y \cdot \frac{z}{t \cdot z - x}}{x + 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}}\]

    if 2.2076199736618183e-298 < x < 1.3742799560574841e-254

    1. Initial program 10.8

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Taylor expanded around inf 14.9

      \[\leadsto \frac{x + \color{blue}{\frac{y}{t}}}{x + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 2.20761997366181834 \cdot 10^{-298} \lor \neg \left(x \le 1.374279956057484 \cdot 10^{-254}\right):\\ \;\;\;\;\frac{x + y \cdot \frac{z}{t \cdot z - x}}{x + 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2020047 
(FPCore (x y z t)
  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, A"
  :precision binary64

  :herbie-target
  (/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))

  (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))