Average Error: 7.2 → 3.0
Time: 24.0s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;z \le -4.421382369170155130731583160593546099285 \cdot 10^{-19}:\\ \;\;\;\;\frac{1}{\frac{x + 1}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}}\\ \mathbf{elif}\;z \le 1.97282994797409377245095636957005033742 \cdot 10^{102}:\\ \;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \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}\;z \le -4.421382369170155130731583160593546099285 \cdot 10^{-19}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}}\\

\mathbf{elif}\;z \le 1.97282994797409377245095636957005033742 \cdot 10^{102}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \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 r378573 = x;
        double r378574 = y;
        double r378575 = z;
        double r378576 = r378574 * r378575;
        double r378577 = r378576 - r378573;
        double r378578 = t;
        double r378579 = r378578 * r378575;
        double r378580 = r378579 - r378573;
        double r378581 = r378577 / r378580;
        double r378582 = r378573 + r378581;
        double r378583 = 1.0;
        double r378584 = r378573 + r378583;
        double r378585 = r378582 / r378584;
        return r378585;
}

double f(double x, double y, double z, double t) {
        double r378586 = z;
        double r378587 = -4.421382369170155e-19;
        bool r378588 = r378586 <= r378587;
        double r378589 = 1.0;
        double r378590 = x;
        double r378591 = 1.0;
        double r378592 = r378590 + r378591;
        double r378593 = y;
        double r378594 = t;
        double r378595 = r378594 * r378586;
        double r378596 = r378595 - r378590;
        double r378597 = r378593 / r378596;
        double r378598 = fma(r378597, r378586, r378590);
        double r378599 = r378590 / r378596;
        double r378600 = r378598 - r378599;
        double r378601 = r378592 / r378600;
        double r378602 = r378589 / r378601;
        double r378603 = 1.9728299479740938e+102;
        bool r378604 = r378586 <= r378603;
        double r378605 = r378593 * r378586;
        double r378606 = r378605 - r378590;
        double r378607 = r378596 / r378606;
        double r378608 = r378589 / r378607;
        double r378609 = r378590 + r378608;
        double r378610 = r378609 / r378592;
        double r378611 = r378593 / r378594;
        double r378612 = r378590 + r378611;
        double r378613 = r378612 / r378592;
        double r378614 = r378604 ? r378610 : r378613;
        double r378615 = r378588 ? r378602 : r378614;
        return r378615;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original7.2
Target0.3
Herbie3.0
\[\frac{x + \left(\frac{y}{t - \frac{x}{z}} - \frac{x}{t \cdot z - x}\right)}{x + 1}\]

Derivation

  1. Split input into 3 regimes
  2. if z < -4.421382369170155e-19

    1. Initial program 14.1

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

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

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)} - \frac{x}{t \cdot z - x}}{x + 1}\]
    6. Using strategy rm
    7. Applied clear-num4.9

      \[\leadsto \color{blue}{\frac{1}{\frac{x + 1}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}}}\]

    if -4.421382369170155e-19 < z < 1.9728299479740938e+102

    1. Initial program 0.8

      \[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
    2. Using strategy rm
    3. Applied clear-num0.8

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

    if 1.9728299479740938e+102 < z

    1. Initial program 18.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -4.421382369170155130731583160593546099285 \cdot 10^{-19}:\\ \;\;\;\;\frac{1}{\frac{x + 1}{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right) - \frac{x}{t \cdot z - x}}}\\ \mathbf{elif}\;z \le 1.97282994797409377245095636957005033742 \cdot 10^{102}:\\ \;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019304 +o rules:numerics
(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)))