Average Error: 22.8 → 2.7
Time: 19.7s
Precision: binary64
\[\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)} \]
\[\begin{array}{l} t_1 := {\left(b - y\right)}^{2}\\ t_2 := \mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{t_1}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{t_1}, \frac{t}{z}, \frac{a}{b - y}\right)\\ t_3 := \mathsf{fma}\left(z, b, y\right) - z \cdot y\\ \mathbf{if}\;z \leq -1436070.5237032003:\\ \;\;\;\;t_2\\ \mathbf{elif}\;z \leq 2.906422781926676 \cdot 10^{+61}:\\ \;\;\;\;\left(\frac{z \cdot t}{\left(y + z \cdot b\right) - z \cdot y} + x \cdot \frac{y}{t_3}\right) - \frac{a}{\frac{t_3}{z}}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}
\begin{array}{l}
t_1 := {\left(b - y\right)}^{2}\\
t_2 := \mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{t_1}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{t_1}, \frac{t}{z}, \frac{a}{b - y}\right)\\
t_3 := \mathsf{fma}\left(z, b, y\right) - z \cdot y\\
\mathbf{if}\;z \leq -1436070.5237032003:\\
\;\;\;\;t_2\\

\mathbf{elif}\;z \leq 2.906422781926676 \cdot 10^{+61}:\\
\;\;\;\;\left(\frac{z \cdot t}{\left(y + z \cdot b\right) - z \cdot y} + x \cdot \frac{y}{t_3}\right) - \frac{a}{\frac{t_3}{z}}\\

\mathbf{else}:\\
\;\;\;\;t_2\\


\end{array}
(FPCore (x y z t a b)
 :precision binary64
 (/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))
(FPCore (x y z t a b)
 :precision binary64
 (let* ((t_1 (pow (- b y) 2.0))
        (t_2
         (-
          (fma (/ y (- b y)) (/ x z) (fma (/ a t_1) (/ y z) (/ t (- b y))))
          (fma (/ y t_1) (/ t z) (/ a (- b y)))))
        (t_3 (- (fma z b y) (* z y))))
   (if (<= z -1436070.5237032003)
     t_2
     (if (<= z 2.906422781926676e+61)
       (-
        (+ (/ (* z t) (- (+ y (* z b)) (* z y))) (* x (/ y t_3)))
        (/ a (/ t_3 z)))
       t_2))))
double code(double x, double y, double z, double t, double a, double b) {
	return ((x * y) + (z * (t - a))) / (y + (z * (b - y)));
}
double code(double x, double y, double z, double t, double a, double b) {
	double t_1 = pow((b - y), 2.0);
	double t_2 = fma((y / (b - y)), (x / z), fma((a / t_1), (y / z), (t / (b - y)))) - fma((y / t_1), (t / z), (a / (b - y)));
	double t_3 = fma(z, b, y) - (z * y);
	double tmp;
	if (z <= -1436070.5237032003) {
		tmp = t_2;
	} else if (z <= 2.906422781926676e+61) {
		tmp = (((z * t) / ((y + (z * b)) - (z * y))) + (x * (y / t_3))) - (a / (t_3 / z));
	} else {
		tmp = t_2;
	}
	return tmp;
}

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

Target

Original22.8
Target17.1
Herbie2.7
\[\frac{z \cdot t + y \cdot x}{y + z \cdot \left(b - y\right)} - \frac{a}{\left(b - y\right) + \frac{y}{z}} \]

Derivation

  1. Split input into 2 regimes
  2. if z < -1436070.5237032003 or 2.9064227819266759e61 < z

    1. Initial program 40.7

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

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(z, b - y, y\right)}} \]
    3. Taylor expanded in z around inf 22.3

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{{\left(b - y\right)}^{2}}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{{\left(b - y\right)}^{2}}, \frac{t}{z}, \frac{a}{b - y}\right)} \]

    if -1436070.5237032003 < z < 2.9064227819266759e61

    1. Initial program 8.9

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

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(x, y, z \cdot \left(t - a\right)\right)}{\mathsf{fma}\left(z, b - y, y\right)}} \]
    3. Taylor expanded in x around 0 8.9

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

      \[\leadsto \left(\frac{t \cdot z}{\left(y + z \cdot b\right) - y \cdot z} + \frac{y \cdot x}{\left(y + z \cdot b\right) - y \cdot z}\right) - \color{blue}{\frac{a}{1} \cdot \frac{z}{\mathsf{fma}\left(z, b, y\right) - z \cdot y}} \]
    5. Applied egg-rr2.2

      \[\leadsto \left(\frac{t \cdot z}{\left(y + z \cdot b\right) - y \cdot z} + \color{blue}{\frac{x}{1} \cdot \frac{y}{\mathsf{fma}\left(z, b, y\right) - z \cdot y}}\right) - \frac{a}{1} \cdot \frac{z}{\mathsf{fma}\left(z, b, y\right) - z \cdot y} \]
    6. Applied egg-rr2.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -1436070.5237032003:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{{\left(b - y\right)}^{2}}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{{\left(b - y\right)}^{2}}, \frac{t}{z}, \frac{a}{b - y}\right)\\ \mathbf{elif}\;z \leq 2.906422781926676 \cdot 10^{+61}:\\ \;\;\;\;\left(\frac{z \cdot t}{\left(y + z \cdot b\right) - z \cdot y} + x \cdot \frac{y}{\mathsf{fma}\left(z, b, y\right) - z \cdot y}\right) - \frac{a}{\frac{\mathsf{fma}\left(z, b, y\right) - z \cdot y}{z}}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{b - y}, \frac{x}{z}, \mathsf{fma}\left(\frac{a}{{\left(b - y\right)}^{2}}, \frac{y}{z}, \frac{t}{b - y}\right)\right) - \mathsf{fma}\left(\frac{y}{{\left(b - y\right)}^{2}}, \frac{t}{z}, \frac{a}{b - y}\right)\\ \end{array} \]

Reproduce

herbie shell --seed 2022130 
(FPCore (x y z t a b)
  :name "Development.Shake.Progress:decay from shake-0.15.5"
  :precision binary64

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

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