\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{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{\mathsf{fma}\left(\sqrt[3]{3} \cdot \sqrt[3]{3}, \sqrt[3]{3}, -\sqrt{\sqrt[3]{5}} \cdot \sqrt{\sqrt[3]{5} \cdot \sqrt[3]{5}}\right) + \sqrt{\sqrt[3]{5}} \cdot \left(\left(-\left|\sqrt[3]{5}\right|\right) + \left|\sqrt[3]{5}\right|\right)}{2} \cdot \cos y\right)}double f(double x, double y) {
double r184960 = 2.0;
double r184961 = sqrt(r184960);
double r184962 = x;
double r184963 = sin(r184962);
double r184964 = y;
double r184965 = sin(r184964);
double r184966 = 16.0;
double r184967 = r184965 / r184966;
double r184968 = r184963 - r184967;
double r184969 = r184961 * r184968;
double r184970 = r184963 / r184966;
double r184971 = r184965 - r184970;
double r184972 = r184969 * r184971;
double r184973 = cos(r184962);
double r184974 = cos(r184964);
double r184975 = r184973 - r184974;
double r184976 = r184972 * r184975;
double r184977 = r184960 + r184976;
double r184978 = 3.0;
double r184979 = 1.0;
double r184980 = 5.0;
double r184981 = sqrt(r184980);
double r184982 = r184981 - r184979;
double r184983 = r184982 / r184960;
double r184984 = r184983 * r184973;
double r184985 = r184979 + r184984;
double r184986 = r184978 - r184981;
double r184987 = r184986 / r184960;
double r184988 = r184987 * r184974;
double r184989 = r184985 + r184988;
double r184990 = r184978 * r184989;
double r184991 = r184977 / r184990;
return r184991;
}
double f(double x, double y) {
double r184992 = 2.0;
double r184993 = sqrt(r184992);
double r184994 = x;
double r184995 = sin(r184994);
double r184996 = y;
double r184997 = sin(r184996);
double r184998 = 16.0;
double r184999 = r184997 / r184998;
double r185000 = r184995 - r184999;
double r185001 = r184993 * r185000;
double r185002 = r184995 / r184998;
double r185003 = r184997 - r185002;
double r185004 = r185001 * r185003;
double r185005 = cos(r184994);
double r185006 = cos(r184996);
double r185007 = r185005 - r185006;
double r185008 = r185004 * r185007;
double r185009 = r184992 + r185008;
double r185010 = 3.0;
double r185011 = 1.0;
double r185012 = 5.0;
double r185013 = sqrt(r185012);
double r185014 = r185013 - r185011;
double r185015 = r185014 / r184992;
double r185016 = r185015 * r185005;
double r185017 = r185011 + r185016;
double r185018 = cbrt(r185010);
double r185019 = r185018 * r185018;
double r185020 = cbrt(r185012);
double r185021 = sqrt(r185020);
double r185022 = r185020 * r185020;
double r185023 = sqrt(r185022);
double r185024 = r185021 * r185023;
double r185025 = -r185024;
double r185026 = fma(r185019, r185018, r185025);
double r185027 = fabs(r185020);
double r185028 = -r185027;
double r185029 = r185028 + r185027;
double r185030 = r185021 * r185029;
double r185031 = r185026 + r185030;
double r185032 = r185031 / r184992;
double r185033 = r185032 * r185006;
double r185034 = r185017 + r185033;
double r185035 = r185010 * r185034;
double r185036 = r185009 / r185035;
return r185036;
}



Bits error versus x



Bits error versus y
Initial program 0.5
rmApplied add-cube-cbrt0.6
Applied sqrt-prod0.6
Applied add-cube-cbrt0.6
Applied prod-diff0.4
Simplified0.5
Final simplification0.5
herbie shell --seed 2020027 +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))))))