Average Error: 27.3 → 17.8
Time: 3.5m
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}\;y \le -8.350665119324792 \cdot 10^{+143}:\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{elif}\;y \le -0.00770456067478284:\\ \;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\ \mathbf{elif}\;y \le -6.93026971257094 \cdot 10^{-86}:\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{elif}\;y \le 3.579931215395551 \cdot 10^{+40}:\\ \;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(a + z\right) - b\\ \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}\;y \le -8.350665119324792 \cdot 10^{+143}:\\
\;\;\;\;\left(a + z\right) - b\\

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

\mathbf{elif}\;y \le -6.93026971257094 \cdot 10^{-86}:\\
\;\;\;\;\left(a + z\right) - b\\

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

\mathbf{else}:\\
\;\;\;\;\left(a + z\right) - b\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r41055777 = x;
        double r41055778 = y;
        double r41055779 = r41055777 + r41055778;
        double r41055780 = z;
        double r41055781 = r41055779 * r41055780;
        double r41055782 = t;
        double r41055783 = r41055782 + r41055778;
        double r41055784 = a;
        double r41055785 = r41055783 * r41055784;
        double r41055786 = r41055781 + r41055785;
        double r41055787 = b;
        double r41055788 = r41055778 * r41055787;
        double r41055789 = r41055786 - r41055788;
        double r41055790 = r41055777 + r41055782;
        double r41055791 = r41055790 + r41055778;
        double r41055792 = r41055789 / r41055791;
        return r41055792;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r41055793 = y;
        double r41055794 = -8.350665119324792e+143;
        bool r41055795 = r41055793 <= r41055794;
        double r41055796 = a;
        double r41055797 = z;
        double r41055798 = r41055796 + r41055797;
        double r41055799 = b;
        double r41055800 = r41055798 - r41055799;
        double r41055801 = -0.00770456067478284;
        bool r41055802 = r41055793 <= r41055801;
        double r41055803 = t;
        double r41055804 = r41055793 + r41055803;
        double r41055805 = r41055796 * r41055804;
        double r41055806 = x;
        double r41055807 = r41055806 + r41055793;
        double r41055808 = r41055807 * r41055797;
        double r41055809 = r41055793 * r41055799;
        double r41055810 = r41055808 - r41055809;
        double r41055811 = r41055805 + r41055810;
        double r41055812 = r41055806 + r41055804;
        double r41055813 = r41055811 / r41055812;
        double r41055814 = -6.93026971257094e-86;
        bool r41055815 = r41055793 <= r41055814;
        double r41055816 = 3.579931215395551e+40;
        bool r41055817 = r41055793 <= r41055816;
        double r41055818 = r41055817 ? r41055813 : r41055800;
        double r41055819 = r41055815 ? r41055800 : r41055818;
        double r41055820 = r41055802 ? r41055813 : r41055819;
        double r41055821 = r41055795 ? r41055800 : r41055820;
        return r41055821;
}

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

Original27.3
Target11.7
Herbie17.8
\[\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.5813117084150564 \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.2285964308315609 \cdot 10^{+82}:\\ \;\;\;\;\frac{1.0}{\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 y < -8.350665119324792e+143 or -0.00770456067478284 < y < -6.93026971257094e-86 or 3.579931215395551e+40 < y

    1. Initial program 39.7

      \[\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\]
    2. Simplified39.7

      \[\leadsto \color{blue}{\frac{\left(y + t\right) \cdot a + \left(z \cdot \left(x + y\right) - b \cdot y\right)}{x + \left(y + t\right)}}\]
    3. Taylor expanded around inf 17.6

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

    if -8.350665119324792e+143 < y < -0.00770456067478284 or -6.93026971257094e-86 < y < 3.579931215395551e+40

    1. Initial program 17.9

      \[\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}\]
    2. Simplified17.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -8.350665119324792 \cdot 10^{+143}:\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{elif}\;y \le -0.00770456067478284:\\ \;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\ \mathbf{elif}\;y \le -6.93026971257094 \cdot 10^{-86}:\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{elif}\;y \le 3.579931215395551 \cdot 10^{+40}:\\ \;\;\;\;\frac{a \cdot \left(y + t\right) + \left(\left(x + y\right) \cdot z - y \cdot b\right)}{x + \left(y + t\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(a + z\right) - b\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) -3.5813117084150564e+153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e+82) (/ 1.0 (/ (+ (+ 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)))