\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(\left(\left(\frac{1}{60} \cdot {\ell}^{5}\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot J + \left(\cos \left(0.5 \cdot K\right) \cdot \left(2 \cdot \ell + \left(\left(\ell \cdot \ell\right) \cdot \frac{1}{3}\right) \cdot \ell\right)\right) \cdot J\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 r3632975 = J;
double r3632976 = l;
double r3632977 = exp(r3632976);
double r3632978 = -r3632976;
double r3632979 = exp(r3632978);
double r3632980 = r3632977 - r3632979;
double r3632981 = r3632975 * r3632980;
double r3632982 = K;
double r3632983 = 2.0;
double r3632984 = r3632982 / r3632983;
double r3632985 = cos(r3632984);
double r3632986 = r3632981 * r3632985;
double r3632987 = U;
double r3632988 = r3632986 + r3632987;
return r3632988;
}
double f(double J, double l, double K, double U) {
double r3632989 = l;
double r3632990 = 0.016140146370427967;
bool r3632991 = r3632989 <= r3632990;
double r3632992 = U;
double r3632993 = 0.016666666666666666;
double r3632994 = 5.0;
double r3632995 = pow(r3632989, r3632994);
double r3632996 = r3632993 * r3632995;
double r3632997 = K;
double r3632998 = 2.0;
double r3632999 = r3632997 / r3632998;
double r3633000 = cos(r3632999);
double r3633001 = r3632996 * r3633000;
double r3633002 = J;
double r3633003 = r3633001 * r3633002;
double r3633004 = 0.5;
double r3633005 = r3633004 * r3632997;
double r3633006 = cos(r3633005);
double r3633007 = 2.0;
double r3633008 = r3633007 * r3632989;
double r3633009 = r3632989 * r3632989;
double r3633010 = 0.3333333333333333;
double r3633011 = r3633009 * r3633010;
double r3633012 = r3633011 * r3632989;
double r3633013 = r3633008 + r3633012;
double r3633014 = r3633006 * r3633013;
double r3633015 = r3633014 * r3633002;
double r3633016 = r3633003 + r3633015;
double r3633017 = r3632992 + r3633016;
double r3633018 = exp(r3632989);
double r3633019 = sqrt(r3633018);
double r3633020 = -r3632989;
double r3633021 = exp(r3633020);
double r3633022 = sqrt(r3633021);
double r3633023 = r3633019 + r3633022;
double r3633024 = r3633019 - r3633022;
double r3633025 = r3633023 * r3633024;
double r3633026 = r3633002 * r3633025;
double r3633027 = r3633026 * r3633000;
double r3633028 = r3633027 + r3632992;
double r3633029 = r3632991 ? r3633017 : r3633028;
return r3633029;
}



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