Average Error: 0.5 → 0.4
Time: 1.0m
Precision: 64
\[\frac{2 + \left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right)\right) \cdot \left(\cos x - \cos y\right)}{3 \cdot \left(\left(1 + \frac{\sqrt{5} - 1}{2} \cdot \cos x\right) + \frac{3 - \sqrt{5}}{2} \cdot \cos y\right)}\]
\[\frac{\frac{\mathsf{fma}\left(\sqrt{2} \cdot \left(\left(\sin y - 0.0625 \cdot \sin x\right) \cdot \left(\sin x - 0.0625 \cdot \sin y\right)\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{3 \cdot 3 - 5}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}}{3}\]
\frac{2 + \left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right)\right) \cdot \left(\cos x - \cos y\right)}{3 \cdot \left(\left(1 + \frac{\sqrt{5} - 1}{2} \cdot \cos x\right) + \frac{3 - \sqrt{5}}{2} \cdot \cos y\right)}
\frac{\frac{\mathsf{fma}\left(\sqrt{2} \cdot \left(\left(\sin y - 0.0625 \cdot \sin x\right) \cdot \left(\sin x - 0.0625 \cdot \sin y\right)\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{3 \cdot 3 - 5}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}}{3}
double f(double x, double y) {
        double r30595232 = 2.0;
        double r30595233 = sqrt(r30595232);
        double r30595234 = x;
        double r30595235 = sin(r30595234);
        double r30595236 = y;
        double r30595237 = sin(r30595236);
        double r30595238 = 16.0;
        double r30595239 = r30595237 / r30595238;
        double r30595240 = r30595235 - r30595239;
        double r30595241 = r30595233 * r30595240;
        double r30595242 = r30595235 / r30595238;
        double r30595243 = r30595237 - r30595242;
        double r30595244 = r30595241 * r30595243;
        double r30595245 = cos(r30595234);
        double r30595246 = cos(r30595236);
        double r30595247 = r30595245 - r30595246;
        double r30595248 = r30595244 * r30595247;
        double r30595249 = r30595232 + r30595248;
        double r30595250 = 3.0;
        double r30595251 = 1.0;
        double r30595252 = 5.0;
        double r30595253 = sqrt(r30595252);
        double r30595254 = r30595253 - r30595251;
        double r30595255 = r30595254 / r30595232;
        double r30595256 = r30595255 * r30595245;
        double r30595257 = r30595251 + r30595256;
        double r30595258 = r30595250 - r30595253;
        double r30595259 = r30595258 / r30595232;
        double r30595260 = r30595259 * r30595246;
        double r30595261 = r30595257 + r30595260;
        double r30595262 = r30595250 * r30595261;
        double r30595263 = r30595249 / r30595262;
        return r30595263;
}

double f(double x, double y) {
        double r30595264 = 2.0;
        double r30595265 = sqrt(r30595264);
        double r30595266 = y;
        double r30595267 = sin(r30595266);
        double r30595268 = 0.0625;
        double r30595269 = x;
        double r30595270 = sin(r30595269);
        double r30595271 = r30595268 * r30595270;
        double r30595272 = r30595267 - r30595271;
        double r30595273 = r30595268 * r30595267;
        double r30595274 = r30595270 - r30595273;
        double r30595275 = r30595272 * r30595274;
        double r30595276 = r30595265 * r30595275;
        double r30595277 = cos(r30595269);
        double r30595278 = cos(r30595266);
        double r30595279 = r30595277 - r30595278;
        double r30595280 = fma(r30595276, r30595279, r30595264);
        double r30595281 = 3.0;
        double r30595282 = r30595281 * r30595281;
        double r30595283 = 5.0;
        double r30595284 = r30595282 - r30595283;
        double r30595285 = sqrt(r30595283);
        double r30595286 = r30595281 + r30595285;
        double r30595287 = r30595284 / r30595286;
        double r30595288 = r30595287 / r30595264;
        double r30595289 = 1.0;
        double r30595290 = r30595285 - r30595289;
        double r30595291 = r30595290 / r30595264;
        double r30595292 = fma(r30595277, r30595291, r30595289);
        double r30595293 = fma(r30595288, r30595278, r30595292);
        double r30595294 = r30595280 / r30595293;
        double r30595295 = r30595294 / r30595281;
        return r30595295;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.5

    \[\frac{2 + \left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right)\right) \cdot \left(\cos x - \cos y\right)}{3 \cdot \left(\left(1 + \frac{\sqrt{5} - 1}{2} \cdot \cos x\right) + \frac{3 - \sqrt{5}}{2} \cdot \cos y\right)}\]
  2. Simplified0.4

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{3 - \sqrt{5}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right) \cdot 3}}\]
  3. Using strategy rm
  4. Applied flip--0.5

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\color{blue}{\frac{3 \cdot 3 - \sqrt{5} \cdot \sqrt{5}}{3 + \sqrt{5}}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right) \cdot 3}\]
  5. Simplified0.4

    \[\leadsto \frac{\mathsf{fma}\left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{\color{blue}{3 \cdot 3 - 5}}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right) \cdot 3}\]
  6. Using strategy rm
  7. Applied associate-/r*0.4

    \[\leadsto \color{blue}{\frac{\frac{\mathsf{fma}\left(\left(\sqrt{2} \cdot \left(\sin x - \frac{\sin y}{16}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{3 \cdot 3 - 5}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}}{3}}\]
  8. Taylor expanded around inf 0.4

    \[\leadsto \frac{\frac{\mathsf{fma}\left(\color{blue}{\sqrt{2} \cdot \left(\left(\sin y - 0.0625 \cdot \sin x\right) \cdot \left(\sin x - 0.0625 \cdot \sin y\right)\right)}, \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{3 \cdot 3 - 5}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}}{3}\]
  9. Final simplification0.4

    \[\leadsto \frac{\frac{\mathsf{fma}\left(\sqrt{2} \cdot \left(\left(\sin y - 0.0625 \cdot \sin x\right) \cdot \left(\sin x - 0.0625 \cdot \sin y\right)\right), \cos x - \cos y, 2\right)}{\mathsf{fma}\left(\frac{\frac{3 \cdot 3 - 5}{3 + \sqrt{5}}}{2}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}}{3}\]

Reproduce

herbie shell --seed 2019173 +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))))))