Average Error: 17.9 → 18.0
Time: 12.7s
Precision: binary64
\[\]
\[\]
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))))))))))))));
}

Error

Bits error versus J

Bits error versus K

Bits error versus U

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 17.9

    \[\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt17.9

    \[\leadsto \]
  4. Applied sqrt-prod18.0

    \[\leadsto \]
  5. Applied associate-*r*18.0

    \[\leadsto \]
  6. Simplified18.0

    \[\leadsto \]
  7. Using strategy rm
  8. Applied add-cube-cbrt18.0

    \[\leadsto \]
  9. Applied sqrt-prod18.0

    \[\leadsto \]
  10. Simplified18.0

    \[\leadsto \]
  11. Simplified18.0

    \[\leadsto \]
  12. Final simplification18.0

    \[\leadsto \]

Reproduce

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)))))