Average Error: 7.3 → 3.5
Time: 4.3s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;z \le -2.36168448188679443 \cdot 10^{-174}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{\left(x + 1\right) \cdot 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\ \mathbf{elif}\;z \le 5.84421128900095789 \cdot 10^{44}:\\ \;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{\mathsf{fma}\left(y, z, -x\right)}}}{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 -2.36168448188679443 \cdot 10^{-174}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{\left(x + 1\right) \cdot 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\

\mathbf{elif}\;z \le 5.84421128900095789 \cdot 10^{44}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{\mathsf{fma}\left(y, z, -x\right)}}}{x + 1}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r656389 = x;
        double r656390 = y;
        double r656391 = z;
        double r656392 = r656390 * r656391;
        double r656393 = r656392 - r656389;
        double r656394 = t;
        double r656395 = r656394 * r656391;
        double r656396 = r656395 - r656389;
        double r656397 = r656393 / r656396;
        double r656398 = r656389 + r656397;
        double r656399 = 1.0;
        double r656400 = r656389 + r656399;
        double r656401 = r656398 / r656400;
        return r656401;
}

double f(double x, double y, double z, double t) {
        double r656402 = z;
        double r656403 = -2.3616844818867944e-174;
        bool r656404 = r656402 <= r656403;
        double r656405 = y;
        double r656406 = t;
        double r656407 = r656406 * r656402;
        double r656408 = x;
        double r656409 = r656407 - r656408;
        double r656410 = r656405 / r656409;
        double r656411 = fma(r656410, r656402, r656408);
        double r656412 = 1.0;
        double r656413 = r656408 + r656412;
        double r656414 = 1.0;
        double r656415 = r656413 * r656414;
        double r656416 = r656411 / r656415;
        double r656417 = r656408 / r656409;
        double r656418 = r656417 / r656413;
        double r656419 = r656416 - r656418;
        double r656420 = 5.844211289000958e+44;
        bool r656421 = r656402 <= r656420;
        double r656422 = -r656408;
        double r656423 = fma(r656405, r656402, r656422);
        double r656424 = r656409 / r656423;
        double r656425 = r656414 / r656424;
        double r656426 = r656408 + r656425;
        double r656427 = r656426 / r656413;
        double r656428 = r656405 / r656406;
        double r656429 = r656408 + r656428;
        double r656430 = r656429 / r656413;
        double r656431 = r656421 ? r656427 : r656430;
        double r656432 = r656404 ? r656419 : r656431;
        return r656432;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original7.3
Target0.3
Herbie3.5
\[\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 < -2.3616844818867944e-174

    1. Initial program 9.5

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

      \[\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-9.5

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

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

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

    if -2.3616844818867944e-174 < z < 5.844211289000958e+44

    1. Initial program 0.4

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

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

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

    if 5.844211289000958e+44 < z

    1. Initial program 17.0

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

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

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

Reproduce

herbie shell --seed 2020081 +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)))