double code(double J, double K, double U) {
return ((double) (((double) (((double) (-2.0 * J)) * ((double) cos(((double) (K / 2.0)))))) * ((double) sqrt(((double) (1.0 + ((double) pow(((double) (U / ((double) (((double) (2.0 * J)) * ((double) cos(((double) (K / 2.0)))))))), 2.0))))))));
}
double code(double J, double K, double U) {
return ((double) (((double) (J * ((double) (-2.0 * ((double) (((double) cos(((double) (K / 2.0)))) * ((double) sqrt(((double) sqrt(((double) (1.0 + ((double) pow(((double) (U / ((double) (2.0 * ((double) (J * ((double) cos(((double) (K / 2.0)))))))))), 2.0)))))))))))))) * ((double) sqrt(((double) (((double) fabs(((double) cbrt(((double) (1.0 + ((double) pow(((double) (U / ((double) (2.0 * ((double) (J * ((double) cos(((double) (K / 2.0)))))))))), 2.0)))))))) * ((double) sqrt(((double) cbrt(((double) (1.0 + ((double) pow(((double) (U / ((double) (2.0 * ((double) (J * ((double) cos(((double) (K / 2.0)))))))))), 2.0))))))))))))));
}



Bits error versus J



Bits error versus K



Bits error versus U
Results
Initial program 17.9
rmApplied add-sqr-sqrt17.9
Applied sqrt-prod18.0
Applied associate-*r*18.0
Simplified18.0
rmApplied add-cube-cbrt18.0
Applied sqrt-prod18.0
Simplified18.0
Simplified18.0
Final simplification18.0
herbie shell --seed 2020179
(FPCore (J K U)
:name "Maksimov and Kolovsky, Equation (3)"
:precision binary64
(* (* (* -2.0 J) (cos (/ K 2.0))) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) (cos (/ K 2.0)))) 2.0)))))