\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\sin^{-1} \left(\sqrt{\frac{1 - \mathsf{log1p}\left(\mathsf{expm1}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)double f(double t, double l, double Om, double Omc) {
double r61660 = 1.0;
double r61661 = Om;
double r61662 = Omc;
double r61663 = r61661 / r61662;
double r61664 = 2.0;
double r61665 = pow(r61663, r61664);
double r61666 = r61660 - r61665;
double r61667 = t;
double r61668 = l;
double r61669 = r61667 / r61668;
double r61670 = pow(r61669, r61664);
double r61671 = r61664 * r61670;
double r61672 = r61660 + r61671;
double r61673 = r61666 / r61672;
double r61674 = sqrt(r61673);
double r61675 = asin(r61674);
return r61675;
}
double f(double t, double l, double Om, double Omc) {
double r61676 = 1.0;
double r61677 = Om;
double r61678 = Omc;
double r61679 = r61677 / r61678;
double r61680 = 2.0;
double r61681 = pow(r61679, r61680);
double r61682 = expm1(r61681);
double r61683 = log1p(r61682);
double r61684 = r61676 - r61683;
double r61685 = t;
double r61686 = l;
double r61687 = r61685 / r61686;
double r61688 = pow(r61687, r61680);
double r61689 = fma(r61680, r61688, r61676);
double r61690 = r61684 / r61689;
double r61691 = sqrt(r61690);
double r61692 = asin(r61691);
return r61692;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 10.2
Simplified10.2
rmApplied log1p-expm1-u10.2
Final simplification10.2
herbie shell --seed 2020047 +o rules:numerics
(FPCore (t l Om Omc)
:name "Toniolo and Linder, Equation (2)"
:precision binary64
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))))