Average Error: 0.0 → 0.0
Time: 4.0s
Precision: 64
\[\left(x + \sin y\right) + z \cdot \cos y\]
\[x + \mathsf{fma}\left(\cos y, z, \sin y\right)\]
\left(x + \sin y\right) + z \cdot \cos y
x + \mathsf{fma}\left(\cos y, z, \sin y\right)
double f(double x, double y, double z) {
        double r142598 = x;
        double r142599 = y;
        double r142600 = sin(r142599);
        double r142601 = r142598 + r142600;
        double r142602 = z;
        double r142603 = cos(r142599);
        double r142604 = r142602 * r142603;
        double r142605 = r142601 + r142604;
        return r142605;
}

double f(double x, double y, double z) {
        double r142606 = x;
        double r142607 = y;
        double r142608 = cos(r142607);
        double r142609 = z;
        double r142610 = sin(r142607);
        double r142611 = fma(r142608, r142609, r142610);
        double r142612 = r142606 + r142611;
        return r142612;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.0

    \[\left(x + \sin y\right) + z \cdot \cos y\]
  2. Using strategy rm
  3. Applied associate-+l+0.0

    \[\leadsto \color{blue}{x + \left(\sin y + z \cdot \cos y\right)}\]
  4. Simplified0.0

    \[\leadsto x + \color{blue}{\mathsf{fma}\left(\cos y, z, \sin y\right)}\]
  5. Final simplification0.0

    \[\leadsto x + \mathsf{fma}\left(\cos y, z, \sin y\right)\]

Reproduce

herbie shell --seed 2019346 +o rules:numerics
(FPCore (x y z)
  :name "Graphics.Rasterific.Svg.PathConverter:segmentToBezier from rasterific-svg-0.2.3.1, C"
  :precision binary64
  (+ (+ x (sin y)) (* z (cos y))))