\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(\mathsf{fma}\left(\sqrt[3]{\cos x} \cdot \sqrt[3]{\cos x}, \sqrt[3]{\cos x}, -\cos y\right), \left(\left(\left(\sqrt[3]{\sin x} \cdot \sqrt[3]{\sin x}\right) \cdot \sqrt[3]{\sin x} - {\left(\frac{\sqrt[3]{\sin y}}{\sqrt[3]{16}}\right)}^{3}\right) \cdot \sqrt{2} + \sqrt{2} \cdot \left({\left(\frac{\sqrt[3]{\sin y}}{\sqrt[3]{16}}\right)}^{3} - {\left(\frac{\sqrt[3]{\sin y}}{\left(\sqrt[3]{\sqrt[3]{16}} \cdot \sqrt[3]{\sqrt[3]{16}}\right) \cdot \sqrt[3]{\sqrt[3]{16}}}\right)}^{3}\right)\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(\cos x, \frac{\sqrt{5} - 1}{2}, 1\right)\right)}double f(double x, double y) {
double r195772 = 2.0;
double r195773 = sqrt(r195772);
double r195774 = x;
double r195775 = sin(r195774);
double r195776 = y;
double r195777 = sin(r195776);
double r195778 = 16.0;
double r195779 = r195777 / r195778;
double r195780 = r195775 - r195779;
double r195781 = r195773 * r195780;
double r195782 = r195775 / r195778;
double r195783 = r195777 - r195782;
double r195784 = r195781 * r195783;
double r195785 = cos(r195774);
double r195786 = cos(r195776);
double r195787 = r195785 - r195786;
double r195788 = r195784 * r195787;
double r195789 = r195772 + r195788;
double r195790 = 3.0;
double r195791 = 1.0;
double r195792 = 5.0;
double r195793 = sqrt(r195792);
double r195794 = r195793 - r195791;
double r195795 = r195794 / r195772;
double r195796 = r195795 * r195785;
double r195797 = r195791 + r195796;
double r195798 = r195790 - r195793;
double r195799 = r195798 / r195772;
double r195800 = r195799 * r195786;
double r195801 = r195797 + r195800;
double r195802 = r195790 * r195801;
double r195803 = r195789 / r195802;
return r195803;
}
double f(double x, double y) {
double r195804 = x;
double r195805 = cos(r195804);
double r195806 = cbrt(r195805);
double r195807 = r195806 * r195806;
double r195808 = y;
double r195809 = cos(r195808);
double r195810 = -r195809;
double r195811 = fma(r195807, r195806, r195810);
double r195812 = sin(r195804);
double r195813 = cbrt(r195812);
double r195814 = r195813 * r195813;
double r195815 = r195814 * r195813;
double r195816 = sin(r195808);
double r195817 = cbrt(r195816);
double r195818 = 16.0;
double r195819 = cbrt(r195818);
double r195820 = r195817 / r195819;
double r195821 = 3.0;
double r195822 = pow(r195820, r195821);
double r195823 = r195815 - r195822;
double r195824 = 2.0;
double r195825 = sqrt(r195824);
double r195826 = r195823 * r195825;
double r195827 = cbrt(r195819);
double r195828 = r195827 * r195827;
double r195829 = r195828 * r195827;
double r195830 = r195817 / r195829;
double r195831 = pow(r195830, r195821);
double r195832 = r195822 - r195831;
double r195833 = r195825 * r195832;
double r195834 = r195826 + r195833;
double r195835 = r195812 / r195818;
double r195836 = r195816 - r195835;
double r195837 = r195834 * r195836;
double r195838 = fma(r195811, r195837, r195824);
double r195839 = 3.0;
double r195840 = r195838 / r195839;
double r195841 = 5.0;
double r195842 = sqrt(r195841);
double r195843 = r195839 - r195842;
double r195844 = r195843 / r195824;
double r195845 = 1.0;
double r195846 = r195842 - r195845;
double r195847 = r195846 / r195824;
double r195848 = fma(r195805, r195847, r195845);
double r195849 = fma(r195809, r195844, r195848);
double r195850 = r195840 / r195849;
return r195850;
}



Bits error versus x



Bits error versus y
Initial program 0.5
Simplified0.4
rmApplied add-cube-cbrt0.5
Applied fma-neg0.5
rmApplied add-cube-cbrt0.4
Applied add-cube-cbrt0.4
Applied times-frac0.4
Applied add-cube-cbrt0.5
Applied prod-diff0.5
Applied distribute-lft-in0.5
Simplified0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Final simplification0.5
herbie shell --seed 2020045 +o rules:numerics
(FPCore (x y)
:name "Diagrams.TwoD.Path.Metafont.Internal:hobbyF from diagrams-contrib-1.3.0.5"
:precision binary64
(/ (+ 2 (* (* (* (sqrt 2) (- (sin x) (/ (sin y) 16))) (- (sin y) (/ (sin x) 16))) (- (cos x) (cos y)))) (* 3 (+ (+ 1 (* (/ (- (sqrt 5) 1) 2) (cos x))) (* (/ (- 3 (sqrt 5)) 2) (cos y))))))