Average Error: 0.4 → 0.4
Time: 46.8s
Precision: 64
\[\frac{2.0 + \left(\left(\sqrt{2.0} \cdot \left(\sin x - \frac{\sin y}{16.0}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16.0}\right)\right) \cdot \left(\cos x - \cos y\right)}{3.0 \cdot \left(\left(1.0 + \frac{\sqrt{5.0} - 1.0}{2.0} \cdot \cos x\right) + \frac{3.0 - \sqrt{5.0}}{2.0} \cdot \cos y\right)}\]
\[\frac{\mathsf{fma}\left(\left(\left(\left(\cos x - \cos y\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \left(\sin x - \frac{\sin y}{16.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{3.0 \cdot \mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{\sqrt{5.0} + 3.0}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right)}\]
\frac{2.0 + \left(\left(\sqrt{2.0} \cdot \left(\sin x - \frac{\sin y}{16.0}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16.0}\right)\right) \cdot \left(\cos x - \cos y\right)}{3.0 \cdot \left(\left(1.0 + \frac{\sqrt{5.0} - 1.0}{2.0} \cdot \cos x\right) + \frac{3.0 - \sqrt{5.0}}{2.0} \cdot \cos y\right)}
\frac{\mathsf{fma}\left(\left(\left(\left(\cos x - \cos y\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \left(\sin x - \frac{\sin y}{16.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{3.0 \cdot \mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{\sqrt{5.0} + 3.0}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right)}
double f(double x, double y) {
        double r10728243 = 2.0;
        double r10728244 = sqrt(r10728243);
        double r10728245 = x;
        double r10728246 = sin(r10728245);
        double r10728247 = y;
        double r10728248 = sin(r10728247);
        double r10728249 = 16.0;
        double r10728250 = r10728248 / r10728249;
        double r10728251 = r10728246 - r10728250;
        double r10728252 = r10728244 * r10728251;
        double r10728253 = r10728246 / r10728249;
        double r10728254 = r10728248 - r10728253;
        double r10728255 = r10728252 * r10728254;
        double r10728256 = cos(r10728245);
        double r10728257 = cos(r10728247);
        double r10728258 = r10728256 - r10728257;
        double r10728259 = r10728255 * r10728258;
        double r10728260 = r10728243 + r10728259;
        double r10728261 = 3.0;
        double r10728262 = 1.0;
        double r10728263 = 5.0;
        double r10728264 = sqrt(r10728263);
        double r10728265 = r10728264 - r10728262;
        double r10728266 = r10728265 / r10728243;
        double r10728267 = r10728266 * r10728256;
        double r10728268 = r10728262 + r10728267;
        double r10728269 = r10728261 - r10728264;
        double r10728270 = r10728269 / r10728243;
        double r10728271 = r10728270 * r10728257;
        double r10728272 = r10728268 + r10728271;
        double r10728273 = r10728261 * r10728272;
        double r10728274 = r10728260 / r10728273;
        return r10728274;
}

double f(double x, double y) {
        double r10728275 = x;
        double r10728276 = cos(r10728275);
        double r10728277 = y;
        double r10728278 = cos(r10728277);
        double r10728279 = r10728276 - r10728278;
        double r10728280 = 2.0;
        double r10728281 = sqrt(r10728280);
        double r10728282 = sqrt(r10728281);
        double r10728283 = r10728279 * r10728282;
        double r10728284 = r10728283 * r10728282;
        double r10728285 = sin(r10728275);
        double r10728286 = sin(r10728277);
        double r10728287 = 16.0;
        double r10728288 = r10728286 / r10728287;
        double r10728289 = r10728285 - r10728288;
        double r10728290 = r10728284 * r10728289;
        double r10728291 = r10728285 / r10728287;
        double r10728292 = r10728286 - r10728291;
        double r10728293 = fma(r10728290, r10728292, r10728280);
        double r10728294 = 3.0;
        double r10728295 = r10728294 * r10728294;
        double r10728296 = 5.0;
        double r10728297 = r10728295 - r10728296;
        double r10728298 = sqrt(r10728296);
        double r10728299 = r10728298 + r10728294;
        double r10728300 = r10728297 / r10728299;
        double r10728301 = r10728300 / r10728280;
        double r10728302 = 1.0;
        double r10728303 = r10728298 - r10728302;
        double r10728304 = r10728303 / r10728280;
        double r10728305 = fma(r10728276, r10728304, r10728302);
        double r10728306 = fma(r10728301, r10728278, r10728305);
        double r10728307 = r10728294 * r10728306;
        double r10728308 = r10728293 / r10728307;
        return r10728308;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.4

    \[\frac{2.0 + \left(\left(\sqrt{2.0} \cdot \left(\sin x - \frac{\sin y}{16.0}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16.0}\right)\right) \cdot \left(\cos x - \cos y\right)}{3.0 \cdot \left(\left(1.0 + \frac{\sqrt{5.0} - 1.0}{2.0} \cdot \cos x\right) + \frac{3.0 - \sqrt{5.0}}{2.0} \cdot \cos y\right)}\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \left(\left(\cos x - \cos y\right) \cdot \sqrt{2.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{3.0 - \sqrt{5.0}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}}\]
  3. Using strategy rm
  4. Applied flip--0.5

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \left(\left(\cos x - \cos y\right) \cdot \sqrt{2.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\color{blue}{\frac{3.0 \cdot 3.0 - \sqrt{5.0} \cdot \sqrt{5.0}}{3.0 + \sqrt{5.0}}}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}\]
  5. Simplified0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \left(\left(\cos x - \cos y\right) \cdot \sqrt{2.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\frac{\color{blue}{3.0 \cdot 3.0 - 5.0}}{3.0 + \sqrt{5.0}}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}\]
  6. Using strategy rm
  7. Applied add-sqr-sqrt0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \left(\left(\cos x - \cos y\right) \cdot \sqrt{\color{blue}{\sqrt{2.0} \cdot \sqrt{2.0}}}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{3.0 + \sqrt{5.0}}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}\]
  8. Applied sqrt-prod0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \left(\left(\cos x - \cos y\right) \cdot \color{blue}{\left(\sqrt{\sqrt{2.0}} \cdot \sqrt{\sqrt{2.0}}\right)}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{3.0 + \sqrt{5.0}}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}\]
  9. Applied associate-*r*0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16.0}\right) \cdot \color{blue}{\left(\left(\left(\cos x - \cos y\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \sqrt{\sqrt{2.0}}\right)}, \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{3.0 + \sqrt{5.0}}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right) \cdot 3.0}\]
  10. Final simplification0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\left(\left(\cos x - \cos y\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \sqrt{\sqrt{2.0}}\right) \cdot \left(\sin x - \frac{\sin y}{16.0}\right), \sin y - \frac{\sin x}{16.0}, 2.0\right)}{3.0 \cdot \mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{\sqrt{5.0} + 3.0}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right)}\]

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (x y)
  :name "Diagrams.TwoD.Path.Metafont.Internal:hobbyF from diagrams-contrib-1.3.0.5"
  (/ (+ 2.0 (* (* (* (sqrt 2.0) (- (sin x) (/ (sin y) 16.0))) (- (sin y) (/ (sin x) 16.0))) (- (cos x) (cos y)))) (* 3.0 (+ (+ 1.0 (* (/ (- (sqrt 5.0) 1.0) 2.0) (cos x))) (* (/ (- 3.0 (sqrt 5.0)) 2.0) (cos y))))))