Average Error: 23.5 → 19.2
Time: 25.0s
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.798985094449376949568764879566821686662 \cdot 10^{118}:\\ \;\;\;\;\frac{t}{b} - \frac{a}{b}\\ \mathbf{elif}\;z \le 9.172440773991011001801781464965121024877 \cdot 10^{81}:\\ \;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(y, x, z \cdot \left(t - a\right)\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.798985094449376949568764879566821686662 \cdot 10^{118}:\\
\;\;\;\;\frac{t}{b} - \frac{a}{b}\\

\mathbf{elif}\;z \le 9.172440773991011001801781464965121024877 \cdot 10^{81}:\\
\;\;\;\;\frac{1}{\frac{\mathsf{fma}\left(b - y, z, y\right)}{\mathsf{fma}\left(y, x, z \cdot \left(t - a\right)\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 r28519905 = x;
        double r28519906 = y;
        double r28519907 = r28519905 * r28519906;
        double r28519908 = z;
        double r28519909 = t;
        double r28519910 = a;
        double r28519911 = r28519909 - r28519910;
        double r28519912 = r28519908 * r28519911;
        double r28519913 = r28519907 + r28519912;
        double r28519914 = b;
        double r28519915 = r28519914 - r28519906;
        double r28519916 = r28519908 * r28519915;
        double r28519917 = r28519906 + r28519916;
        double r28519918 = r28519913 / r28519917;
        return r28519918;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r28519919 = z;
        double r28519920 = -7.798985094449377e+118;
        bool r28519921 = r28519919 <= r28519920;
        double r28519922 = t;
        double r28519923 = b;
        double r28519924 = r28519922 / r28519923;
        double r28519925 = a;
        double r28519926 = r28519925 / r28519923;
        double r28519927 = r28519924 - r28519926;
        double r28519928 = 9.172440773991011e+81;
        bool r28519929 = r28519919 <= r28519928;
        double r28519930 = 1.0;
        double r28519931 = y;
        double r28519932 = r28519923 - r28519931;
        double r28519933 = fma(r28519932, r28519919, r28519931);
        double r28519934 = x;
        double r28519935 = r28519922 - r28519925;
        double r28519936 = r28519919 * r28519935;
        double r28519937 = fma(r28519931, r28519934, r28519936);
        double r28519938 = r28519933 / r28519937;
        double r28519939 = r28519930 / r28519938;
        double r28519940 = r28519929 ? r28519939 : r28519927;
        double r28519941 = r28519921 ? r28519927 : r28519940;
        return r28519941;
}

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.0
Herbie19.2
\[\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.798985094449377e+118 or 9.172440773991011e+81 < z

    1. Initial program 46.8

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

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

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

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

    if -7.798985094449377e+118 < z < 9.172440773991011e+81

    1. Initial program 11.8

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

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

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

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

Reproduce

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