Average Error: 0.0 → 0.0
Time: 3.0s
Precision: binary64
\[ \begin{array}{c}[x, y] = \mathsf{sort}([x, y])\\ \end{array} \]
\[\left(x + y\right) \cdot \left(1 - z\right) \]
\[y - \mathsf{fma}\left(z, y, \left(z + -1\right) \cdot x\right) \]
(FPCore (x y z) :precision binary64 (* (+ x y) (- 1.0 z)))
(FPCore (x y z) :precision binary64 (- y (fma z y (* (+ z -1.0) x))))
double code(double x, double y, double z) {
	return (x + y) * (1.0 - z);
}
double code(double x, double y, double z) {
	return y - fma(z, y, ((z + -1.0) * x));
}
function code(x, y, z)
	return Float64(Float64(x + y) * Float64(1.0 - z))
end
function code(x, y, z)
	return Float64(y - fma(z, y, Float64(Float64(z + -1.0) * x)))
end
code[x_, y_, z_] := N[(N[(x + y), $MachinePrecision] * N[(1.0 - z), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_] := N[(y - N[(z * y + N[(N[(z + -1.0), $MachinePrecision] * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\left(x + y\right) \cdot \left(1 - z\right)
y - \mathsf{fma}\left(z, y, \left(z + -1\right) \cdot x\right)

Error

Derivation

  1. Initial program 0.0

    \[\left(x + y\right) \cdot \left(1 - z\right) \]
  2. Applied egg-rr0.0

    \[\leadsto \color{blue}{\left(x + y\right) + \left(x + y\right) \cdot \left(-z\right)} \]
  3. Taylor expanded in x around -inf 0.0

    \[\leadsto \color{blue}{y + \left(-1 \cdot \left(y \cdot z\right) + -1 \cdot \left(\left(z - 1\right) \cdot x\right)\right)} \]
  4. Applied egg-rr0.0

    \[\leadsto y + \color{blue}{\left(-\mathsf{fma}\left(z, y, \left(z + -1\right) \cdot x\right)\right)} \]
  5. Final simplification0.0

    \[\leadsto y - \mathsf{fma}\left(z, y, \left(z + -1\right) \cdot x\right) \]

Reproduce

herbie shell --seed 2022210 
(FPCore (x y z)
  :name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, H"
  :precision binary64
  (* (+ x y) (- 1.0 z)))