Average Error: 23.1 → 20.0
Time: 7.8s
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 -1.42426219294870413 \cdot 10^{78}:\\ \;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\ \mathbf{elif}\;z \le -3.533788581774126 \cdot 10^{-305}:\\ \;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\ \mathbf{elif}\;z \le 6.448648093686567 \cdot 10^{-244}:\\ \;\;\;\;1 \cdot x\\ \mathbf{elif}\;z \le 1.2504401644554392 \cdot 10^{144}:\\ \;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\ \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 -1.42426219294870413 \cdot 10^{78}:\\
\;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\

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

\mathbf{elif}\;z \le 6.448648093686567 \cdot 10^{-244}:\\
\;\;\;\;1 \cdot x\\

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

\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r825064 = x;
        double r825065 = y;
        double r825066 = r825064 * r825065;
        double r825067 = z;
        double r825068 = t;
        double r825069 = a;
        double r825070 = r825068 - r825069;
        double r825071 = r825067 * r825070;
        double r825072 = r825066 + r825071;
        double r825073 = b;
        double r825074 = r825073 - r825065;
        double r825075 = r825067 * r825074;
        double r825076 = r825065 + r825075;
        double r825077 = r825072 / r825076;
        return r825077;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r825078 = z;
        double r825079 = -1.4242621929487041e+78;
        bool r825080 = r825078 <= r825079;
        double r825081 = 1.0;
        double r825082 = t;
        double r825083 = b;
        double r825084 = r825082 / r825083;
        double r825085 = a;
        double r825086 = r825085 / r825083;
        double r825087 = r825084 - r825086;
        double r825088 = r825081 * r825087;
        double r825089 = -3.533788581774126e-305;
        bool r825090 = r825078 <= r825089;
        double r825091 = y;
        double r825092 = r825083 - r825091;
        double r825093 = fma(r825092, r825078, r825091);
        double r825094 = x;
        double r825095 = r825082 - r825085;
        double r825096 = r825078 * r825095;
        double r825097 = fma(r825094, r825091, r825096);
        double r825098 = r825093 / r825097;
        double r825099 = r825081 / r825098;
        double r825100 = r825081 * r825099;
        double r825101 = 6.448648093686567e-244;
        bool r825102 = r825078 <= r825101;
        double r825103 = r825081 * r825094;
        double r825104 = 1.2504401644554392e+144;
        bool r825105 = r825078 <= r825104;
        double r825106 = r825105 ? r825100 : r825088;
        double r825107 = r825102 ? r825103 : r825106;
        double r825108 = r825090 ? r825100 : r825107;
        double r825109 = r825080 ? r825088 : r825108;
        return r825109;
}

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.1
Target18.0
Herbie20.0
\[\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 3 regimes
  2. if z < -1.4242621929487041e+78 or 1.2504401644554392e+144 < z

    1. Initial program 46.1

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

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

      \[\leadsto \color{blue}{\left(1 \cdot \left(x \cdot y + z \cdot \left(t - a\right)\right)\right)} \cdot \frac{1}{y + z \cdot \left(b - y\right)}\]
    6. Applied associate-*l*46.1

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

      \[\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)}}\]
    8. Using strategy rm
    9. Applied clear-num46.1

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

      \[\leadsto 1 \cdot \color{blue}{\left(\frac{t}{b} - \frac{a}{b}\right)}\]

    if -1.4242621929487041e+78 < z < -3.533788581774126e-305 or 6.448648093686567e-244 < z < 1.2504401644554392e+144

    1. Initial program 12.8

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

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

      \[\leadsto \color{blue}{\left(1 \cdot \left(x \cdot y + z \cdot \left(t - a\right)\right)\right)} \cdot \frac{1}{y + z \cdot \left(b - y\right)}\]
    6. Applied associate-*l*12.8

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

      \[\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)}}\]
    8. Using strategy rm
    9. Applied clear-num12.9

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

    if -3.533788581774126e-305 < z < 6.448648093686567e-244

    1. Initial program 10.0

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

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

      \[\leadsto \color{blue}{\left(1 \cdot \left(x \cdot y + z \cdot \left(t - a\right)\right)\right)} \cdot \frac{1}{y + z \cdot \left(b - y\right)}\]
    6. Applied associate-*l*10.1

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

      \[\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)}}\]
    8. Using strategy rm
    9. Applied clear-num10.1

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

      \[\leadsto 1 \cdot \color{blue}{x}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification20.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -1.42426219294870413 \cdot 10^{78}:\\ \;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\ \mathbf{elif}\;z \le -3.533788581774126 \cdot 10^{-305}:\\ \;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\ \mathbf{elif}\;z \le 6.448648093686567 \cdot 10^{-244}:\\ \;\;\;\;1 \cdot x\\ \mathbf{elif}\;z \le 1.2504401644554392 \cdot 10^{144}:\\ \;\;\;\;1 \cdot \frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{t}{b} - \frac{a}{b}\right)\\ \end{array}\]

Reproduce

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