Average Error: 10.2 → 10.3
Time: 25.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)\]
\[\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}}{\sqrt{\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)
\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}}{\sqrt{\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 r57224 = 1.0;
        double r57225 = Om;
        double r57226 = Omc;
        double r57227 = r57225 / r57226;
        double r57228 = 2.0;
        double r57229 = pow(r57227, r57228);
        double r57230 = r57224 - r57229;
        double r57231 = t;
        double r57232 = l;
        double r57233 = r57231 / r57232;
        double r57234 = pow(r57233, r57228);
        double r57235 = r57228 * r57234;
        double r57236 = r57224 + r57235;
        double r57237 = r57230 / r57236;
        double r57238 = sqrt(r57237);
        double r57239 = asin(r57238);
        return r57239;
}

double f(double t, double l, double Om, double Omc) {
        double r57240 = 1.0;
        double r57241 = Om;
        double r57242 = Omc;
        double r57243 = r57241 / r57242;
        double r57244 = 2.0;
        double r57245 = pow(r57243, r57244);
        double r57246 = r57240 - r57245;
        double r57247 = t;
        double r57248 = l;
        double r57249 = r57247 / r57248;
        double r57250 = pow(r57249, r57244);
        double r57251 = fma(r57244, r57250, r57240);
        double r57252 = sqrt(r57251);
        double r57253 = r57246 / r57252;
        double r57254 = fma(r57250, r57244, r57240);
        double r57255 = sqrt(r57254);
        double r57256 = r57253 / r57255;
        double r57257 = sqrt(r57256);
        double r57258 = asin(r57257);
        double r57259 = log1p(r57258);
        double r57260 = expm1(r57259);
        return r57260;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.2

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

    \[\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. Simplified10.3

    \[\leadsto \mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\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)\right)}\right)\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt10.3

    \[\leadsto \mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\sqrt{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)} \cdot \sqrt{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}}}\right)\right)\right)\]
  7. Applied associate-/r*10.3

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

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

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

Reproduce

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