\[\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)}\right)}^{2}} \]
(FPCore (J K U)
 :precision binary64
 (*
  (* (* -2.0 J) (cos (/ K 2.0)))
  (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) (cos (/ K 2.0)))) 2.0)))))
double code(double J, double K, double U) {
	return ((-2.0 * J) * cos((K / 2.0))) * sqrt((1.0 + pow((U / ((2.0 * J) * cos((K / 2.0)))), 2.0)));
}
real(8) function code(j, k, u)
    real(8), intent (in) :: j
    real(8), intent (in) :: k
    real(8), intent (in) :: u
    code = (((-2.0d0) * j) * cos((k / 2.0d0))) * sqrt((1.0d0 + ((u / ((2.0d0 * j) * cos((k / 2.0d0)))) ** 2.0d0)))
end function
public static double code(double J, double K, double U) {
	return ((-2.0 * J) * Math.cos((K / 2.0))) * Math.sqrt((1.0 + Math.pow((U / ((2.0 * J) * Math.cos((K / 2.0)))), 2.0)));
}
def code(J, K, U):
	return ((-2.0 * J) * math.cos((K / 2.0))) * math.sqrt((1.0 + math.pow((U / ((2.0 * J) * math.cos((K / 2.0)))), 2.0)))
function code(J, K, U)
	return Float64(Float64(Float64(-2.0 * J) * cos(Float64(K / 2.0))) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * J) * cos(Float64(K / 2.0)))) ^ 2.0))))
end
function tmp = code(J, K, U)
	tmp = ((-2.0 * J) * cos((K / 2.0))) * sqrt((1.0 + ((U / ((2.0 * J) * cos((K / 2.0)))) ^ 2.0)));
end
code[J_, K_, U_] := N[(N[(N[(-2.0 * J), $MachinePrecision] * N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * J), $MachinePrecision] * N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\left(\left(-2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot J\right) \cdot \cos \left(\frac{K}{2}\right)}\right)}^{2}}

Reproduce

Please include this information when filing a bug report:

herbie shell --seed 2022204 
(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)))))

Backtrace

nan?: contract violation expected: real? given: 0.5000000000000001+0.8660254037844386iLC
simplify-node*/data/pavpan/nightlies/herbie/fix-inf-exact/src/core/reduce.rkt610
hash-ref!/usr/share/racket/collects/racket/private/more-scheme.rkt3772
hash-ref!/usr/share/racket/collects/racket/private/more-scheme.rkt3772
loop.../private/map.rkt4019
f22.../match/compiler.rkt54840
hash-ref!/usr/share/racket/collects/racket/private/more-scheme.rkt3772
approximate/data/pavpan/nightlies/herbie/fix-inf-exact/src/core/taylor.rkt70
taylor-expr/data/pavpan/nightlies/herbie/fix-inf-exact/src/patch.rkt780
taylor-alt/data/pavpan/nightlies/herbie/fix-inf-exact/src/patch.rkt850
gen-series!/data/pavpan/nightlies/herbie/fix-inf-exact/src/patch.rkt1010
patch-table-run/data/pavpan/nightlies/herbie/fix-inf-exact/src/patch.rkt3100
(unnamed)/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt48618
run-iter!/data/pavpan/nightlies/herbie/fix-inf-exact/src/mainloop.rkt2420
mutate!/data/pavpan/nightlies/herbie/fix-inf-exact/src/mainloop.rkt3480
run-improve!/data/pavpan/nightlies/herbie/fix-inf-exact/src/mainloop.rkt2960
(unnamed)/data/pavpan/nightlies/herbie/fix-inf-exact/src/sandbox.rkt556
(unnamed)/usr/share/racket/pkgs/profile-lib/main.rkt4010
profile-thunk/usr/share/racket/pkgs/profile-lib/main.rkt90
(unnamed)/usr/share/racket/collects/racket/engine.rkt4224