Average Error: 7.8 → 0.8
Time: 33.7s
Precision: binary64
Cost: 8204
\[\frac{x \cdot y - z \cdot t}{a} \]
\[\begin{array}{l} t_1 := x \cdot y - z \cdot t\\ \mathbf{if}\;t_1 \leq -5 \cdot 10^{+218}:\\ \;\;\;\;\mathsf{fma}\left(y, \frac{x}{a}, -\frac{z}{a} \cdot t\right)\\ \mathbf{elif}\;t_1 \leq 2 \cdot 10^{+200}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(y, \frac{x}{a}, -\begin{array}{l} \mathbf{if}\;z \ne 0:\\ \;\;\;\;\frac{t}{\frac{a}{z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{z \cdot t}{a}\\ \end{array}\right)\\ \end{array} \]
(FPCore (x y z t a) :precision binary64 (/ (- (* x y) (* z t)) a))
(FPCore (x y z t a)
 :precision binary64
 (let* ((t_1 (- (* x y) (* z t))))
   (if (<= t_1 -5e+218)
     (fma y (/ x a) (- (* (/ z a) t)))
     (if (<= t_1 2e+200)
       (/ (fma x y (- (* z t))) a)
       (fma y (/ x a) (- (if (!= z 0.0) (/ t (/ a z)) (/ (* z t) a))))))))
double code(double x, double y, double z, double t, double a) {
	return ((x * y) - (z * t)) / a;
}
double code(double x, double y, double z, double t, double a) {
	double t_1 = (x * y) - (z * t);
	double tmp;
	if (t_1 <= -5e+218) {
		tmp = fma(y, (x / a), -((z / a) * t));
	} else if (t_1 <= 2e+200) {
		tmp = fma(x, y, -(z * t)) / a;
	} else {
		double tmp_1;
		if (z != 0.0) {
			tmp_1 = t / (a / z);
		} else {
			tmp_1 = (z * t) / a;
		}
		tmp = fma(y, (x / a), -tmp_1);
	}
	return tmp;
}
function code(x, y, z, t, a)
	return Float64(Float64(Float64(x * y) - Float64(z * t)) / a)
end
function code(x, y, z, t, a)
	t_1 = Float64(Float64(x * y) - Float64(z * t))
	tmp = 0.0
	if (t_1 <= -5e+218)
		tmp = fma(y, Float64(x / a), Float64(-Float64(Float64(z / a) * t)));
	elseif (t_1 <= 2e+200)
		tmp = Float64(fma(x, y, Float64(-Float64(z * t))) / a);
	else
		tmp_1 = 0.0
		if (z != 0.0)
			tmp_1 = Float64(t / Float64(a / z));
		else
			tmp_1 = Float64(Float64(z * t) / a);
		end
		tmp = fma(y, Float64(x / a), Float64(-tmp_1));
	end
	return tmp
end
code[x_, y_, z_, t_, a_] := N[(N[(N[(x * y), $MachinePrecision] - N[(z * t), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(x * y), $MachinePrecision] - N[(z * t), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+218], N[(y * N[(x / a), $MachinePrecision] + (-N[(N[(z / a), $MachinePrecision] * t), $MachinePrecision])), $MachinePrecision], If[LessEqual[t$95$1, 2e+200], N[(N[(x * y + (-N[(z * t), $MachinePrecision])), $MachinePrecision] / a), $MachinePrecision], N[(y * N[(x / a), $MachinePrecision] + (-If[Unequal[z, 0.0], N[(t / N[(a / z), $MachinePrecision]), $MachinePrecision], N[(N[(z * t), $MachinePrecision] / a), $MachinePrecision]])), $MachinePrecision]]]]
\frac{x \cdot y - z \cdot t}{a}
\begin{array}{l}
t_1 := x \cdot y - z \cdot t\\
\mathbf{if}\;t_1 \leq -5 \cdot 10^{+218}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{a}, -\frac{z}{a} \cdot t\right)\\

\mathbf{elif}\;t_1 \leq 2 \cdot 10^{+200}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{a}, -\begin{array}{l}
\mathbf{if}\;z \ne 0:\\
\;\;\;\;\frac{t}{\frac{a}{z}}\\

\mathbf{else}:\\
\;\;\;\;\frac{z \cdot t}{a}\\


\end{array}\right)\\


\end{array}

Error

Target

Original7.8
Target6.1
Herbie0.8
\[\begin{array}{l} \mathbf{if}\;z < -2.468684968699548 \cdot 10^{+170}:\\ \;\;\;\;\frac{y}{a} \cdot x - \frac{t}{a} \cdot z\\ \mathbf{elif}\;z < 6.309831121978371 \cdot 10^{-71}:\\ \;\;\;\;\frac{x \cdot y - z \cdot t}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{y}{a} \cdot x - \frac{t}{a} \cdot z\\ \end{array} \]

Derivation

  1. Split input into 3 regimes
  2. if (-.f64 (*.f64 x y) (*.f64 z t)) < -4.99999999999999983e218

    1. Initial program 31.6

      \[\frac{x \cdot y - z \cdot t}{a} \]
    2. Applied egg-rr15.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(y, \frac{x}{a}, -\frac{z \cdot t}{a}\right)} \]
    3. Applied egg-rr0.8

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

    if -4.99999999999999983e218 < (-.f64 (*.f64 x y) (*.f64 z t)) < 1.9999999999999999e200

    1. Initial program 0.8

      \[\frac{x \cdot y - z \cdot t}{a} \]
    2. Simplified0.8

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

    if 1.9999999999999999e200 < (-.f64 (*.f64 x y) (*.f64 z t))

    1. Initial program 28.4

      \[\frac{x \cdot y - z \cdot t}{a} \]
    2. Applied egg-rr15.4

      \[\leadsto \color{blue}{\mathsf{fma}\left(y, \frac{x}{a}, -\frac{z \cdot t}{a}\right)} \]
    3. Applied egg-rr0.9

      \[\leadsto \mathsf{fma}\left(y, \frac{x}{a}, -\color{blue}{\begin{array}{l} \color{blue}{\mathbf{if}\;z \ne 0:\\ \;\;\;\;\frac{t}{\frac{a}{z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{z \cdot t}{a}\\ } \end{array}}\right) \]
  3. Recombined 3 regimes into one program.

Alternatives

Alternative 1
Error4.7
Cost8200
\[\begin{array}{l} t_1 := \frac{x \cdot y - z \cdot t}{a}\\ \mathbf{if}\;t_1 \leq -\infty:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;\frac{x}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \end{array}\\ \mathbf{elif}\;t_1 \leq 10^{+304}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(a \cdot \left(-\frac{\frac{z}{a}}{a}\right)\right)\\ \end{array} \]
Alternative 2
Error0.8
Cost8072
\[\begin{array}{l} t_1 := x \cdot y - z \cdot t\\ t_2 := \mathsf{fma}\left(y, \frac{x}{a}, -\frac{t}{a} \cdot z\right)\\ \mathbf{if}\;t_1 \leq -5 \cdot 10^{+218}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t_1 \leq 5 \cdot 10^{+241}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 3
Error0.8
Cost8072
\[\begin{array}{l} t_1 := x \cdot y - z \cdot t\\ t_2 := \mathsf{fma}\left(y, \frac{x}{a}, -\frac{z}{a} \cdot t\right)\\ \mathbf{if}\;t_1 \leq -5 \cdot 10^{+218}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t_1 \leq 5 \cdot 10^{+241}:\\ \;\;\;\;\frac{\mathsf{fma}\left(x, y, -z \cdot t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 4
Error26.6
Cost2168
\[\begin{array}{l} t_1 := \frac{y \cdot x}{a}\\ t_2 := \frac{-t \cdot z}{a}\\ t_3 := \frac{y}{a} \cdot x\\ t_4 := \begin{array}{l} \mathbf{if}\;x \ne 0:\\ \;\;\;\;\frac{y}{\frac{a}{x}}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array}\\ \mathbf{if}\;t \leq -3.5 \cdot 10^{+135}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -6.7 \cdot 10^{+99}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq -1.95 \cdot 10^{+23}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -1.1 \cdot 10^{-20}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq -1.4 \cdot 10^{-35}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -2.8 \cdot 10^{-113}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq -4.4 \cdot 10^{-122}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -1.55 \cdot 10^{-183}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -2.05 \cdot 10^{-191}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 5.2 \cdot 10^{-198}:\\ \;\;\;\;\frac{x}{a} \cdot y\\ \mathbf{elif}\;t \leq 1.55 \cdot 10^{-14}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq 8.5 \cdot 10^{+24}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 7.2 \cdot 10^{+52}:\\ \;\;\;\;t_4\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 5
Error26.6
Cost2168
\[\begin{array}{l} t_1 := \frac{y \cdot x}{a}\\ t_2 := \begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;\frac{x}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array}\\ t_3 := \begin{array}{l} \mathbf{if}\;x \ne 0:\\ \;\;\;\;\frac{y}{\frac{a}{x}}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array}\\ t_4 := \frac{-t \cdot z}{a}\\ \mathbf{if}\;t \leq -1.68 \cdot 10^{+134}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq -3.2 \cdot 10^{+97}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -1.85 \cdot 10^{+22}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq -1.15 \cdot 10^{-20}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -5.2 \cdot 10^{-34}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq -2.6 \cdot 10^{-112}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq -6 \cdot 10^{-122}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq -7.2 \cdot 10^{-183}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -1.35 \cdot 10^{-191}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq 1.9 \cdot 10^{-200}:\\ \;\;\;\;\frac{x}{a} \cdot y\\ \mathbf{elif}\;t \leq 1.4 \cdot 10^{-16}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 3.4 \cdot 10^{+23}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;t \leq 3.4 \cdot 10^{+52}:\\ \;\;\;\;t_3\\ \mathbf{else}:\\ \;\;\;\;t_4\\ \end{array} \]
Alternative 6
Error26.6
Cost2100
\[\begin{array}{l} t_1 := \frac{-t \cdot z}{a}\\ t_2 := \frac{y}{a} \cdot x\\ t_3 := \frac{x}{a} \cdot y\\ \mathbf{if}\;t \leq -1.68 \cdot 10^{+134}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -4.1 \cdot 10^{+99}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -6.5 \cdot 10^{+24}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -1.1 \cdot 10^{-20}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -1.35 \cdot 10^{-34}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -2.8 \cdot 10^{-113}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq -3.3 \cdot 10^{-122}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq -1.55 \cdot 10^{-183}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \mathbf{elif}\;t \leq -2.3 \cdot 10^{-191}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 3.4 \cdot 10^{-197}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;t \leq 5.2 \cdot 10^{-14}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 6.2 \cdot 10^{+23}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 2 \cdot 10^{+53}:\\ \;\;\;\;t_3\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 7
Error4.7
Cost1928
\[\begin{array}{l} t_1 := \frac{x \cdot y - z \cdot t}{a}\\ \mathbf{if}\;t_1 \leq -\infty:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;\frac{x}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \end{array}\\ \mathbf{elif}\;t_1 \leq 10^{+304}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;a \cdot \left(t \cdot \left(-\frac{\frac{z}{a}}{a}\right)\right)\\ \end{array} \]
Alternative 8
Error4.7
Cost1928
\[\begin{array}{l} t_1 := \frac{x \cdot y - z \cdot t}{a}\\ \mathbf{if}\;t_1 \leq -\infty:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;\frac{x}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \end{array}\\ \mathbf{elif}\;t_1 \leq 10^{+304}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(a \cdot \left(-\frac{\frac{z}{a}}{a}\right)\right)\\ \end{array} \]
Alternative 9
Error4.2
Cost1608
\[\begin{array}{l} t_1 := x \cdot y - z \cdot t\\ \mathbf{if}\;t_1 \leq -\infty:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;\frac{x}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \end{array}\\ \mathbf{elif}\;t_1 \leq 4 \cdot 10^{+299}:\\ \;\;\;\;\frac{t_1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{y}{a} \cdot x\\ \end{array} \]
Alternative 10
Error30.7
Cost584
\[\begin{array}{l} t_1 := \frac{y}{a} \cdot x\\ \mathbf{if}\;x \leq -1.75 \cdot 10^{+65}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;x \leq 10^{-90}:\\ \;\;\;\;\frac{y \cdot x}{a}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 11
Error32.0
Cost452
\[\begin{array}{l} \mathbf{if}\;y \leq 7.2 \cdot 10^{+71}:\\ \;\;\;\;\frac{y}{a} \cdot x\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{a} \cdot y\\ \end{array} \]
Alternative 12
Error32.2
Cost320
\[\frac{x}{a} \cdot y \]

Error

Reproduce

herbie shell --seed 2023010 
(FPCore (x y z t a)
  :name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
  :precision binary64

  :herbie-target
  (if (< z -2.468684968699548e+170) (- (* (/ y a) x) (* (/ t a) z)) (if (< z 6.309831121978371e-71) (/ (- (* x y) (* z t)) a) (- (* (/ y a) x) (* (/ t a) z))))

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