Average Error: 10.3 → 10.3
Time: 29.1s
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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r1210954 = 1.0;
        double r1210955 = Om;
        double r1210956 = Omc;
        double r1210957 = r1210955 / r1210956;
        double r1210958 = 2.0;
        double r1210959 = pow(r1210957, r1210958);
        double r1210960 = r1210954 - r1210959;
        double r1210961 = t;
        double r1210962 = l;
        double r1210963 = r1210961 / r1210962;
        double r1210964 = pow(r1210963, r1210958);
        double r1210965 = r1210958 * r1210964;
        double r1210966 = r1210954 + r1210965;
        double r1210967 = r1210960 / r1210966;
        double r1210968 = sqrt(r1210967);
        double r1210969 = asin(r1210968);
        return r1210969;
}

double f(double t, double l, double Om, double Omc) {
        double r1210970 = 1.0;
        double r1210971 = Om;
        double r1210972 = Omc;
        double r1210973 = r1210971 / r1210972;
        double r1210974 = r1210973 * r1210973;
        double r1210975 = r1210970 - r1210974;
        double r1210976 = t;
        double r1210977 = l;
        double r1210978 = r1210976 / r1210977;
        double r1210979 = r1210978 * r1210978;
        double r1210980 = 2.0;
        double r1210981 = fma(r1210979, r1210980, r1210970);
        double r1210982 = r1210975 / r1210981;
        double r1210983 = sqrt(r1210982);
        double r1210984 = asin(r1210983);
        return r1210984;
}

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

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

Reproduce

herbie shell --seed 2019144 +o rules:numerics
(FPCore (t l Om Omc)
  :name "Toniolo and Linder, Equation (2)"
  (asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))))