Average Error: 26.9 → 16.6
Time: 16.4s
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 -2.779578717410861142967896309158519663266 \cdot 10^{155} \lor \neg \left(y \le 9.365956405334702717952719007577685926563 \cdot 10^{74}\right):\\ \;\;\;\;a + \left(z - b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x + y\right) \cdot z + a \cdot \left(y + t\right)\right) - b \cdot y\right) \cdot \frac{1}{t + \left(x + y\right)}\\ \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 -2.779578717410861142967896309158519663266 \cdot 10^{155} \lor \neg \left(y \le 9.365956405334702717952719007577685926563 \cdot 10^{74}\right):\\
\;\;\;\;a + \left(z - b\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r620661 = x;
        double r620662 = y;
        double r620663 = r620661 + r620662;
        double r620664 = z;
        double r620665 = r620663 * r620664;
        double r620666 = t;
        double r620667 = r620666 + r620662;
        double r620668 = a;
        double r620669 = r620667 * r620668;
        double r620670 = r620665 + r620669;
        double r620671 = b;
        double r620672 = r620662 * r620671;
        double r620673 = r620670 - r620672;
        double r620674 = r620661 + r620666;
        double r620675 = r620674 + r620662;
        double r620676 = r620673 / r620675;
        return r620676;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r620677 = y;
        double r620678 = -2.779578717410861e+155;
        bool r620679 = r620677 <= r620678;
        double r620680 = 9.365956405334703e+74;
        bool r620681 = r620677 <= r620680;
        double r620682 = !r620681;
        bool r620683 = r620679 || r620682;
        double r620684 = a;
        double r620685 = z;
        double r620686 = b;
        double r620687 = r620685 - r620686;
        double r620688 = r620684 + r620687;
        double r620689 = x;
        double r620690 = r620689 + r620677;
        double r620691 = r620690 * r620685;
        double r620692 = t;
        double r620693 = r620677 + r620692;
        double r620694 = r620684 * r620693;
        double r620695 = r620691 + r620694;
        double r620696 = r620686 * r620677;
        double r620697 = r620695 - r620696;
        double r620698 = 1.0;
        double r620699 = r620692 + r620690;
        double r620700 = r620698 / r620699;
        double r620701 = r620697 * r620700;
        double r620702 = r620683 ? r620688 : r620701;
        return r620702;
}

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.9
Target11.3
Herbie16.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 y < -2.779578717410861e+155 or 9.365956405334703e+74 < y

    1. Initial program 44.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. Simplified44.9

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

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

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

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

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

    if -2.779578717410861e+155 < y < 9.365956405334703e+74

    1. Initial program 18.4

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

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

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

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

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

Reproduce

herbie shell --seed 2019195 
(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)))