Average Error: 10.1 → 10.1
Time: 25.3s
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 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\mathsf{fma}\left(\frac{t}{\ell} \cdot 2, \frac{t}{\ell}, 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 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\mathsf{fma}\left(\frac{t}{\ell} \cdot 2, \frac{t}{\ell}, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r907786 = 1.0;
        double r907787 = Om;
        double r907788 = Omc;
        double r907789 = r907787 / r907788;
        double r907790 = 2.0;
        double r907791 = pow(r907789, r907790);
        double r907792 = r907786 - r907791;
        double r907793 = t;
        double r907794 = l;
        double r907795 = r907793 / r907794;
        double r907796 = pow(r907795, r907790);
        double r907797 = r907790 * r907796;
        double r907798 = r907786 + r907797;
        double r907799 = r907792 / r907798;
        double r907800 = sqrt(r907799);
        double r907801 = asin(r907800);
        return r907801;
}

double f(double t, double l, double Om, double Omc) {
        double r907802 = 1.0;
        double r907803 = Om;
        double r907804 = Omc;
        double r907805 = r907803 / r907804;
        double r907806 = r907805 * r907805;
        double r907807 = exp(r907806);
        double r907808 = log(r907807);
        double r907809 = r907802 - r907808;
        double r907810 = t;
        double r907811 = l;
        double r907812 = r907810 / r907811;
        double r907813 = 2.0;
        double r907814 = r907812 * r907813;
        double r907815 = fma(r907814, r907812, r907802);
        double r907816 = r907809 / r907815;
        double r907817 = sqrt(r907816);
        double r907818 = asin(r907817);
        return r907818;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.1

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

    \[\leadsto \color{blue}{\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot 2, \frac{t}{\ell}, 1\right)}}\right)}\]
  3. Using strategy rm
  4. Applied add-log-exp10.1

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

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

Reproduce

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