Average Error: 10.0 → 10.0
Time: 58.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 r2316050 = 1.0;
        double r2316051 = Om;
        double r2316052 = Omc;
        double r2316053 = r2316051 / r2316052;
        double r2316054 = 2.0;
        double r2316055 = pow(r2316053, r2316054);
        double r2316056 = r2316050 - r2316055;
        double r2316057 = t;
        double r2316058 = l;
        double r2316059 = r2316057 / r2316058;
        double r2316060 = pow(r2316059, r2316054);
        double r2316061 = r2316054 * r2316060;
        double r2316062 = r2316050 + r2316061;
        double r2316063 = r2316056 / r2316062;
        double r2316064 = sqrt(r2316063);
        double r2316065 = asin(r2316064);
        return r2316065;
}

double f(double t, double l, double Om, double Omc) {
        double r2316066 = 1.0;
        double r2316067 = Om;
        double r2316068 = Omc;
        double r2316069 = r2316067 / r2316068;
        double r2316070 = 2.0;
        double r2316071 = pow(r2316069, r2316070);
        double r2316072 = r2316066 - r2316071;
        double r2316073 = t;
        double r2316074 = l;
        double r2316075 = r2316073 / r2316074;
        double r2316076 = pow(r2316075, r2316070);
        double r2316077 = fma(r2316070, r2316076, r2316066);
        double r2316078 = r2316072 / r2316077;
        double r2316079 = sqrt(r2316078);
        double r2316080 = asin(r2316079);
        return r2316080;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.0

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

    \[\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.0

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