\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\begin{array}{l}
\mathbf{if}\;\ell \le 0.01614014637042796712629311173259338829666:\\
\;\;\;\;U + \left(J \cdot \left(\left(\frac{1}{60} \cdot {\ell}^{5}\right) \cdot \cos \left(\frac{K}{2}\right)\right) + J \cdot \left(\cos \left(K \cdot 0.5\right) \cdot \left(\ell \cdot 2 + \left(\ell \cdot \ell\right) \cdot \left(\frac{1}{3} \cdot \ell\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(J \cdot \left(\left(\sqrt{e^{\ell}} + \sqrt{e^{-\ell}}\right) \cdot \left(\sqrt{e^{\ell}} - \sqrt{e^{-\ell}}\right)\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\\
\end{array}double f(double J, double l, double K, double U) {
double r3727387 = J;
double r3727388 = l;
double r3727389 = exp(r3727388);
double r3727390 = -r3727388;
double r3727391 = exp(r3727390);
double r3727392 = r3727389 - r3727391;
double r3727393 = r3727387 * r3727392;
double r3727394 = K;
double r3727395 = 2.0;
double r3727396 = r3727394 / r3727395;
double r3727397 = cos(r3727396);
double r3727398 = r3727393 * r3727397;
double r3727399 = U;
double r3727400 = r3727398 + r3727399;
return r3727400;
}
double f(double J, double l, double K, double U) {
double r3727401 = l;
double r3727402 = 0.016140146370427967;
bool r3727403 = r3727401 <= r3727402;
double r3727404 = U;
double r3727405 = J;
double r3727406 = 0.016666666666666666;
double r3727407 = 5.0;
double r3727408 = pow(r3727401, r3727407);
double r3727409 = r3727406 * r3727408;
double r3727410 = K;
double r3727411 = 2.0;
double r3727412 = r3727410 / r3727411;
double r3727413 = cos(r3727412);
double r3727414 = r3727409 * r3727413;
double r3727415 = r3727405 * r3727414;
double r3727416 = 0.5;
double r3727417 = r3727410 * r3727416;
double r3727418 = cos(r3727417);
double r3727419 = 2.0;
double r3727420 = r3727401 * r3727419;
double r3727421 = r3727401 * r3727401;
double r3727422 = 0.3333333333333333;
double r3727423 = r3727422 * r3727401;
double r3727424 = r3727421 * r3727423;
double r3727425 = r3727420 + r3727424;
double r3727426 = r3727418 * r3727425;
double r3727427 = r3727405 * r3727426;
double r3727428 = r3727415 + r3727427;
double r3727429 = r3727404 + r3727428;
double r3727430 = exp(r3727401);
double r3727431 = sqrt(r3727430);
double r3727432 = -r3727401;
double r3727433 = exp(r3727432);
double r3727434 = sqrt(r3727433);
double r3727435 = r3727431 + r3727434;
double r3727436 = r3727431 - r3727434;
double r3727437 = r3727435 * r3727436;
double r3727438 = r3727405 * r3727437;
double r3727439 = r3727438 * r3727413;
double r3727440 = r3727439 + r3727404;
double r3727441 = r3727403 ? r3727429 : r3727440;
return r3727441;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Results
if l < 0.016140146370427967Initial program 17.7
Taylor expanded around 0 0.2
Simplified0.2
rmApplied associate-*l*0.2
Simplified0.2
rmApplied fma-udef0.2
Applied distribute-rgt-in0.2
Applied distribute-lft-in0.2
Taylor expanded around inf 0.2
Simplified0.2
if 0.016140146370427967 < l Initial program 1.4
rmApplied add-sqr-sqrt1.5
Applied add-sqr-sqrt1.6
Applied difference-of-squares1.5
Final simplification0.2
herbie shell --seed 2019200 +o rules:numerics
(FPCore (J l K U)
:name "Maksimov and Kolovsky, Equation (4)"
(+ (* (* J (- (exp l) (exp (- l)))) (cos (/ K 2.0))) U))