double code(double x, double c, double s) {
return ((double) (((double) cos(((double) (2.0 * x)))) / ((double) (((double) pow(c, 2.0)) * ((double) (((double) (x * ((double) pow(s, 2.0)))) * x))))));
}
double code(double x, double c, double s) {
double VAR;
if (((x <= -1.1028652727373659e-195) || (!(x <= 2.0020234743380518e-202) && (x <= 1.1274878712839377e+158)))) {
VAR = ((double) (((double) (((double) cos(((double) (x * 2.0)))) / ((double) (x * ((double) (x * ((double) pow(((double) (c * s)), ((double) (2.0 * 0.5)))))))))) / ((double) pow(((double) (c * s)), ((double) (2.0 / 2.0))))));
} else {
VAR = ((double) (((double) (((double) cos(((double) (x * 2.0)))) / x)) / ((double) (((double) (x * ((double) pow(((double) (c * s)), ((double) (2.0 * 0.5)))))) * ((double) pow(((double) (c * s)), ((double) (2.0 / 2.0))))))));
}
return VAR;
}



Bits error versus x



Bits error versus c



Bits error versus s
Results
if x < -1.1028652727373659e-195 or 2.00202347433805179e-202 < x < 1.1274878712839377e158Initial program 25.0
Simplified25.3
rmApplied pow-prod-down10.2
rmApplied sqr-pow10.2
Applied associate-*r*4.7
Simplified4.7
rmApplied associate-*r*3.0
rmApplied associate-/r*2.9
Simplified2.9
if -1.1028652727373659e-195 < x < 2.00202347433805179e-202 or 1.1274878712839377e158 < x Initial program 33.6
Simplified33.4
rmApplied pow-prod-down23.1
rmApplied sqr-pow23.1
Applied associate-*r*9.5
Simplified9.5
rmApplied associate-/r*9.2
Simplified9.2
Final simplification4.5
herbie shell --seed 2020181
(FPCore (x c s)
:name "mixedcos"
:precision binary64
(/ (cos (* 2.0 x)) (* (pow c 2.0) (* (* x (pow s 2.0)) x))))