\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\sqrt{\frac{1}{2} \cdot \left(1 + \log \left(e^{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}\right)\right)}double f(double l, double Om, double kx, double ky) {
double r51978 = 1.0;
double r51979 = 2.0;
double r51980 = r51978 / r51979;
double r51981 = l;
double r51982 = r51979 * r51981;
double r51983 = Om;
double r51984 = r51982 / r51983;
double r51985 = pow(r51984, r51979);
double r51986 = kx;
double r51987 = sin(r51986);
double r51988 = pow(r51987, r51979);
double r51989 = ky;
double r51990 = sin(r51989);
double r51991 = pow(r51990, r51979);
double r51992 = r51988 + r51991;
double r51993 = r51985 * r51992;
double r51994 = r51978 + r51993;
double r51995 = sqrt(r51994);
double r51996 = r51978 / r51995;
double r51997 = r51978 + r51996;
double r51998 = r51980 * r51997;
double r51999 = sqrt(r51998);
return r51999;
}
double f(double l, double Om, double kx, double ky) {
double r52000 = 1.0;
double r52001 = 2.0;
double r52002 = r52000 / r52001;
double r52003 = Om;
double r52004 = r52001 / r52003;
double r52005 = l;
double r52006 = r52004 * r52005;
double r52007 = pow(r52006, r52001);
double r52008 = kx;
double r52009 = sin(r52008);
double r52010 = pow(r52009, r52001);
double r52011 = ky;
double r52012 = sin(r52011);
double r52013 = pow(r52012, r52001);
double r52014 = r52010 + r52013;
double r52015 = fma(r52007, r52014, r52000);
double r52016 = sqrt(r52015);
double r52017 = r52000 / r52016;
double r52018 = exp(r52017);
double r52019 = log(r52018);
double r52020 = r52000 + r52019;
double r52021 = r52002 * r52020;
double r52022 = sqrt(r52021);
return r52022;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.8
rmApplied add-log-exp1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019179 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
(sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))