Average Error: 10.3 → 10.3
Time: 35.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(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{\frac{-1}{\ell}}{\frac{-1}{t}}\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{\frac{-1}{\ell}}{\frac{-1}{t}}\right)}^{2}, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r75162 = 1.0;
        double r75163 = Om;
        double r75164 = Omc;
        double r75165 = r75163 / r75164;
        double r75166 = 2.0;
        double r75167 = pow(r75165, r75166);
        double r75168 = r75162 - r75167;
        double r75169 = t;
        double r75170 = l;
        double r75171 = r75169 / r75170;
        double r75172 = pow(r75171, r75166);
        double r75173 = r75166 * r75172;
        double r75174 = r75162 + r75173;
        double r75175 = r75168 / r75174;
        double r75176 = sqrt(r75175);
        double r75177 = asin(r75176);
        return r75177;
}

double f(double t, double l, double Om, double Omc) {
        double r75178 = 1.0;
        double r75179 = Om;
        double r75180 = Omc;
        double r75181 = r75179 / r75180;
        double r75182 = 2.0;
        double r75183 = pow(r75181, r75182);
        double r75184 = r75178 - r75183;
        double r75185 = -1.0;
        double r75186 = l;
        double r75187 = r75185 / r75186;
        double r75188 = t;
        double r75189 = r75185 / r75188;
        double r75190 = r75187 / r75189;
        double r75191 = pow(r75190, r75182);
        double r75192 = fma(r75182, r75191, r75178);
        double r75193 = r75184 / r75192;
        double r75194 = sqrt(r75193);
        double r75195 = asin(r75194);
        return r75195;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.3

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

    \[\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. Taylor expanded around -inf 50.8

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

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

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

Reproduce

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