\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(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}\right)\right)}\right)double f(double t, double l, double Om, double Omc) {
double r54315 = 1.0;
double r54316 = Om;
double r54317 = Omc;
double r54318 = r54316 / r54317;
double r54319 = 2.0;
double r54320 = pow(r54318, r54319);
double r54321 = r54315 - r54320;
double r54322 = t;
double r54323 = l;
double r54324 = r54322 / r54323;
double r54325 = pow(r54324, r54319);
double r54326 = r54319 * r54325;
double r54327 = r54315 + r54326;
double r54328 = r54321 / r54327;
double r54329 = sqrt(r54328);
double r54330 = asin(r54329);
return r54330;
}
double f(double t, double l, double Om, double Omc) {
double r54331 = 1.0;
double r54332 = Om;
double r54333 = Omc;
double r54334 = r54332 / r54333;
double r54335 = 2.0;
double r54336 = pow(r54334, r54335);
double r54337 = r54331 - r54336;
double r54338 = t;
double r54339 = l;
double r54340 = r54338 / r54339;
double r54341 = pow(r54340, r54335);
double r54342 = fma(r54335, r54341, r54331);
double r54343 = r54337 / r54342;
double r54344 = log1p(r54343);
double r54345 = expm1(r54344);
double r54346 = sqrt(r54345);
double r54347 = asin(r54346);
return r54347;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 10.3
Simplified10.3
rmApplied expm1-log1p-u10.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)))))))