Average Error: 0.1 → 0.6
Time: 56.5s
Precision: 64
\[x \cdot \cos y + z \cdot \sin y\]
\[\mathsf{fma}\left(x, \cos y, \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt[3]{\sin y} \cdot \sqrt[3]{\sin y}\right)\right) \cdot \left(z \cdot \sqrt[3]{\sin y}\right)\right)\]
x \cdot \cos y + z \cdot \sin y
\mathsf{fma}\left(x, \cos y, \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt[3]{\sin y} \cdot \sqrt[3]{\sin y}\right)\right) \cdot \left(z \cdot \sqrt[3]{\sin y}\right)\right)
double f(double x, double y, double z) {
        double r10818795 = x;
        double r10818796 = y;
        double r10818797 = cos(r10818796);
        double r10818798 = r10818795 * r10818797;
        double r10818799 = z;
        double r10818800 = sin(r10818796);
        double r10818801 = r10818799 * r10818800;
        double r10818802 = r10818798 + r10818801;
        return r10818802;
}

double f(double x, double y, double z) {
        double r10818803 = x;
        double r10818804 = y;
        double r10818805 = cos(r10818804);
        double r10818806 = sin(r10818804);
        double r10818807 = cbrt(r10818806);
        double r10818808 = r10818807 * r10818807;
        double r10818809 = log1p(r10818808);
        double r10818810 = expm1(r10818809);
        double r10818811 = z;
        double r10818812 = r10818811 * r10818807;
        double r10818813 = r10818810 * r10818812;
        double r10818814 = fma(r10818803, r10818805, r10818813);
        return r10818814;
}

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, \sin y \cdot z\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.6

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

    \[\leadsto \mathsf{fma}\left(x, \cos y, \color{blue}{\left(\sqrt[3]{\sin y} \cdot \sqrt[3]{\sin y}\right) \cdot \left(\sqrt[3]{\sin y} \cdot z\right)}\right)\]
  6. Using strategy rm
  7. Applied expm1-log1p-u0.6

    \[\leadsto \mathsf{fma}\left(x, \cos y, \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt[3]{\sin y} \cdot \sqrt[3]{\sin y}\right)\right)} \cdot \left(\sqrt[3]{\sin y} \cdot z\right)\right)\]
  8. Final simplification0.6

    \[\leadsto \mathsf{fma}\left(x, \cos y, \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt[3]{\sin y} \cdot \sqrt[3]{\sin y}\right)\right) \cdot \left(z \cdot \sqrt[3]{\sin y}\right)\right)\]

Reproduce

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