Average Error: 23.5 → 15.5
Time: 7.7s
Precision: 64
\[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} = -\infty:\\ \;\;\;\;x\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -3.48512744200682378 \cdot 10^{-250}:\\ \;\;\;\;1 \cdot \frac{\mathsf{fma}\left(x, y, \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\sqrt[3]{z} \cdot \left(t - a\right)\right)\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -0.0:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le 5.16890509567698123 \cdot 10^{307}:\\ \;\;\;\;\frac{1}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\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}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} = -\infty:\\
\;\;\;\;x\\

\mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -3.48512744200682378 \cdot 10^{-250}:\\
\;\;\;\;1 \cdot \frac{\mathsf{fma}\left(x, y, \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\sqrt[3]{z} \cdot \left(t - a\right)\right)\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\

\mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -0.0:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\

\mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le 5.16890509567698123 \cdot 10^{307}:\\
\;\;\;\;\frac{1}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\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 r805391 = x;
        double r805392 = y;
        double r805393 = r805391 * r805392;
        double r805394 = z;
        double r805395 = t;
        double r805396 = a;
        double r805397 = r805395 - r805396;
        double r805398 = r805394 * r805397;
        double r805399 = r805393 + r805398;
        double r805400 = b;
        double r805401 = r805400 - r805392;
        double r805402 = r805394 * r805401;
        double r805403 = r805392 + r805402;
        double r805404 = r805399 / r805403;
        return r805404;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r805405 = x;
        double r805406 = y;
        double r805407 = r805405 * r805406;
        double r805408 = z;
        double r805409 = t;
        double r805410 = a;
        double r805411 = r805409 - r805410;
        double r805412 = r805408 * r805411;
        double r805413 = r805407 + r805412;
        double r805414 = b;
        double r805415 = r805414 - r805406;
        double r805416 = r805408 * r805415;
        double r805417 = r805406 + r805416;
        double r805418 = r805413 / r805417;
        double r805419 = -inf.0;
        bool r805420 = r805418 <= r805419;
        double r805421 = -3.485127442006824e-250;
        bool r805422 = r805418 <= r805421;
        double r805423 = 1.0;
        double r805424 = cbrt(r805408);
        double r805425 = r805424 * r805424;
        double r805426 = r805424 * r805411;
        double r805427 = r805425 * r805426;
        double r805428 = fma(r805405, r805406, r805427);
        double r805429 = fma(r805415, r805408, r805406);
        double r805430 = r805428 / r805429;
        double r805431 = r805423 * r805430;
        double r805432 = -0.0;
        bool r805433 = r805418 <= r805432;
        double r805434 = r805409 / r805414;
        double r805435 = r805410 / r805414;
        double r805436 = r805434 - r805435;
        double r805437 = 5.168905095676981e+307;
        bool r805438 = r805418 <= r805437;
        double r805439 = r805423 / r805413;
        double r805440 = r805417 * r805439;
        double r805441 = r805423 / r805440;
        double r805442 = r805438 ? r805441 : r805436;
        double r805443 = r805433 ? r805436 : r805442;
        double r805444 = r805422 ? r805431 : r805443;
        double r805445 = r805420 ? r805405 : r805444;
        return r805445;
}

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.2
Herbie15.5
\[\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 4 regimes
  2. if (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))) < -inf.0

    1. Initial program 64.0

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Using strategy rm
    3. Applied clear-num64.0

      \[\leadsto \color{blue}{\frac{1}{\frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    4. Using strategy rm
    5. Applied div-inv64.0

      \[\leadsto \frac{1}{\color{blue}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    6. Applied add-cube-cbrt64.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\]
    7. Applied times-frac64.0

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{y + z \cdot \left(b - y\right)} \cdot \frac{\sqrt[3]{1}}{\frac{1}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    8. Simplified64.0

      \[\leadsto \color{blue}{\frac{1}{\mathsf{fma}\left(b - y, z, y\right)}} \cdot \frac{\sqrt[3]{1}}{\frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\]
    9. Simplified64.0

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

      \[\leadsto \color{blue}{x}\]

    if -inf.0 < (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))) < -3.485127442006824e-250

    1. Initial program 0.3

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Using strategy rm
    3. Applied clear-num0.4

      \[\leadsto \color{blue}{\frac{1}{\frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.4

      \[\leadsto \frac{1}{\frac{y + z \cdot \left(b - y\right)}{\color{blue}{1 \cdot \left(x \cdot y + z \cdot \left(t - a\right)\right)}}}\]
    6. Applied *-un-lft-identity0.4

      \[\leadsto \frac{1}{\frac{\color{blue}{1 \cdot \left(y + z \cdot \left(b - y\right)\right)}}{1 \cdot \left(x \cdot y + z \cdot \left(t - a\right)\right)}}\]
    7. Applied times-frac0.4

      \[\leadsto \frac{1}{\color{blue}{\frac{1}{1} \cdot \frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    8. Applied add-cube-cbrt0.4

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\frac{1}{1} \cdot \frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}\]
    9. Applied times-frac0.4

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{1}{1}} \cdot \frac{\sqrt[3]{1}}{\frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    10. Simplified0.4

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

      \[\leadsto 1 \cdot \color{blue}{\frac{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(b - y, z, y\right)}}\]
    12. Using strategy rm
    13. Applied add-cube-cbrt1.0

      \[\leadsto 1 \cdot \frac{\mathsf{fma}\left(x, y, \color{blue}{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}\right)} \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(b - y, z, y\right)}\]
    14. Applied associate-*l*1.0

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

    if -3.485127442006824e-250 < (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))) < -0.0 or 5.168905095676981e+307 < (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y))))

    1. Initial program 57.2

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Using strategy rm
    3. Applied clear-num57.2

      \[\leadsto \color{blue}{\frac{1}{\frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    4. Using strategy rm
    5. Applied div-inv57.2

      \[\leadsto \frac{1}{\color{blue}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    6. Applied add-cube-cbrt57.2

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\]
    7. Applied times-frac57.2

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{y + z \cdot \left(b - y\right)} \cdot \frac{\sqrt[3]{1}}{\frac{1}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    8. Simplified57.2

      \[\leadsto \color{blue}{\frac{1}{\mathsf{fma}\left(b - y, z, y\right)}} \cdot \frac{\sqrt[3]{1}}{\frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\]
    9. Simplified57.2

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

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

    if -0.0 < (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))) < 5.168905095676981e+307

    1. Initial program 0.3

      \[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\]
    2. Using strategy rm
    3. Applied clear-num0.5

      \[\leadsto \color{blue}{\frac{1}{\frac{y + z \cdot \left(b - y\right)}{x \cdot y + z \cdot \left(t - a\right)}}}\]
    4. Using strategy rm
    5. Applied div-inv0.7

      \[\leadsto \frac{1}{\color{blue}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification15.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} = -\infty:\\ \;\;\;\;x\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -3.48512744200682378 \cdot 10^{-250}:\\ \;\;\;\;1 \cdot \frac{\mathsf{fma}\left(x, y, \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\sqrt[3]{z} \cdot \left(t - a\right)\right)\right)}{\mathsf{fma}\left(b - y, z, y\right)}\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le -0.0:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \mathbf{elif}\;\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \le 5.16890509567698123 \cdot 10^{307}:\\ \;\;\;\;\frac{1}{\left(y + z \cdot \left(b - y\right)\right) \cdot \frac{1}{x \cdot y + z \cdot \left(t - a\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \end{array}\]

Reproduce

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

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

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