\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;
}



Bits error versus x



Bits error versus y
Initial program 0.5
Simplified0.5
rmApplied flip--0.5
Simplified0.4
rmApplied associate-/r*0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.4
Applied associate-*r*0.4
Final simplification0.4
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))))))