\left(J \cdot \left(e^{\ell} - e^{-\ell}\right)\right) \cdot \cos \left(\frac{K}{2}\right) + U\mathsf{fma}\left(J, \cos \left(\frac{K}{2}\right) \cdot \mathsf{fma}\left(\ell, \left(\ell \cdot \ell\right) \cdot \frac{1}{3}, \mathsf{fma}\left(\frac{1}{60}, {\ell}^{5}, \ell + \ell\right)\right), U\right)double f(double J, double l, double K, double U) {
double r3646454 = J;
double r3646455 = l;
double r3646456 = exp(r3646455);
double r3646457 = -r3646455;
double r3646458 = exp(r3646457);
double r3646459 = r3646456 - r3646458;
double r3646460 = r3646454 * r3646459;
double r3646461 = K;
double r3646462 = 2.0;
double r3646463 = r3646461 / r3646462;
double r3646464 = cos(r3646463);
double r3646465 = r3646460 * r3646464;
double r3646466 = U;
double r3646467 = r3646465 + r3646466;
return r3646467;
}
double f(double J, double l, double K, double U) {
double r3646468 = J;
double r3646469 = K;
double r3646470 = 2.0;
double r3646471 = r3646469 / r3646470;
double r3646472 = cos(r3646471);
double r3646473 = l;
double r3646474 = r3646473 * r3646473;
double r3646475 = 0.3333333333333333;
double r3646476 = r3646474 * r3646475;
double r3646477 = 0.016666666666666666;
double r3646478 = 5.0;
double r3646479 = pow(r3646473, r3646478);
double r3646480 = r3646473 + r3646473;
double r3646481 = fma(r3646477, r3646479, r3646480);
double r3646482 = fma(r3646473, r3646476, r3646481);
double r3646483 = r3646472 * r3646482;
double r3646484 = U;
double r3646485 = fma(r3646468, r3646483, r3646484);
return r3646485;
}



Bits error versus J



Bits error versus l



Bits error versus K



Bits error versus U
Initial program 17.6
Taylor expanded around 0 0.4
Simplified0.4
rmApplied associate-*l*0.4
rmApplied fma-def0.4
Final simplification0.4
herbie shell --seed 2019174 +o rules:numerics
(FPCore (J l K U)
:name "Maksimov and Kolovsky, Equation (4)"
(+ (* (* J (- (exp l) (exp (- l)))) (cos (/ K 2.0))) U))