Average Error: 10.1 → 10.1
Time: 21.6s
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{\mathsf{log1p}\left(\sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)} \cdot \sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)}\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{\mathsf{log1p}\left(\sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)} \cdot \sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)}\right)}\right)
double f(double t, double l, double Om, double Omc) {
        double r45982 = 1.0;
        double r45983 = Om;
        double r45984 = Omc;
        double r45985 = r45983 / r45984;
        double r45986 = 2.0;
        double r45987 = pow(r45985, r45986);
        double r45988 = r45982 - r45987;
        double r45989 = t;
        double r45990 = l;
        double r45991 = r45989 / r45990;
        double r45992 = pow(r45991, r45986);
        double r45993 = r45986 * r45992;
        double r45994 = r45982 + r45993;
        double r45995 = r45988 / r45994;
        double r45996 = sqrt(r45995);
        double r45997 = asin(r45996);
        return r45997;
}

double f(double t, double l, double Om, double Omc) {
        double r45998 = 1.0;
        double r45999 = Om;
        double r46000 = Omc;
        double r46001 = r45999 / r46000;
        double r46002 = 2.0;
        double r46003 = pow(r46001, r46002);
        double r46004 = r45998 - r46003;
        double r46005 = t;
        double r46006 = l;
        double r46007 = r46005 / r46006;
        double r46008 = pow(r46007, r46002);
        double r46009 = fma(r46008, r46002, r45998);
        double r46010 = r46004 / r46009;
        double r46011 = expm1(r46010);
        double r46012 = sqrt(r46011);
        double r46013 = r46012 * r46012;
        double r46014 = log1p(r46013);
        double r46015 = sqrt(r46014);
        double r46016 = asin(r46015);
        return r46016;
}

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. Using strategy rm
  3. Applied log1p-expm1-u10.1

    \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}\right)\right)}}\right)\]
  4. Simplified10.1

    \[\leadsto \sin^{-1} \left(\sqrt{\mathsf{log1p}\left(\color{blue}{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)}\right)}\right)\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt10.1

    \[\leadsto \sin^{-1} \left(\sqrt{\mathsf{log1p}\left(\color{blue}{\sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)} \cdot \sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)}}\right)}\right)\]
  7. Final simplification10.1

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

Reproduce

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