Average Error: 0.5 → 0.4
Time: 49.2s
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(\left(\sin x - \sin y \cdot 0.0625\right) \cdot \sqrt{2}, \left(\cos x - \cos y\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), 2\right)}{3}}{\mathsf{fma}\left(\cos y, \frac{3 - \sqrt{5}}{2}, \mathsf{fma}\left(\frac{\sqrt{5} - 1}{2}, \cos x, 1\right)\right)}\]
\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(\left(\sin x - \sin y \cdot 0.0625\right) \cdot \sqrt{2}, \left(\cos x - \cos y\right) \cdot \left(\sin y - \frac{\sin x}{16}\right), 2\right)}{3}}{\mathsf{fma}\left(\cos y, \frac{3 - \sqrt{5}}{2}, \mathsf{fma}\left(\frac{\sqrt{5} - 1}{2}, \cos x, 1\right)\right)}
double f(double x, double y) {
        double r11087002 = 2.0;
        double r11087003 = sqrt(r11087002);
        double r11087004 = x;
        double r11087005 = sin(r11087004);
        double r11087006 = y;
        double r11087007 = sin(r11087006);
        double r11087008 = 16.0;
        double r11087009 = r11087007 / r11087008;
        double r11087010 = r11087005 - r11087009;
        double r11087011 = r11087003 * r11087010;
        double r11087012 = r11087005 / r11087008;
        double r11087013 = r11087007 - r11087012;
        double r11087014 = r11087011 * r11087013;
        double r11087015 = cos(r11087004);
        double r11087016 = cos(r11087006);
        double r11087017 = r11087015 - r11087016;
        double r11087018 = r11087014 * r11087017;
        double r11087019 = r11087002 + r11087018;
        double r11087020 = 3.0;
        double r11087021 = 1.0;
        double r11087022 = 5.0;
        double r11087023 = sqrt(r11087022);
        double r11087024 = r11087023 - r11087021;
        double r11087025 = r11087024 / r11087002;
        double r11087026 = r11087025 * r11087015;
        double r11087027 = r11087021 + r11087026;
        double r11087028 = r11087020 - r11087023;
        double r11087029 = r11087028 / r11087002;
        double r11087030 = r11087029 * r11087016;
        double r11087031 = r11087027 + r11087030;
        double r11087032 = r11087020 * r11087031;
        double r11087033 = r11087019 / r11087032;
        return r11087033;
}

double f(double x, double y) {
        double r11087034 = x;
        double r11087035 = sin(r11087034);
        double r11087036 = y;
        double r11087037 = sin(r11087036);
        double r11087038 = 0.0625;
        double r11087039 = r11087037 * r11087038;
        double r11087040 = r11087035 - r11087039;
        double r11087041 = 2.0;
        double r11087042 = sqrt(r11087041);
        double r11087043 = r11087040 * r11087042;
        double r11087044 = cos(r11087034);
        double r11087045 = cos(r11087036);
        double r11087046 = r11087044 - r11087045;
        double r11087047 = 16.0;
        double r11087048 = r11087035 / r11087047;
        double r11087049 = r11087037 - r11087048;
        double r11087050 = r11087046 * r11087049;
        double r11087051 = fma(r11087043, r11087050, r11087041);
        double r11087052 = 3.0;
        double r11087053 = r11087051 / r11087052;
        double r11087054 = 5.0;
        double r11087055 = sqrt(r11087054);
        double r11087056 = r11087052 - r11087055;
        double r11087057 = r11087056 / r11087041;
        double r11087058 = 1.0;
        double r11087059 = r11087055 - r11087058;
        double r11087060 = r11087059 / r11087041;
        double r11087061 = fma(r11087060, r11087044, r11087058);
        double r11087062 = fma(r11087045, r11087057, r11087061);
        double r11087063 = r11087053 / r11087062;
        return r11087063;
}

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{\frac{\mathsf{fma}\left(\left(\sin x - \frac{\sin y}{16}\right) \cdot \sqrt{2}, \left(\sin y - \frac{\sin x}{16}\right) \cdot \left(\cos x - \cos y\right), 2\right)}{3}}{\mathsf{fma}\left(\cos y, \frac{3 - \sqrt{5}}{2}, \mathsf{fma}\left(\frac{\sqrt{5} - 1}{2}, \cos x, 1\right)\right)}}\]
  3. Taylor expanded around inf 0.4

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

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

Reproduce

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