Average Error: 0.1 → 0.1
Time: 22.0s
Precision: 64
\[x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)\]
\[\mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\left(z - \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right), \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt{z}}\right), \log \left(\sqrt{z}\right)\right)\right)\right) - \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right)\right)\right) \cdot y\right)\]
x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\left(z - \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right), \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt{z}}\right), \log \left(\sqrt{z}\right)\right)\right)\right) - \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right)\right)\right) \cdot y\right)
double f(double x, double y, double z) {
        double r11284812 = x;
        double r11284813 = 0.5;
        double r11284814 = r11284812 * r11284813;
        double r11284815 = y;
        double r11284816 = 1.0;
        double r11284817 = z;
        double r11284818 = r11284816 - r11284817;
        double r11284819 = log(r11284817);
        double r11284820 = r11284818 + r11284819;
        double r11284821 = r11284815 * r11284820;
        double r11284822 = r11284814 + r11284821;
        return r11284822;
}

double f(double x, double y, double z) {
        double r11284823 = x;
        double r11284824 = 0.5;
        double r11284825 = 1.0;
        double r11284826 = z;
        double r11284827 = 2.0;
        double r11284828 = sqrt(r11284826);
        double r11284829 = cbrt(r11284828);
        double r11284830 = cbrt(r11284829);
        double r11284831 = log(r11284830);
        double r11284832 = log(r11284829);
        double r11284833 = log(r11284828);
        double r11284834 = fma(r11284827, r11284832, r11284833);
        double r11284835 = fma(r11284827, r11284831, r11284834);
        double r11284836 = r11284826 - r11284835;
        double r11284837 = r11284836 - r11284831;
        double r11284838 = r11284825 - r11284837;
        double r11284839 = y;
        double r11284840 = r11284838 * r11284839;
        double r11284841 = fma(r11284823, r11284824, r11284840);
        return r11284841;
}

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.0 - z\right) + \log z\right)\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, 0.5, \left(1.0 - \left(z - \log z\right)\right) \cdot y\right)}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.1

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

    \[\leadsto \mathsf{fma}\left(x, 0.5, \left(1.0 - \left(z - \color{blue}{\left(\log \left(\sqrt{z}\right) + \log \left(\sqrt{z}\right)\right)}\right)\right) \cdot y\right)\]
  6. Applied associate--r+0.1

    \[\leadsto \mathsf{fma}\left(x, 0.5, \left(1.0 - \color{blue}{\left(\left(z - \log \left(\sqrt{z}\right)\right) - \log \left(\sqrt{z}\right)\right)}\right) \cdot y\right)\]
  7. Using strategy rm
  8. Applied add-cube-cbrt0.1

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

    \[\leadsto \mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\left(z - \log \left(\sqrt{z}\right)\right) - \color{blue}{\left(\log \left(\sqrt[3]{\sqrt{z}} \cdot \sqrt[3]{\sqrt{z}}\right) + \log \left(\sqrt[3]{\sqrt{z}}\right)\right)}\right)\right) \cdot y\right)\]
  10. Applied associate--r+0.1

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

    \[\leadsto \mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\color{blue}{\left(z - \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt{z}}\right), \log \left(\sqrt{z}\right)\right)\right)} - \log \left(\sqrt[3]{\sqrt{z}}\right)\right)\right) \cdot y\right)\]
  12. Using strategy rm
  13. Applied add-cube-cbrt0.1

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

    \[\leadsto \mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\left(z - \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt{z}}\right), \log \left(\sqrt{z}\right)\right)\right) - \color{blue}{\left(\log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{z}}}\right) + \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right)\right)}\right)\right) \cdot y\right)\]
  15. Applied associate--r+0.1

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

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

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

Reproduce

herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z)
  :name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"

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

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