\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(\frac{1}{\sqrt{\sqrt{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}} \cdot \sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\sqrt{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r72139 = 1.0;
double r72140 = Om;
double r72141 = Omc;
double r72142 = r72140 / r72141;
double r72143 = 2.0;
double r72144 = pow(r72142, r72143);
double r72145 = r72139 - r72144;
double r72146 = t;
double r72147 = l;
double r72148 = r72146 / r72147;
double r72149 = pow(r72148, r72143);
double r72150 = r72143 * r72149;
double r72151 = r72139 + r72150;
double r72152 = r72145 / r72151;
double r72153 = sqrt(r72152);
double r72154 = asin(r72153);
return r72154;
}
double f(double t, double l, double Om, double Omc) {
double r72155 = 1.0;
double r72156 = 1.0;
double r72157 = 2.0;
double r72158 = t;
double r72159 = l;
double r72160 = r72158 / r72159;
double r72161 = pow(r72160, r72157);
double r72162 = r72157 * r72161;
double r72163 = r72156 + r72162;
double r72164 = sqrt(r72163);
double r72165 = sqrt(r72164);
double r72166 = r72155 / r72165;
double r72167 = Om;
double r72168 = Omc;
double r72169 = r72167 / r72168;
double r72170 = pow(r72169, r72157);
double r72171 = r72156 - r72170;
double r72172 = r72171 / r72164;
double r72173 = sqrt(r72172);
double r72174 = r72166 * r72173;
double r72175 = asin(r72174);
double r72176 = log1p(r72175);
double r72177 = expm1(r72176);
return r72177;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
Initial program 10.3
rmApplied expm1-log1p-u10.3
rmApplied add-sqr-sqrt10.3
Applied *-un-lft-identity10.3
Applied times-frac10.3
Applied sqrt-prod10.4
rmApplied sqrt-div10.4
Simplified10.4
Final simplification10.4
herbie shell --seed 2020002 +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)))))))