Average Error: 6.8 → 2.6
Time: 5.1s
Precision: 64
\[\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\]
\[\begin{array}{l} \mathbf{if}\;t \le -4.0040606356777121 \cdot 10^{83} \lor \neg \left(t \le 9.5825621780559752 \cdot 10^{73}\right):\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{z}{t \cdot z - x} \cdot y + x}{\left(x + 1\right) \cdot 1} - \frac{\frac{\frac{x}{\mathsf{fma}\left(t, z, x\right)}}{t \cdot z - x} \cdot \left(t \cdot z + x\right)}{x + 1}\\ \end{array}\]
\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}
\begin{array}{l}
\mathbf{if}\;t \le -4.0040606356777121 \cdot 10^{83} \lor \neg \left(t \le 9.5825621780559752 \cdot 10^{73}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{z}{t \cdot z - x} \cdot y + x}{\left(x + 1\right) \cdot 1} - \frac{\frac{\frac{x}{\mathsf{fma}\left(t, z, x\right)}}{t \cdot z - x} \cdot \left(t \cdot z + x\right)}{x + 1}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r597409 = x;
        double r597410 = y;
        double r597411 = z;
        double r597412 = r597410 * r597411;
        double r597413 = r597412 - r597409;
        double r597414 = t;
        double r597415 = r597414 * r597411;
        double r597416 = r597415 - r597409;
        double r597417 = r597413 / r597416;
        double r597418 = r597409 + r597417;
        double r597419 = 1.0;
        double r597420 = r597409 + r597419;
        double r597421 = r597418 / r597420;
        return r597421;
}

double f(double x, double y, double z, double t) {
        double r597422 = t;
        double r597423 = -4.004060635677712e+83;
        bool r597424 = r597422 <= r597423;
        double r597425 = 9.582562178055975e+73;
        bool r597426 = r597422 <= r597425;
        double r597427 = !r597426;
        bool r597428 = r597424 || r597427;
        double r597429 = x;
        double r597430 = y;
        double r597431 = r597430 / r597422;
        double r597432 = r597429 + r597431;
        double r597433 = 1.0;
        double r597434 = r597429 + r597433;
        double r597435 = r597432 / r597434;
        double r597436 = z;
        double r597437 = r597422 * r597436;
        double r597438 = r597437 - r597429;
        double r597439 = r597436 / r597438;
        double r597440 = r597439 * r597430;
        double r597441 = r597440 + r597429;
        double r597442 = 1.0;
        double r597443 = r597434 * r597442;
        double r597444 = r597441 / r597443;
        double r597445 = fma(r597422, r597436, r597429);
        double r597446 = r597429 / r597445;
        double r597447 = r597446 / r597438;
        double r597448 = r597437 + r597429;
        double r597449 = r597447 * r597448;
        double r597450 = r597449 / r597434;
        double r597451 = r597444 - r597450;
        double r597452 = r597428 ? r597435 : r597451;
        return r597452;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original6.8
Target0.3
Herbie2.6
\[\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 t < -4.004060635677712e+83 or 9.582562178055975e+73 < t

    1. Initial program 9.1

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

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

    if -4.004060635677712e+83 < t < 9.582562178055975e+73

    1. Initial program 5.4

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

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

      \[\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-sub5.4

      \[\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. Simplified4.2

      \[\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}\]
    7. Using strategy rm
    8. Applied clear-num4.3

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

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

      \[\leadsto \frac{\color{blue}{\frac{z}{t \cdot z - x} \cdot y} + x}{\left(x + 1\right) \cdot 1} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\]
    12. Using strategy rm
    13. Applied flip--8.8

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

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

      \[\leadsto \frac{\frac{z}{t \cdot z - x} \cdot y + x}{\left(x + 1\right) \cdot 1} - \frac{\color{blue}{\frac{\frac{x}{\mathsf{fma}\left(t, z, x\right)}}{t \cdot z - x}} \cdot \left(t \cdot z + x\right)}{x + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -4.0040606356777121 \cdot 10^{83} \lor \neg \left(t \le 9.5825621780559752 \cdot 10^{73}\right):\\ \;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{z}{t \cdot z - x} \cdot y + x}{\left(x + 1\right) \cdot 1} - \frac{\frac{\frac{x}{\mathsf{fma}\left(t, z, x\right)}}{t \cdot z - x} \cdot \left(t \cdot z + x\right)}{x + 1}\\ \end{array}\]

Reproduce

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