Average Error: 0.1 → 0.3
Time: 18.8s
Precision: 64
\[x \cdot \cos y + z \cdot \sin y\]
\[\mathsf{fma}\left(z, \sin y, \left(x \cdot \sqrt[3]{{\left(\cos y\right)}^{2}}\right) \cdot \log \left(e^{\sqrt[3]{\cos y}}\right)\right)\]
x \cdot \cos y + z \cdot \sin y
\mathsf{fma}\left(z, \sin y, \left(x \cdot \sqrt[3]{{\left(\cos y\right)}^{2}}\right) \cdot \log \left(e^{\sqrt[3]{\cos y}}\right)\right)
double f(double x, double y, double z) {
        double r204771 = x;
        double r204772 = y;
        double r204773 = cos(r204772);
        double r204774 = r204771 * r204773;
        double r204775 = z;
        double r204776 = sin(r204772);
        double r204777 = r204775 * r204776;
        double r204778 = r204774 + r204777;
        return r204778;
}

double f(double x, double y, double z) {
        double r204779 = z;
        double r204780 = y;
        double r204781 = sin(r204780);
        double r204782 = x;
        double r204783 = cos(r204780);
        double r204784 = 2.0;
        double r204785 = pow(r204783, r204784);
        double r204786 = cbrt(r204785);
        double r204787 = r204782 * r204786;
        double r204788 = cbrt(r204783);
        double r204789 = exp(r204788);
        double r204790 = log(r204789);
        double r204791 = r204787 * r204790;
        double r204792 = fma(r204779, r204781, r204791);
        return r204792;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.1

    \[x \cdot \cos y + z \cdot \sin y\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, \cos y, z \cdot \sin y\right)}\]
  3. Taylor expanded around inf 0.1

    \[\leadsto \color{blue}{x \cdot \cos y + \sin y \cdot z}\]
  4. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(z, \sin y, x \cdot \cos y\right)}\]
  5. Using strategy rm
  6. Applied add-cube-cbrt0.4

    \[\leadsto \mathsf{fma}\left(z, \sin y, x \cdot \color{blue}{\left(\left(\sqrt[3]{\cos y} \cdot \sqrt[3]{\cos y}\right) \cdot \sqrt[3]{\cos y}\right)}\right)\]
  7. Applied associate-*r*0.4

    \[\leadsto \mathsf{fma}\left(z, \sin y, \color{blue}{\left(x \cdot \left(\sqrt[3]{\cos y} \cdot \sqrt[3]{\cos y}\right)\right) \cdot \sqrt[3]{\cos y}}\right)\]
  8. Using strategy rm
  9. Applied cbrt-unprod0.3

    \[\leadsto \mathsf{fma}\left(z, \sin y, \left(x \cdot \color{blue}{\sqrt[3]{\cos y \cdot \cos y}}\right) \cdot \sqrt[3]{\cos y}\right)\]
  10. Simplified0.3

    \[\leadsto \mathsf{fma}\left(z, \sin y, \left(x \cdot \sqrt[3]{\color{blue}{{\left(\cos y\right)}^{2}}}\right) \cdot \sqrt[3]{\cos y}\right)\]
  11. Using strategy rm
  12. Applied add-log-exp0.3

    \[\leadsto \mathsf{fma}\left(z, \sin y, \left(x \cdot \sqrt[3]{{\left(\cos y\right)}^{2}}\right) \cdot \color{blue}{\log \left(e^{\sqrt[3]{\cos y}}\right)}\right)\]
  13. Final simplification0.3

    \[\leadsto \mathsf{fma}\left(z, \sin y, \left(x \cdot \sqrt[3]{{\left(\cos y\right)}^{2}}\right) \cdot \log \left(e^{\sqrt[3]{\cos y}}\right)\right)\]

Reproduce

herbie shell --seed 2019209 +o rules:numerics
(FPCore (x y z)
  :name "Diagrams.ThreeD.Transform:aboutY from diagrams-lib-1.3.0.3"
  :precision binary64
  (+ (* x (cos y)) (* z (sin y))))