Average Error: 26.1 → 7.6
Time: 19.6s
Precision: 64
\[\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} = -\infty \lor \neg \left(\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \le 1.034704077569510107532609430096622336618 \cdot 10^{282}\right):\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x + y\right) \cdot z + \left(y \cdot \left(a - b\right) + a \cdot t\right)\right) \cdot \frac{1}{\left(x + t\right) + y}\\ \end{array}\]
\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}
\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} = -\infty \lor \neg \left(\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \le 1.034704077569510107532609430096622336618 \cdot 10^{282}\right):\\
\;\;\;\;\left(a + z\right) - b\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r682864 = x;
        double r682865 = y;
        double r682866 = r682864 + r682865;
        double r682867 = z;
        double r682868 = r682866 * r682867;
        double r682869 = t;
        double r682870 = r682869 + r682865;
        double r682871 = a;
        double r682872 = r682870 * r682871;
        double r682873 = r682868 + r682872;
        double r682874 = b;
        double r682875 = r682865 * r682874;
        double r682876 = r682873 - r682875;
        double r682877 = r682864 + r682869;
        double r682878 = r682877 + r682865;
        double r682879 = r682876 / r682878;
        return r682879;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r682880 = x;
        double r682881 = y;
        double r682882 = r682880 + r682881;
        double r682883 = z;
        double r682884 = r682882 * r682883;
        double r682885 = t;
        double r682886 = r682885 + r682881;
        double r682887 = a;
        double r682888 = r682886 * r682887;
        double r682889 = r682884 + r682888;
        double r682890 = b;
        double r682891 = r682881 * r682890;
        double r682892 = r682889 - r682891;
        double r682893 = r682880 + r682885;
        double r682894 = r682893 + r682881;
        double r682895 = r682892 / r682894;
        double r682896 = -inf.0;
        bool r682897 = r682895 <= r682896;
        double r682898 = 1.0347040775695101e+282;
        bool r682899 = r682895 <= r682898;
        double r682900 = !r682899;
        bool r682901 = r682897 || r682900;
        double r682902 = r682887 + r682883;
        double r682903 = r682902 - r682890;
        double r682904 = r682887 - r682890;
        double r682905 = r682881 * r682904;
        double r682906 = r682887 * r682885;
        double r682907 = r682905 + r682906;
        double r682908 = r682884 + r682907;
        double r682909 = 1.0;
        double r682910 = r682909 / r682894;
        double r682911 = r682908 * r682910;
        double r682912 = r682901 ? r682903 : r682911;
        return r682912;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original26.1
Target11.2
Herbie7.6
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \lt -3.581311708415056427521064305370896655752 \cdot 10^{153}:\\ \;\;\;\;\left(z + a\right) - b\\ \mathbf{elif}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \lt 1.228596430831560895857110658734089400289 \cdot 10^{82}:\\ \;\;\;\;\frac{1}{\frac{\left(x + t\right) + y}{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}}\\ \mathbf{else}:\\ \;\;\;\;\left(z + a\right) - b\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) < -inf.0 or 1.0347040775695101e+282 < (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y))

    1. Initial program 63.3

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

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

      \[\leadsto \frac{\left(x + y\right) \cdot z + \color{blue}{\left(y \cdot \left(a - b\right) + a \cdot t\right)}}{\left(x + t\right) + y}\]
    5. Using strategy rm
    6. Applied clear-num63.3

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

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

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

    1. Initial program 0.3

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} = -\infty \lor \neg \left(\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y} \le 1.034704077569510107532609430096622336618 \cdot 10^{282}\right):\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x + y\right) \cdot z + \left(y \cdot \left(a - b\right) + a \cdot t\right)\right) \cdot \frac{1}{\left(x + t\right) + y}\\ \end{array}\]

Reproduce

herbie shell --seed 2019212 
(FPCore (x y z t a b)
  :name "AI.Clustering.Hierarchical.Internal:ward from clustering-0.2.1"
  :precision binary64

  :herbie-target
  (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) -3.5813117084150564e153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e82) (/ 1 (/ (+ (+ x t) y) (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)))) (- (+ z a) b)))

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