\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)}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)double f(double t, double l, double Om, double Omc) {
double r65706 = 1.0;
double r65707 = Om;
double r65708 = Omc;
double r65709 = r65707 / r65708;
double r65710 = 2.0;
double r65711 = pow(r65709, r65710);
double r65712 = r65706 - r65711;
double r65713 = t;
double r65714 = l;
double r65715 = r65713 / r65714;
double r65716 = pow(r65715, r65710);
double r65717 = r65710 * r65716;
double r65718 = r65706 + r65717;
double r65719 = r65712 / r65718;
double r65720 = sqrt(r65719);
double r65721 = asin(r65720);
return r65721;
}
double f(double t, double l, double Om, double Omc) {
double r65722 = 1.0;
double r65723 = Om;
double r65724 = Omc;
double r65725 = r65723 / r65724;
double r65726 = 2.0;
double r65727 = pow(r65725, r65726);
double r65728 = expm1(r65727);
double r65729 = log1p(r65728);
double r65730 = r65722 - r65729;
double r65731 = t;
double r65732 = l;
double r65733 = r65731 / r65732;
double r65734 = pow(r65733, r65726);
double r65735 = r65726 * r65734;
double r65736 = r65722 + r65735;
double r65737 = r65730 / r65736;
double r65738 = sqrt(r65737);
double r65739 = asin(r65738);
return r65739;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
Initial program 10.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)))))))