Average Error: 9.8 → 9.8
Time: 22.8s
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 r2786920 = 1.0;
        double r2786921 = Om;
        double r2786922 = Omc;
        double r2786923 = r2786921 / r2786922;
        double r2786924 = 2.0;
        double r2786925 = pow(r2786923, r2786924);
        double r2786926 = r2786920 - r2786925;
        double r2786927 = t;
        double r2786928 = l;
        double r2786929 = r2786927 / r2786928;
        double r2786930 = pow(r2786929, r2786924);
        double r2786931 = r2786924 * r2786930;
        double r2786932 = r2786920 + r2786931;
        double r2786933 = r2786926 / r2786932;
        double r2786934 = sqrt(r2786933);
        double r2786935 = asin(r2786934);
        return r2786935;
}

double f(double t, double l, double Om, double Omc) {
        double r2786936 = 1.0;
        double r2786937 = Om;
        double r2786938 = Omc;
        double r2786939 = r2786937 / r2786938;
        double r2786940 = 2.0;
        double r2786941 = pow(r2786939, r2786940);
        double r2786942 = r2786936 - r2786941;
        double r2786943 = t;
        double r2786944 = l;
        double r2786945 = r2786943 / r2786944;
        double r2786946 = pow(r2786945, r2786940);
        double r2786947 = fma(r2786940, r2786946, r2786936);
        double r2786948 = r2786942 / r2786947;
        double r2786949 = sqrt(r2786948);
        double r2786950 = asin(r2786949);
        return r2786950;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 9.8

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

    \[\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 simplification9.8

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