?

Average Error: 0.02% → 0%
Time: 4.5s
Precision: binary64
Cost: 6848

?

\[\frac{x \cdot y}{2} - \frac{z}{8} \]
\[\mathsf{fma}\left(x, \frac{y}{2}, \frac{z}{-8}\right) \]
(FPCore (x y z) :precision binary64 (- (/ (* x y) 2.0) (/ z 8.0)))
(FPCore (x y z) :precision binary64 (fma x (/ y 2.0) (/ z -8.0)))
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(x, (y / 2.0), (z / -8.0));
}
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(x, Float64(y / 2.0), Float64(z / -8.0))
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[(x * N[(y / 2.0), $MachinePrecision] + N[(z / -8.0), $MachinePrecision]), $MachinePrecision]
\frac{x \cdot y}{2} - \frac{z}{8}
\mathsf{fma}\left(x, \frac{y}{2}, \frac{z}{-8}\right)

Error?

Derivation?

  1. Initial program 0.02

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

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

    [Start]0.02

    \[ \frac{x \cdot y}{2} - \frac{z}{8} \]

    associate-*r/ [<=]0.01

    \[ \color{blue}{x \cdot \frac{y}{2}} - \frac{z}{8} \]

    fma-neg [=>]0

    \[ \color{blue}{\mathsf{fma}\left(x, \frac{y}{2}, -\frac{z}{8}\right)} \]

    distribute-neg-frac [=>]0

    \[ \mathsf{fma}\left(x, \frac{y}{2}, \color{blue}{\frac{-z}{8}}\right) \]

    neg-mul-1 [=>]0

    \[ \mathsf{fma}\left(x, \frac{y}{2}, \frac{\color{blue}{-1 \cdot z}}{8}\right) \]

    *-commutative [=>]0

    \[ \mathsf{fma}\left(x, \frac{y}{2}, \frac{\color{blue}{z \cdot -1}}{8}\right) \]

    associate-/l* [=>]0

    \[ \mathsf{fma}\left(x, \frac{y}{2}, \color{blue}{\frac{z}{\frac{8}{-1}}}\right) \]

    metadata-eval [=>]0

    \[ \mathsf{fma}\left(x, \frac{y}{2}, \frac{z}{\color{blue}{-8}}\right) \]
  3. Final simplification0

    \[\leadsto \mathsf{fma}\left(x, \frac{y}{2}, \frac{z}{-8}\right) \]

Alternatives

Alternative 1
Error26.43%
Cost849
\[\begin{array}{l} \mathbf{if}\;z \leq -7 \cdot 10^{-44}:\\ \;\;\;\;z \cdot -0.125\\ \mathbf{elif}\;z \leq -3.9 \cdot 10^{-131} \lor \neg \left(z \leq -1.8 \cdot 10^{-184}\right) \land z \leq 1.25 \cdot 10^{-25}:\\ \;\;\;\;y \cdot \left(x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;z \cdot -0.125\\ \end{array} \]
Alternative 2
Error0.19%
Cost576
\[\frac{x}{\frac{2}{y}} - \frac{z}{8} \]
Alternative 3
Error0.18%
Cost576
\[\frac{y}{\frac{2}{x}} - \frac{z}{8} \]
Alternative 4
Error0.02%
Cost576
\[\frac{x \cdot y}{2} - \frac{z}{8} \]
Alternative 5
Error42.65%
Cost192
\[z \cdot -0.125 \]

Error

Reproduce?

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