\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{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)\right)}\right)double f(double t, double l, double Om, double Omc) {
double r53542 = 1.0;
double r53543 = Om;
double r53544 = Omc;
double r53545 = r53543 / r53544;
double r53546 = 2.0;
double r53547 = pow(r53545, r53546);
double r53548 = r53542 - r53547;
double r53549 = t;
double r53550 = l;
double r53551 = r53549 / r53550;
double r53552 = pow(r53551, r53546);
double r53553 = r53546 * r53552;
double r53554 = r53542 + r53553;
double r53555 = r53548 / r53554;
double r53556 = sqrt(r53555);
double r53557 = asin(r53556);
return r53557;
}
double f(double t, double l, double Om, double Omc) {
double r53558 = 1.0;
double r53559 = Om;
double r53560 = Omc;
double r53561 = r53559 / r53560;
double r53562 = 2.0;
double r53563 = pow(r53561, r53562);
double r53564 = r53558 - r53563;
double r53565 = t;
double r53566 = l;
double r53567 = r53565 / r53566;
double r53568 = pow(r53567, r53562);
double r53569 = fma(r53568, r53562, r53558);
double r53570 = r53564 / r53569;
double r53571 = log1p(r53570);
double r53572 = expm1(r53571);
double r53573 = sqrt(r53572);
double r53574 = asin(r53573);
return r53574;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 10.3
rmApplied expm1-log1p-u10.4
Simplified10.4
Final simplification10.4
herbie shell --seed 2019303 +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)))))))