\frac{\cos \left(2 \cdot x\right)}{{cos}^{2} \cdot \left(\left(x \cdot {sin}^{2}\right) \cdot x\right)}\frac{1}{\left(cos \cdot x\right) \cdot sin} \cdot \frac{1}{\frac{cos \cdot x}{\frac{\cos \left(x \cdot 2\right)}{sin}}}double f(double x, double cos, double sin) {
double r23254846 = 2.0;
double r23254847 = x;
double r23254848 = r23254846 * r23254847;
double r23254849 = cos(r23254848);
double r23254850 = cos;
double r23254851 = pow(r23254850, r23254846);
double r23254852 = sin;
double r23254853 = pow(r23254852, r23254846);
double r23254854 = r23254847 * r23254853;
double r23254855 = r23254854 * r23254847;
double r23254856 = r23254851 * r23254855;
double r23254857 = r23254849 / r23254856;
return r23254857;
}
double f(double x, double cos, double sin) {
double r23254858 = 1.0;
double r23254859 = cos;
double r23254860 = x;
double r23254861 = r23254859 * r23254860;
double r23254862 = sin;
double r23254863 = r23254861 * r23254862;
double r23254864 = r23254858 / r23254863;
double r23254865 = 2.0;
double r23254866 = r23254860 * r23254865;
double r23254867 = cos(r23254866);
double r23254868 = r23254867 / r23254862;
double r23254869 = r23254861 / r23254868;
double r23254870 = r23254858 / r23254869;
double r23254871 = r23254864 * r23254870;
return r23254871;
}



Bits error versus x



Bits error versus cos



Bits error versus sin
Results
Initial program 27.3
Simplified2.8
rmApplied associate-/r*2.6
rmApplied associate-/r*2.5
rmApplied *-un-lft-identity2.5
Applied associate-/l*2.6
rmApplied div-inv2.6
Final simplification2.6
herbie shell --seed 2019121 +o rules:numerics
(FPCore (x cos sin)
:name "cos(2*x)/(cos^2(x)*sin^2(x))"
(/ (cos (* 2 x)) (* (pow cos 2) (* (* x (pow sin 2)) x))))