Average Error: 23.5 → 19.3
Time: 28.4s
Precision: 64
\[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
\[\begin{array}{l} \mathbf{if}\;z \le -7.55495103000838965807759585637091120332 \cdot 10^{171}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \mathbf{elif}\;z \le 2.561533282437487876095016676791252623415 \cdot 10^{94}:\\ \;\;\;\;\frac{\mathsf{fma}\left(z, t - a, y \cdot x\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \end{array}\]
\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}
\begin{array}{l}
\mathbf{if}\;z \le -7.55495103000838965807759585637091120332 \cdot 10^{171}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\

\mathbf{elif}\;z \le 2.561533282437487876095016676791252623415 \cdot 10^{94}:\\
\;\;\;\;\frac{\mathsf{fma}\left(z, t - a, y \cdot x\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r39904447 = x;
        double r39904448 = y;
        double r39904449 = r39904447 * r39904448;
        double r39904450 = z;
        double r39904451 = t;
        double r39904452 = a;
        double r39904453 = r39904451 - r39904452;
        double r39904454 = r39904450 * r39904453;
        double r39904455 = r39904449 + r39904454;
        double r39904456 = b;
        double r39904457 = r39904456 - r39904448;
        double r39904458 = r39904450 * r39904457;
        double r39904459 = r39904448 + r39904458;
        double r39904460 = r39904455 / r39904459;
        return r39904460;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r39904461 = z;
        double r39904462 = -7.55495103000839e+171;
        bool r39904463 = r39904461 <= r39904462;
        double r39904464 = t;
        double r39904465 = b;
        double r39904466 = r39904464 / r39904465;
        double r39904467 = a;
        double r39904468 = r39904467 / r39904465;
        double r39904469 = r39904466 - r39904468;
        double r39904470 = 2.561533282437488e+94;
        bool r39904471 = r39904461 <= r39904470;
        double r39904472 = r39904464 - r39904467;
        double r39904473 = y;
        double r39904474 = x;
        double r39904475 = r39904473 * r39904474;
        double r39904476 = fma(r39904461, r39904472, r39904475);
        double r39904477 = r39904465 - r39904473;
        double r39904478 = fma(r39904477, r39904461, r39904473);
        double r39904479 = r39904476 / r39904478;
        double r39904480 = r39904471 ? r39904479 : r39904469;
        double r39904481 = r39904463 ? r39904469 : r39904480;
        return r39904481;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Target

Original23.5
Target18.1
Herbie19.3
\[\frac{z \cdot t + y \cdot x}{y + z \cdot \left(b - y\right)} - \frac{a}{\left(b - y\right) + \frac{y}{z}}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -7.55495103000839e+171 or 2.561533282437488e+94 < z

    1. Initial program 49.1

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Simplified49.1

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

      \[\leadsto \color{blue}{\frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(z, t - a, x \cdot y\right)}}}\]
    5. Taylor expanded around inf 33.8

      \[\leadsto \color{blue}{\frac{t}{b} - \frac{a}{b}}\]

    if -7.55495103000839e+171 < z < 2.561533282437488e+94

    1. Initial program 13.7

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Simplified13.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -7.55495103000838965807759585637091120332 \cdot 10^{171}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \mathbf{elif}\;z \le 2.561533282437487876095016676791252623415 \cdot 10^{94}:\\ \;\;\;\;\frac{\mathsf{fma}\left(z, t - a, y \cdot x\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t a b)
  :name "Development.Shake.Progress:decay from shake-0.15.5"

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

  (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))