Average Error: 10.2 → 10.2
Time: 8.5s
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 - \mathsf{log1p}\left(\mathsf{expm1}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\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 - \mathsf{log1p}\left(\mathsf{expm1}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)
double f(double t, double l, double Om, double Omc) {
        double r65706 = 1.0;
        double r65707 = Om;
        double r65708 = Omc;
        double r65709 = r65707 / r65708;
        double r65710 = 2.0;
        double r65711 = pow(r65709, r65710);
        double r65712 = r65706 - r65711;
        double r65713 = t;
        double r65714 = l;
        double r65715 = r65713 / r65714;
        double r65716 = pow(r65715, r65710);
        double r65717 = r65710 * r65716;
        double r65718 = r65706 + r65717;
        double r65719 = r65712 / r65718;
        double r65720 = sqrt(r65719);
        double r65721 = asin(r65720);
        return r65721;
}

double f(double t, double l, double Om, double Omc) {
        double r65722 = 1.0;
        double r65723 = Om;
        double r65724 = Omc;
        double r65725 = r65723 / r65724;
        double r65726 = 2.0;
        double r65727 = pow(r65725, r65726);
        double r65728 = expm1(r65727);
        double r65729 = log1p(r65728);
        double r65730 = r65722 - r65729;
        double r65731 = t;
        double r65732 = l;
        double r65733 = r65731 / r65732;
        double r65734 = pow(r65733, r65726);
        double r65735 = r65726 * r65734;
        double r65736 = r65722 + r65735;
        double r65737 = r65730 / r65736;
        double r65738 = sqrt(r65737);
        double r65739 = asin(r65738);
        return r65739;
}

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.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 log1p-expm1-u10.2

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

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

Reproduce

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