Average Error: 26.2 → 16.3
Time: 6.7s
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 -4.01366251018719627563554580206231643302 \cdot 10^{58} \lor \neg \left(y \le 2.570868954028346230983943961068138861492 \cdot 10^{-7}\right):\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{else}:\\ \;\;\;\;\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}}\\ \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 -4.01366251018719627563554580206231643302 \cdot 10^{58} \lor \neg \left(y \le 2.570868954028346230983943961068138861492 \cdot 10^{-7}\right):\\
\;\;\;\;\left(a + z\right) - b\\

\mathbf{else}:\\
\;\;\;\;\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}}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r916730 = x;
        double r916731 = y;
        double r916732 = r916730 + r916731;
        double r916733 = z;
        double r916734 = r916732 * r916733;
        double r916735 = t;
        double r916736 = r916735 + r916731;
        double r916737 = a;
        double r916738 = r916736 * r916737;
        double r916739 = r916734 + r916738;
        double r916740 = b;
        double r916741 = r916731 * r916740;
        double r916742 = r916739 - r916741;
        double r916743 = r916730 + r916735;
        double r916744 = r916743 + r916731;
        double r916745 = r916742 / r916744;
        return r916745;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r916746 = y;
        double r916747 = -4.013662510187196e+58;
        bool r916748 = r916746 <= r916747;
        double r916749 = 2.570868954028346e-07;
        bool r916750 = r916746 <= r916749;
        double r916751 = !r916750;
        bool r916752 = r916748 || r916751;
        double r916753 = a;
        double r916754 = z;
        double r916755 = r916753 + r916754;
        double r916756 = b;
        double r916757 = r916755 - r916756;
        double r916758 = 1.0;
        double r916759 = x;
        double r916760 = t;
        double r916761 = r916759 + r916760;
        double r916762 = r916761 + r916746;
        double r916763 = r916759 + r916746;
        double r916764 = r916763 * r916754;
        double r916765 = r916760 + r916746;
        double r916766 = r916765 * r916753;
        double r916767 = r916764 + r916766;
        double r916768 = r916746 * r916756;
        double r916769 = r916767 - r916768;
        double r916770 = r916762 / r916769;
        double r916771 = r916758 / r916770;
        double r916772 = r916752 ? r916757 : r916771;
        return r916772;
}

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.2
Target11.3
Herbie16.3
\[\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 y < -4.013662510187196e+58 or 2.570868954028346e-07 < y

    1. Initial program 39.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 clear-num39.4

      \[\leadsto \color{blue}{\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}}}\]
    4. Taylor expanded around 0 17.5

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

    if -4.013662510187196e+58 < y < 2.570868954028346e-07

    1. Initial program 15.1

      \[\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 clear-num15.2

      \[\leadsto \color{blue}{\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}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification16.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -4.01366251018719627563554580206231643302 \cdot 10^{58} \lor \neg \left(y \le 2.570868954028346230983943961068138861492 \cdot 10^{-7}\right):\\ \;\;\;\;\left(a + z\right) - b\\ \mathbf{else}:\\ \;\;\;\;\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}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019354 
(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.5813117084150564e+153) (- (+ z a) b) (if (< (/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)) 1.2285964308315609e+82) (/ 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)))