\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 r75373 = 1.0;
double r75374 = Om;
double r75375 = Omc;
double r75376 = r75374 / r75375;
double r75377 = 2.0;
double r75378 = pow(r75376, r75377);
double r75379 = r75373 - r75378;
double r75380 = t;
double r75381 = l;
double r75382 = r75380 / r75381;
double r75383 = pow(r75382, r75377);
double r75384 = r75377 * r75383;
double r75385 = r75373 + r75384;
double r75386 = r75379 / r75385;
double r75387 = sqrt(r75386);
double r75388 = asin(r75387);
return r75388;
}
double f(double t, double l, double Om, double Omc) {
double r75389 = 1.0;
double r75390 = Om;
double r75391 = Omc;
double r75392 = r75390 / r75391;
double r75393 = 2.0;
double r75394 = pow(r75392, r75393);
double r75395 = expm1(r75394);
double r75396 = log1p(r75395);
double r75397 = r75389 - r75396;
double r75398 = t;
double r75399 = l;
double r75400 = r75398 / r75399;
double r75401 = pow(r75400, r75393);
double r75402 = r75393 * r75401;
double r75403 = r75389 + r75402;
double r75404 = r75397 / r75403;
double r75405 = sqrt(r75404);
double r75406 = asin(r75405);
return r75406;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
Initial program 9.9
rmApplied log1p-expm1-u9.9
Final simplification9.9
herbie shell --seed 2019354 +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)))))))