Average Error: 10.4 → 10.4
Time: 9.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)\]
\[\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\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)
\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\right)\right)
double f(double t, double l, double Om, double Omc) {
        double r69960 = 1.0;
        double r69961 = Om;
        double r69962 = Omc;
        double r69963 = r69961 / r69962;
        double r69964 = 2.0;
        double r69965 = pow(r69963, r69964);
        double r69966 = r69960 - r69965;
        double r69967 = t;
        double r69968 = l;
        double r69969 = r69967 / r69968;
        double r69970 = pow(r69969, r69964);
        double r69971 = r69964 * r69970;
        double r69972 = r69960 + r69971;
        double r69973 = r69966 / r69972;
        double r69974 = sqrt(r69973);
        double r69975 = asin(r69974);
        return r69975;
}

double f(double t, double l, double Om, double Omc) {
        double r69976 = 1.0;
        double r69977 = Om;
        double r69978 = Omc;
        double r69979 = r69977 / r69978;
        double r69980 = 2.0;
        double r69981 = pow(r69979, r69980);
        double r69982 = r69976 - r69981;
        double r69983 = t;
        double r69984 = l;
        double r69985 = r69983 / r69984;
        double r69986 = pow(r69985, r69980);
        double r69987 = r69980 * r69986;
        double r69988 = r69976 + r69987;
        double r69989 = r69982 / r69988;
        double r69990 = sqrt(r69989);
        double r69991 = asin(r69990);
        double r69992 = log1p(r69991);
        double r69993 = expm1(r69992);
        return r69993;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 10.4

    \[\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 expm1-log1p-u10.4

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

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

Reproduce

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