Average Error: 0.1 → 0.1
Time: 18.7s
Precision: binary64
\[x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right) \]
\[\mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \log \left({\left({z}^{\left(\sqrt{0.6666666666666666}\right)}\right)}^{\left(\sqrt{0.6666666666666666}\right)} \cdot {\left(\sqrt[3]{-1}\right)}^{2}\right), y\right) + y \cdot \left(\log \left(\sqrt[3]{-1} \cdot \sqrt[3]{-z}\right) - z\right)\right) \]
x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \log \left({\left({z}^{\left(\sqrt{0.6666666666666666}\right)}\right)}^{\left(\sqrt{0.6666666666666666}\right)} \cdot {\left(\sqrt[3]{-1}\right)}^{2}\right), y\right) + y \cdot \left(\log \left(\sqrt[3]{-1} \cdot \sqrt[3]{-z}\right) - z\right)\right)
(FPCore (x y z) :precision binary64 (+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))
(FPCore (x y z)
 :precision binary64
 (fma
  x
  0.5
  (+
   (fma
    y
    (log
     (*
      (pow (pow z (sqrt 0.6666666666666666)) (sqrt 0.6666666666666666))
      (pow (cbrt -1.0) 2.0)))
    y)
   (* y (- (log (* (cbrt -1.0) (cbrt (- z)))) z)))))
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(x, 0.5, (fma(y, log((pow(pow(z, sqrt(0.6666666666666666)), sqrt(0.6666666666666666)) * pow(cbrt(-1.0), 2.0))), y) + (y * (log((cbrt(-1.0) * cbrt(-z))) - z))));
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

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. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \log z - z, y\right)\right)} \]
  3. Applied add-cube-cbrt_binary640.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \log \color{blue}{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}\right)} - z, y\right)\right) \]
  4. Applied log-prod_binary640.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \color{blue}{\left(\log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) + \log \left(\sqrt[3]{z}\right)\right)} - z, y\right)\right) \]
  5. Applied associate--l+_binary640.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \color{blue}{\log \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) + \left(\log \left(\sqrt[3]{z}\right) - z\right)}, y\right)\right) \]
  6. Taylor expanded in z around -inf 64.0

    \[\leadsto \mathsf{fma}\left(x, 0.5, \color{blue}{\left(\log \left({\left(-1 \cdot z\right)}^{0.3333333333333333} \cdot \sqrt[3]{-1}\right) \cdot y + \left(y \cdot \log \left({\left(\sqrt[3]{-1}\right)}^{2} \cdot {\left({z}^{2}\right)}^{0.3333333333333333}\right) + y\right)\right) - y \cdot z}\right) \]
  7. Simplified0.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \color{blue}{\mathsf{fma}\left(y, \log \left({z}^{0.6666666666666666} \cdot {\left(\sqrt[3]{-1}\right)}^{2}\right), y\right) + y \cdot \left(\log \left(\sqrt[3]{-1} \cdot \sqrt[3]{-z}\right) - z\right)}\right) \]
  8. Applied add-sqr-sqrt_binary640.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \mathsf{fma}\left(y, \log \left({z}^{\color{blue}{\left(\sqrt{0.6666666666666666} \cdot \sqrt{0.6666666666666666}\right)}} \cdot {\left(\sqrt[3]{-1}\right)}^{2}\right), y\right) + y \cdot \left(\log \left(\sqrt[3]{-1} \cdot \sqrt[3]{-z}\right) - z\right)\right) \]
  9. Applied pow-unpow_binary640.1

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

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

Reproduce

herbie shell --seed 2022125 
(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)))))