Average Error: 10.2 → 10.2
Time: 24.5s
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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r1644543 = 1.0;
        double r1644544 = Om;
        double r1644545 = Omc;
        double r1644546 = r1644544 / r1644545;
        double r1644547 = 2.0;
        double r1644548 = pow(r1644546, r1644547);
        double r1644549 = r1644543 - r1644548;
        double r1644550 = t;
        double r1644551 = l;
        double r1644552 = r1644550 / r1644551;
        double r1644553 = pow(r1644552, r1644547);
        double r1644554 = r1644547 * r1644553;
        double r1644555 = r1644543 + r1644554;
        double r1644556 = r1644549 / r1644555;
        double r1644557 = sqrt(r1644556);
        double r1644558 = asin(r1644557);
        return r1644558;
}

double f(double t, double l, double Om, double Omc) {
        double r1644559 = 1.0;
        double r1644560 = Om;
        double r1644561 = Omc;
        double r1644562 = r1644560 / r1644561;
        double r1644563 = r1644562 * r1644562;
        double r1644564 = r1644559 - r1644563;
        double r1644565 = t;
        double r1644566 = l;
        double r1644567 = r1644565 / r1644566;
        double r1644568 = r1644567 * r1644567;
        double r1644569 = 2.0;
        double r1644570 = fma(r1644568, r1644569, r1644559);
        double r1644571 = r1644564 / r1644570;
        double r1644572 = sqrt(r1644571);
        double r1644573 = asin(r1644572);
        return r1644573;
}

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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}\right)}\]
  3. Final simplification10.2

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

Reproduce

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