\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}{\frac{2}{\left(\sqrt[3]{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}} \cdot \sqrt[3]{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}}\right) \cdot \sqrt[3]{\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2 \cdot \ell}{Om}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}}} + 1}}}double f(double l, double Om, double kx, double ky) {
double r42957 = 1.0;
double r42958 = 2.0;
double r42959 = r42957 / r42958;
double r42960 = l;
double r42961 = r42958 * r42960;
double r42962 = Om;
double r42963 = r42961 / r42962;
double r42964 = pow(r42963, r42958);
double r42965 = kx;
double r42966 = sin(r42965);
double r42967 = pow(r42966, r42958);
double r42968 = ky;
double r42969 = sin(r42968);
double r42970 = pow(r42969, r42958);
double r42971 = r42967 + r42970;
double r42972 = r42964 * r42971;
double r42973 = r42957 + r42972;
double r42974 = sqrt(r42973);
double r42975 = r42957 / r42974;
double r42976 = r42957 + r42975;
double r42977 = r42959 * r42976;
double r42978 = sqrt(r42977);
return r42978;
}
double f(double l, double Om, double kx, double ky) {
double r42979 = 1.0;
double r42980 = 2.0;
double r42981 = l;
double r42982 = r42980 * r42981;
double r42983 = Om;
double r42984 = r42982 / r42983;
double r42985 = pow(r42984, r42980);
double r42986 = kx;
double r42987 = sin(r42986);
double r42988 = pow(r42987, r42980);
double r42989 = ky;
double r42990 = sin(r42989);
double r42991 = pow(r42990, r42980);
double r42992 = r42988 + r42991;
double r42993 = fma(r42985, r42992, r42979);
double r42994 = sqrt(r42993);
double r42995 = r42979 / r42994;
double r42996 = cbrt(r42995);
double r42997 = r42996 * r42996;
double r42998 = r42997 * r42996;
double r42999 = r42998 + r42979;
double r43000 = r42980 / r42999;
double r43001 = r42979 / r43000;
double r43002 = sqrt(r43001);
return r43002;
}



Bits error versus l



Bits error versus Om



Bits error versus kx



Bits error versus ky
Initial program 1.8
Simplified1.8
rmApplied add-cube-cbrt1.8
Final simplification1.8
herbie shell --seed 2019303 +o rules:numerics
(FPCore (l Om kx ky)
:name "Toniolo and Linder, Equation (3a)"
:precision binary64
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))