Average Error: 10.2 → 10.2
Time: 25.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 - {\left(\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(\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 r2401716 = 1.0;
        double r2401717 = Om;
        double r2401718 = Omc;
        double r2401719 = r2401717 / r2401718;
        double r2401720 = 2.0;
        double r2401721 = pow(r2401719, r2401720);
        double r2401722 = r2401716 - r2401721;
        double r2401723 = t;
        double r2401724 = l;
        double r2401725 = r2401723 / r2401724;
        double r2401726 = pow(r2401725, r2401720);
        double r2401727 = r2401720 * r2401726;
        double r2401728 = r2401716 + r2401727;
        double r2401729 = r2401722 / r2401728;
        double r2401730 = sqrt(r2401729);
        double r2401731 = asin(r2401730);
        return r2401731;
}

double f(double t, double l, double Om, double Omc) {
        double r2401732 = 1.0;
        double r2401733 = Om;
        double r2401734 = Omc;
        double r2401735 = r2401733 / r2401734;
        double r2401736 = 2.0;
        double r2401737 = pow(r2401735, r2401736);
        double r2401738 = r2401732 - r2401737;
        double r2401739 = t;
        double r2401740 = l;
        double r2401741 = r2401739 / r2401740;
        double r2401742 = pow(r2401741, r2401736);
        double r2401743 = fma(r2401736, r2401742, r2401732);
        double r2401744 = r2401738 / r2401743;
        double r2401745 = sqrt(r2401744);
        double r2401746 = asin(r2401745);
        return r2401746;
}

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. Final simplification10.2

    \[\leadsto \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)\]

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)))))))