Average Error: 0.5 → 0.4
Time: 53.2s
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{\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)}{\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)}}{3.0}\]
\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{\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)}{\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)}}{3.0}
double f(double x, double y) {
        double r10130835 = 2.0;
        double r10130836 = sqrt(r10130835);
        double r10130837 = x;
        double r10130838 = sin(r10130837);
        double r10130839 = y;
        double r10130840 = sin(r10130839);
        double r10130841 = 16.0;
        double r10130842 = r10130840 / r10130841;
        double r10130843 = r10130838 - r10130842;
        double r10130844 = r10130836 * r10130843;
        double r10130845 = r10130838 / r10130841;
        double r10130846 = r10130840 - r10130845;
        double r10130847 = r10130844 * r10130846;
        double r10130848 = cos(r10130837);
        double r10130849 = cos(r10130839);
        double r10130850 = r10130848 - r10130849;
        double r10130851 = r10130847 * r10130850;
        double r10130852 = r10130835 + r10130851;
        double r10130853 = 3.0;
        double r10130854 = 1.0;
        double r10130855 = 5.0;
        double r10130856 = sqrt(r10130855);
        double r10130857 = r10130856 - r10130854;
        double r10130858 = r10130857 / r10130835;
        double r10130859 = r10130858 * r10130848;
        double r10130860 = r10130854 + r10130859;
        double r10130861 = r10130853 - r10130856;
        double r10130862 = r10130861 / r10130835;
        double r10130863 = r10130862 * r10130849;
        double r10130864 = r10130860 + r10130863;
        double r10130865 = r10130853 * r10130864;
        double r10130866 = r10130852 / r10130865;
        return r10130866;
}

double f(double x, double y) {
        double r10130867 = x;
        double r10130868 = cos(r10130867);
        double r10130869 = y;
        double r10130870 = cos(r10130869);
        double r10130871 = r10130868 - r10130870;
        double r10130872 = 2.0;
        double r10130873 = sqrt(r10130872);
        double r10130874 = sqrt(r10130873);
        double r10130875 = r10130871 * r10130874;
        double r10130876 = r10130875 * r10130874;
        double r10130877 = sin(r10130867);
        double r10130878 = sin(r10130869);
        double r10130879 = 16.0;
        double r10130880 = r10130878 / r10130879;
        double r10130881 = r10130877 - r10130880;
        double r10130882 = r10130876 * r10130881;
        double r10130883 = r10130877 / r10130879;
        double r10130884 = r10130878 - r10130883;
        double r10130885 = fma(r10130882, r10130884, r10130872);
        double r10130886 = 3.0;
        double r10130887 = r10130886 * r10130886;
        double r10130888 = 5.0;
        double r10130889 = r10130887 - r10130888;
        double r10130890 = sqrt(r10130888);
        double r10130891 = r10130890 + r10130886;
        double r10130892 = r10130889 / r10130891;
        double r10130893 = r10130892 / r10130872;
        double r10130894 = 1.0;
        double r10130895 = r10130890 - r10130894;
        double r10130896 = r10130895 / r10130872;
        double r10130897 = fma(r10130868, r10130896, r10130894);
        double r10130898 = fma(r10130893, r10130870, r10130897);
        double r10130899 = r10130885 / r10130898;
        double r10130900 = r10130899 / r10130886;
        return r10130900;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.5

    \[\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.5

    \[\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 associate-/r*0.4

    \[\leadsto \color{blue}{\frac{\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{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)}}{3.0}}\]
  8. Using strategy rm
  9. Applied add-sqr-sqrt0.4

    \[\leadsto \frac{\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)}}{3.0}\]
  10. Applied sqrt-prod0.4

    \[\leadsto \frac{\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)}}{3.0}\]
  11. Applied associate-*r*0.4

    \[\leadsto \frac{\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)}}{3.0}\]
  12. Final simplification0.4

    \[\leadsto \frac{\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)}{\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)}}{3.0}\]

Reproduce

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