Average Error: 10.2 → 10.3
Time: 11.6s
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(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\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(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r61511 = 1.0;
        double r61512 = Om;
        double r61513 = Omc;
        double r61514 = r61512 / r61513;
        double r61515 = 2.0;
        double r61516 = pow(r61514, r61515);
        double r61517 = r61511 - r61516;
        double r61518 = t;
        double r61519 = l;
        double r61520 = r61518 / r61519;
        double r61521 = pow(r61520, r61515);
        double r61522 = r61515 * r61521;
        double r61523 = r61511 + r61522;
        double r61524 = r61517 / r61523;
        double r61525 = sqrt(r61524);
        double r61526 = asin(r61525);
        return r61526;
}

double f(double t, double l, double Om, double Omc) {
        double r61527 = 1.0;
        double r61528 = Om;
        double r61529 = Omc;
        double r61530 = r61528 / r61529;
        double r61531 = 2.0;
        double r61532 = pow(r61530, r61531);
        double r61533 = r61527 - r61532;
        double r61534 = sqrt(r61533);
        double r61535 = t;
        double r61536 = l;
        double r61537 = r61535 / r61536;
        double r61538 = pow(r61537, r61531);
        double r61539 = fma(r61531, r61538, r61527);
        double r61540 = sqrt(r61539);
        double r61541 = r61534 / r61540;
        double r61542 = asin(r61541);
        return r61542;
}

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 sqrt-div10.3

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

    \[\leadsto \sin^{-1} \left(\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\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)))))))