Average Error: 10.3 → 10.3
Time: 24.2s
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 r2556037 = 1.0;
        double r2556038 = Om;
        double r2556039 = Omc;
        double r2556040 = r2556038 / r2556039;
        double r2556041 = 2.0;
        double r2556042 = pow(r2556040, r2556041);
        double r2556043 = r2556037 - r2556042;
        double r2556044 = t;
        double r2556045 = l;
        double r2556046 = r2556044 / r2556045;
        double r2556047 = pow(r2556046, r2556041);
        double r2556048 = r2556041 * r2556047;
        double r2556049 = r2556037 + r2556048;
        double r2556050 = r2556043 / r2556049;
        double r2556051 = sqrt(r2556050);
        double r2556052 = asin(r2556051);
        return r2556052;
}

double f(double t, double l, double Om, double Omc) {
        double r2556053 = 1.0;
        double r2556054 = Om;
        double r2556055 = Omc;
        double r2556056 = r2556054 / r2556055;
        double r2556057 = 2.0;
        double r2556058 = pow(r2556056, r2556057);
        double r2556059 = r2556053 - r2556058;
        double r2556060 = t;
        double r2556061 = l;
        double r2556062 = r2556060 / r2556061;
        double r2556063 = pow(r2556062, r2556057);
        double r2556064 = fma(r2556057, r2556063, r2556053);
        double r2556065 = r2556059 / r2556064;
        double r2556066 = sqrt(r2556065);
        double r2556067 = asin(r2556066);
        return r2556067;
}

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

    \[\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 2019171 +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)))))))