Average Error: 10.2 → 10.2
Time: 26.4s
Precision: 64
\[\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{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)\]
\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{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r4330261 = 1.0;
        double r4330262 = Om;
        double r4330263 = Omc;
        double r4330264 = r4330262 / r4330263;
        double r4330265 = 2.0;
        double r4330266 = pow(r4330264, r4330265);
        double r4330267 = r4330261 - r4330266;
        double r4330268 = t;
        double r4330269 = l;
        double r4330270 = r4330268 / r4330269;
        double r4330271 = pow(r4330270, r4330265);
        double r4330272 = r4330265 * r4330271;
        double r4330273 = r4330261 + r4330272;
        double r4330274 = r4330267 / r4330273;
        double r4330275 = sqrt(r4330274);
        double r4330276 = asin(r4330275);
        return r4330276;
}

double f(double t, double l, double Om, double Omc) {
        double r4330277 = 1.0;
        double r4330278 = Om;
        double r4330279 = Omc;
        double r4330280 = r4330278 / r4330279;
        double r4330281 = 2.0;
        double r4330282 = pow(r4330280, r4330281);
        double r4330283 = r4330277 - r4330282;
        double r4330284 = t;
        double r4330285 = l;
        double r4330286 = r4330284 / r4330285;
        double r4330287 = pow(r4330286, r4330281);
        double r4330288 = fma(r4330287, r4330281, r4330277);
        double r4330289 = r4330283 / r4330288;
        double r4330290 = sqrt(r4330289);
        double r4330291 = asin(r4330290);
        return r4330291;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.2

    \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]
  2. Simplified10.2

    \[\leadsto \color{blue}{\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)}\]
  3. Final simplification10.2

    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)\]

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (t l Om Omc)
  :name "Toniolo and Linder, Equation (2)"
  (asin (sqrt (/ (- 1.0 (pow (/ Om Omc) 2.0)) (+ 1.0 (* 2.0 (pow (/ t l) 2.0)))))))