Average Error: 10.1 → 10.1
Time: 27.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({\left(\frac{t}{\ell}\right)}^{2}, 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({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r2619180 = 1.0;
        double r2619181 = Om;
        double r2619182 = Omc;
        double r2619183 = r2619181 / r2619182;
        double r2619184 = 2.0;
        double r2619185 = pow(r2619183, r2619184);
        double r2619186 = r2619180 - r2619185;
        double r2619187 = t;
        double r2619188 = l;
        double r2619189 = r2619187 / r2619188;
        double r2619190 = pow(r2619189, r2619184);
        double r2619191 = r2619184 * r2619190;
        double r2619192 = r2619180 + r2619191;
        double r2619193 = r2619186 / r2619192;
        double r2619194 = sqrt(r2619193);
        double r2619195 = asin(r2619194);
        return r2619195;
}

double f(double t, double l, double Om, double Omc) {
        double r2619196 = 1.0;
        double r2619197 = Om;
        double r2619198 = Omc;
        double r2619199 = r2619197 / r2619198;
        double r2619200 = 2.0;
        double r2619201 = pow(r2619199, r2619200);
        double r2619202 = r2619196 - r2619201;
        double r2619203 = t;
        double r2619204 = l;
        double r2619205 = r2619203 / r2619204;
        double r2619206 = pow(r2619205, r2619200);
        double r2619207 = fma(r2619206, r2619200, r2619196);
        double r2619208 = r2619202 / r2619207;
        double r2619209 = sqrt(r2619208);
        double r2619210 = asin(r2619209);
        return r2619210;
}

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 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)}\]
  3. Final simplification10.1

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

Reproduce

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