(FPCore (x y z t a b)
:precision binary64
(/ (- (+ (* (+ x y) z) (* (+ t y) a)) (* y b)) (+ (+ x t) y)))
↓
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (+ y (+ x t)))
(t_2 (/ (- (+ (* z (+ x y)) (* a (+ y t))) (* y b)) t_1)))
(if (or (<= t_2 (- INFINITY)) (not (<= t_2 1e+259)))
(+
(+ (/ 0.0 t_1) (* (/ a t_1) (+ y t)))
(- (* z (/ (+ x y) t_1)) (/ b (/ t_1 y))))
t_2)))
if (/.f64 (-.f64 (+.f64 (*.f64 (+.f64 x y) z) (*.f64 (+.f64 t y) a)) (*.f64 y b)) (+.f64 (+.f64 x t) y)) < -inf.0 or 9.999999999999999e258 < (/.f64 (-.f64 (+.f64 (*.f64 (+.f64 x y) z) (*.f64 (+.f64 t y) a)) (*.f64 y b)) (+.f64 (+.f64 x t) y))
Initial program 97.02
\[\frac{\left(\left(x + y\right) \cdot z + \left(t + y\right) \cdot a\right) - y \cdot b}{\left(x + t\right) + y}
\]
Applied egg-rr97.02
\[\leadsto \frac{\color{blue}{\left(\mathsf{fma}\left(x + y, z, \left(y + t\right) \cdot a\right) - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}}{\left(x + t\right) + y}
\]
Simplified97.02
\[\leadsto \frac{\color{blue}{\mathsf{fma}\left(z, y + x, a \cdot \left(y + t\right) - y \cdot b\right) + 2 \cdot \mathsf{fma}\left(-b, y, y \cdot b\right)}}{\left(x + t\right) + y}
\]
Proof
[Start]97.02
\[ \frac{\left(\mathsf{fma}\left(x + y, z, \left(y + t\right) \cdot a\right) - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
+-commutative [<=]97.02
\[ \frac{\left(\mathsf{fma}\left(\color{blue}{y + x}, z, \left(y + t\right) \cdot a\right) - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
fma-udef [=>]97.02
\[ \frac{\left(\color{blue}{\left(\left(y + x\right) \cdot z + \left(y + t\right) \cdot a\right)} - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
+-commutative [=>]97.02
\[ \frac{\left(\left(\color{blue}{\left(x + y\right)} \cdot z + \left(y + t\right) \cdot a\right) - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
associate-+r- [<=]97.02
\[ \frac{\color{blue}{\left(\left(x + y\right) \cdot z + \left(\left(y + t\right) \cdot a - y \cdot b\right)\right)} + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
+-commutative [<=]97.02
\[ \frac{\left(\color{blue}{\left(y + x\right)} \cdot z + \left(\left(y + t\right) \cdot a - y \cdot b\right)\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
*-commutative [=>]97.02
\[ \frac{\left(\color{blue}{z \cdot \left(y + x\right)} + \left(\left(y + t\right) \cdot a - y \cdot b\right)\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
fma-udef [<=]97.02
\[ \frac{\color{blue}{\mathsf{fma}\left(z, y + x, \left(y + t\right) \cdot a - y \cdot b\right)} + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
*-commutative [=>]97.02
\[ \frac{\mathsf{fma}\left(z, y + x, \color{blue}{a \cdot \left(y + t\right)} - y \cdot b\right) + \left(\mathsf{fma}\left(-b, y, y \cdot b\right) + \mathsf{fma}\left(-b, y, y \cdot b\right)\right)}{\left(x + t\right) + y}
\]
count-2 [=>]97.02
\[ \frac{\mathsf{fma}\left(z, y + x, a \cdot \left(y + t\right) - y \cdot b\right) + \color{blue}{2 \cdot \mathsf{fma}\left(-b, y, y \cdot b\right)}}{\left(x + t\right) + y}
\]
herbie shell --seed 2023104
(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.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)))