\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 \cdot \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r978127 = 1.0;
double r978128 = Om;
double r978129 = Omc;
double r978130 = r978128 / r978129;
double r978131 = 2.0;
double r978132 = pow(r978130, r978131);
double r978133 = r978127 - r978132;
double r978134 = t;
double r978135 = l;
double r978136 = r978134 / r978135;
double r978137 = pow(r978136, r978131);
double r978138 = r978131 * r978137;
double r978139 = r978127 + r978138;
double r978140 = r978133 / r978139;
double r978141 = sqrt(r978140);
double r978142 = asin(r978141);
return r978142;
}
double f(double t, double l, double Om, double Omc) {
double r978143 = 1.0;
double r978144 = Om;
double r978145 = Omc;
double r978146 = r978144 / r978145;
double r978147 = r978146 * r978146;
double r978148 = r978143 - r978147;
double r978149 = 2.0;
double r978150 = t;
double r978151 = l;
double r978152 = r978150 / r978151;
double r978153 = r978149 * r978152;
double r978154 = fma(r978153, r978152, r978143);
double r978155 = r978148 / r978154;
double r978156 = sqrt(r978155);
double r978157 = asin(r978156);
double r978158 = log1p(r978157);
double r978159 = expm1(r978158);
return r978159;
}



Bits error versus t



Bits error versus l



Bits error versus Om



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