Average Error: 10.2 → 10.2
Time: 14.2s
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(\sqrt[3]{\frac{Om}{Omc}} \cdot \sqrt[3]{\frac{Om}{Omc}}\right)}^{2} \cdot {\left(\sqrt[3]{\frac{Om}{Omc}}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{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(\sqrt[3]{\frac{Om}{Omc}} \cdot \sqrt[3]{\frac{Om}{Omc}}\right)}^{2} \cdot {\left(\sqrt[3]{\frac{Om}{Omc}}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r63384 = 1.0;
        double r63385 = Om;
        double r63386 = Omc;
        double r63387 = r63385 / r63386;
        double r63388 = 2.0;
        double r63389 = pow(r63387, r63388);
        double r63390 = r63384 - r63389;
        double r63391 = t;
        double r63392 = l;
        double r63393 = r63391 / r63392;
        double r63394 = pow(r63393, r63388);
        double r63395 = r63388 * r63394;
        double r63396 = r63384 + r63395;
        double r63397 = r63390 / r63396;
        double r63398 = sqrt(r63397);
        double r63399 = asin(r63398);
        return r63399;
}

double f(double t, double l, double Om, double Omc) {
        double r63400 = 1.0;
        double r63401 = Om;
        double r63402 = Omc;
        double r63403 = r63401 / r63402;
        double r63404 = cbrt(r63403);
        double r63405 = r63404 * r63404;
        double r63406 = 2.0;
        double r63407 = pow(r63405, r63406);
        double r63408 = pow(r63404, r63406);
        double r63409 = r63407 * r63408;
        double r63410 = r63400 - r63409;
        double r63411 = t;
        double r63412 = l;
        double r63413 = r63411 / r63412;
        double r63414 = pow(r63413, r63406);
        double r63415 = fma(r63406, r63414, r63400);
        double r63416 = r63410 / r63415;
        double r63417 = sqrt(r63416);
        double r63418 = asin(r63417);
        return r63418;
}

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(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt10.2

    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\color{blue}{\left(\left(\sqrt[3]{\frac{Om}{Omc}} \cdot \sqrt[3]{\frac{Om}{Omc}}\right) \cdot \sqrt[3]{\frac{Om}{Omc}}\right)}}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)\]
  5. Applied unpow-prod-down10.2

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

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

Reproduce

herbie shell --seed 2020047 +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)))))))