Average Error: 0.0 → 0.0
Time: 4.1s
Precision: binary64
Cost: 6848
\[\frac{x \cdot y}{2} - \frac{z}{8} \]
\[\mathsf{fma}\left(y, x \cdot 0.5, z \cdot -0.125\right) \]
(FPCore (x y z) :precision binary64 (- (/ (* x y) 2.0) (/ z 8.0)))
(FPCore (x y z) :precision binary64 (fma y (* x 0.5) (* z -0.125)))
double code(double x, double y, double z) {
	return ((x * y) / 2.0) - (z / 8.0);
}
double code(double x, double y, double z) {
	return fma(y, (x * 0.5), (z * -0.125));
}
function code(x, y, z)
	return Float64(Float64(Float64(x * y) / 2.0) - Float64(z / 8.0))
end
function code(x, y, z)
	return fma(y, Float64(x * 0.5), Float64(z * -0.125))
end
code[x_, y_, z_] := N[(N[(N[(x * y), $MachinePrecision] / 2.0), $MachinePrecision] - N[(z / 8.0), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_] := N[(y * N[(x * 0.5), $MachinePrecision] + N[(z * -0.125), $MachinePrecision]), $MachinePrecision]
\frac{x \cdot y}{2} - \frac{z}{8}
\mathsf{fma}\left(y, x \cdot 0.5, z \cdot -0.125\right)

Error

Derivation

  1. Initial program 0.0

    \[\frac{x \cdot y}{2} - \frac{z}{8} \]
  2. Applied egg-rr0.0

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

Alternatives

Alternative 1
Error16.0
Cost716
\[\begin{array}{l} t_0 := \left(x \cdot 0.5\right) \cdot y\\ \mathbf{if}\;z \leq -1.9 \cdot 10^{-28}:\\ \;\;\;\;-0.125 \cdot z\\ \mathbf{elif}\;z \leq 1.9 \cdot 10^{-52}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;y \ne 0:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array}\\ \mathbf{else}:\\ \;\;\;\;-0.125 \cdot z\\ \end{array} \]
Alternative 2
Error0.0
Cost576
\[\frac{x \cdot y}{2} - \frac{z}{8} \]
Alternative 3
Error26.8
Cost192
\[-0.125 \cdot z \]

Error

Reproduce

herbie shell --seed 2023010 
(FPCore (x y z)
  :name "Diagrams.Solve.Polynomial:quartForm  from diagrams-solve-0.1, D"
  :precision binary64
  (- (/ (* x y) 2.0) (/ z 8.0)))