Average Error: 0.1 → 0.1
Time: 12.9s
Precision: binary64
Cost: 13376
\[x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right) \]
\[\mathsf{fma}\left(\left(1 - z\right) + \log z, y, x \cdot 0.5\right) \]
(FPCore (x y z) :precision binary64 (+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))
(FPCore (x y z) :precision binary64 (fma (+ (- 1.0 z) (log z)) y (* x 0.5)))
double code(double x, double y, double z) {
	return (x * 0.5) + (y * ((1.0 - z) + log(z)));
}
double code(double x, double y, double z) {
	return fma(((1.0 - z) + log(z)), y, (x * 0.5));
}
function code(x, y, z)
	return Float64(Float64(x * 0.5) + Float64(y * Float64(Float64(1.0 - z) + log(z))))
end
function code(x, y, z)
	return fma(Float64(Float64(1.0 - z) + log(z)), y, Float64(x * 0.5))
end
code[x_, y_, z_] := N[(N[(x * 0.5), $MachinePrecision] + N[(y * N[(N[(1.0 - z), $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_] := N[(N[(N[(1.0 - z), $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision] * y + N[(x * 0.5), $MachinePrecision]), $MachinePrecision]
x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\mathsf{fma}\left(\left(1 - z\right) + \log z, y, x \cdot 0.5\right)

Error

Target

Original0.1
Target0.1
Herbie0.1
\[\left(y + 0.5 \cdot x\right) - y \cdot \left(z - \log z\right) \]

Derivation

  1. Initial program 0.1

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

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

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

Alternatives

Alternative 1
Error18.2
Cost7972
\[\begin{array}{l} t_0 := y \cdot \left(1 + \log z\right)\\ t_1 := x \cdot 0.5 - z \cdot y\\ \mathbf{if}\;z \leq 3.3 \cdot 10^{-252}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 5.3 \cdot 10^{-229}:\\ \;\;\;\;x \cdot 0.5\\ \mathbf{elif}\;z \leq 1.1 \cdot 10^{-206}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 3.5 \cdot 10^{-117}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq 5.2 \cdot 10^{-100}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 6.5 \cdot 10^{-84}:\\ \;\;\;\;x \cdot 0.5\\ \mathbf{elif}\;z \leq 1.38 \cdot 10^{-64}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 1.6 \cdot 10^{-49}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq 7.2 \cdot 10^{-26}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-z, y, x \cdot 0.5\right)\\ \end{array} \]
Alternative 2
Error18.1
Cost7909
\[\begin{array}{l} t_0 := y \cdot \left(1 + \log z\right)\\ t_1 := x \cdot 0.5 - z \cdot y\\ \mathbf{if}\;z \leq 2 \cdot 10^{-251}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 8.5 \cdot 10^{-229}:\\ \;\;\;\;x \cdot 0.5\\ \mathbf{elif}\;z \leq 2.2 \cdot 10^{-206}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 2.8 \cdot 10^{-117}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq 2.2 \cdot 10^{-110}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 3.2 \cdot 10^{-84}:\\ \;\;\;\;x \cdot 0.5\\ \mathbf{elif}\;z \leq 1.26 \cdot 10^{-64} \lor \neg \left(z \leq 1.2 \cdot 10^{-49}\right) \land z \leq 1.2 \cdot 10^{-25}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Error10.5
Cost7369
\[\begin{array}{l} \mathbf{if}\;x \cdot 0.5 \leq -1 \cdot 10^{-101} \lor \neg \left(x \cdot 0.5 \leq 4 \cdot 10^{-32}\right):\\ \;\;\;\;\mathsf{fma}\left(-z, y, x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;y \cdot \left(\left(1 + \log z\right) - z\right)\\ \end{array} \]
Alternative 4
Error0.8
Cost7108
\[\begin{array}{l} \mathbf{if}\;z \leq 0.0175:\\ \;\;\;\;x \cdot 0.5 + y \cdot \left(1 + \log z\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-z, y, x \cdot 0.5\right)\\ \end{array} \]
Alternative 5
Error0.1
Cost7104
\[x \cdot 0.5 + \left(\left(1 - z\right) + \log z\right) \cdot y \]
Alternative 6
Error28.1
Cost786
\[\begin{array}{l} \mathbf{if}\;x \leq -3.5 \cdot 10^{+14} \lor \neg \left(x \leq -7.5 \cdot 10^{-22}\right) \land \left(x \leq -7.6 \cdot 10^{-38} \lor \neg \left(x \leq 40000\right)\right):\\ \;\;\;\;x \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;z \cdot \left(-y\right)\\ \end{array} \]
Alternative 7
Error17.7
Cost448
\[x \cdot 0.5 - z \cdot y \]
Alternative 8
Error34.2
Cost192
\[x \cdot 0.5 \]
Alternative 9
Error62.6
Cost64
\[y \]

Error

Reproduce

herbie shell --seed 2022364 
(FPCore (x y z)
  :name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
  :precision binary64

  :herbie-target
  (- (+ y (* 0.5 x)) (* y (- z (log z))))

  (+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))