Average Error: 23.0 → 17.8
Time: 18.5s
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 -6.665018424556654185786159367392459116065 \cdot 10^{158}:\\ \;\;\;\;-\frac{a}{\left(\frac{y}{z} + b\right) - y}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)} - \frac{1}{\frac{\left(\frac{y}{z} + b\right) - y}{a}}\\ \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 -6.665018424556654185786159367392459116065 \cdot 10^{158}:\\
\;\;\;\;-\frac{a}{\left(\frac{y}{z} + b\right) - y}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r466053 = x;
        double r466054 = y;
        double r466055 = r466053 * r466054;
        double r466056 = z;
        double r466057 = t;
        double r466058 = a;
        double r466059 = r466057 - r466058;
        double r466060 = r466056 * r466059;
        double r466061 = r466055 + r466060;
        double r466062 = b;
        double r466063 = r466062 - r466054;
        double r466064 = r466056 * r466063;
        double r466065 = r466054 + r466064;
        double r466066 = r466061 / r466065;
        return r466066;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r466067 = z;
        double r466068 = -6.665018424556654e+158;
        bool r466069 = r466067 <= r466068;
        double r466070 = a;
        double r466071 = y;
        double r466072 = r466071 / r466067;
        double r466073 = b;
        double r466074 = r466072 + r466073;
        double r466075 = r466074 - r466071;
        double r466076 = r466070 / r466075;
        double r466077 = -r466076;
        double r466078 = x;
        double r466079 = t;
        double r466080 = r466079 * r466067;
        double r466081 = fma(r466078, r466071, r466080);
        double r466082 = r466073 - r466071;
        double r466083 = fma(r466067, r466082, r466071);
        double r466084 = r466081 / r466083;
        double r466085 = 1.0;
        double r466086 = r466075 / r466070;
        double r466087 = r466085 / r466086;
        double r466088 = r466084 - r466087;
        double r466089 = r466069 ? r466077 : r466088;
        return r466089;
}

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.0
Target17.8
Herbie17.8
\[\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 < -6.665018424556654e+158

    1. Initial program 49.9

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

      \[\leadsto \frac{x \cdot y + z \cdot \color{blue}{\left(t + \left(-a\right)\right)}}{y + z \cdot \left(b - y\right)}\]
    4. Applied distribute-lft-in49.9

      \[\leadsto \frac{x \cdot y + \color{blue}{\left(z \cdot t + z \cdot \left(-a\right)\right)}}{y + z \cdot \left(b - y\right)}\]
    5. Applied associate-+r+49.9

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right)} + z \cdot \left(-a\right)}{y + z \cdot \left(b - y\right)}\]
    7. Using strategy rm
    8. Applied distribute-rgt-neg-out49.9

      \[\leadsto \frac{\mathsf{fma}\left(x, y, z \cdot t\right) + \color{blue}{\left(-z \cdot a\right)}}{y + z \cdot \left(b - y\right)}\]
    9. Applied unsub-neg49.9

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right) - z \cdot a}}{y + z \cdot \left(b - y\right)}\]
    10. Applied div-sub49.9

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

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

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

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

      \[\leadsto \color{blue}{0} - \frac{a}{\left(\frac{y}{z} + b\right) - y}\]

    if -6.665018424556654e+158 < z

    1. Initial program 19.3

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

      \[\leadsto \frac{x \cdot y + z \cdot \color{blue}{\left(t + \left(-a\right)\right)}}{y + z \cdot \left(b - y\right)}\]
    4. Applied distribute-lft-in19.3

      \[\leadsto \frac{x \cdot y + \color{blue}{\left(z \cdot t + z \cdot \left(-a\right)\right)}}{y + z \cdot \left(b - y\right)}\]
    5. Applied associate-+r+19.3

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right)} + z \cdot \left(-a\right)}{y + z \cdot \left(b - y\right)}\]
    7. Using strategy rm
    8. Applied distribute-rgt-neg-out19.3

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

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x, y, z \cdot t\right) - z \cdot a}}{y + z \cdot \left(b - y\right)}\]
    10. Applied div-sub19.3

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

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

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

      \[\leadsto \frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)} - \frac{a}{\color{blue}{\left(\frac{y}{z} + b\right) - y}}\]
    14. Using strategy rm
    15. Applied clear-num15.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -6.665018424556654185786159367392459116065 \cdot 10^{158}:\\ \;\;\;\;-\frac{a}{\left(\frac{y}{z} + b\right) - y}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, t \cdot z\right)}{\mathsf{fma}\left(z, b - y, y\right)} - \frac{1}{\frac{\left(\frac{y}{z} + b\right) - y}{a}}\\ \end{array}\]

Reproduce

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