\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(2, \frac{t}{\ell} \cdot \frac{t}{\ell}, 1\right)}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r1954569 = 1.0;
double r1954570 = Om;
double r1954571 = Omc;
double r1954572 = r1954570 / r1954571;
double r1954573 = 2.0;
double r1954574 = pow(r1954572, r1954573);
double r1954575 = r1954569 - r1954574;
double r1954576 = t;
double r1954577 = l;
double r1954578 = r1954576 / r1954577;
double r1954579 = pow(r1954578, r1954573);
double r1954580 = r1954573 * r1954579;
double r1954581 = r1954569 + r1954580;
double r1954582 = r1954575 / r1954581;
double r1954583 = sqrt(r1954582);
double r1954584 = asin(r1954583);
return r1954584;
}
double f(double t, double l, double Om, double Omc) {
double r1954585 = 1.0;
double r1954586 = Om;
double r1954587 = Omc;
double r1954588 = r1954586 / r1954587;
double r1954589 = r1954588 * r1954588;
double r1954590 = r1954585 - r1954589;
double r1954591 = 2.0;
double r1954592 = t;
double r1954593 = l;
double r1954594 = r1954592 / r1954593;
double r1954595 = r1954594 * r1954594;
double r1954596 = fma(r1954591, r1954595, r1954585);
double r1954597 = r1954590 / r1954596;
double r1954598 = sqrt(r1954597);
double r1954599 = asin(r1954598);
double r1954600 = log1p(r1954599);
double r1954601 = expm1(r1954600);
return r1954601;
}



Bits error versus t



Bits error versus l



Bits error versus Om



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