Average Error: 10.1 → 10.1
Time: 22.3s
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 r46033 = 1.0;
        double r46034 = Om;
        double r46035 = Omc;
        double r46036 = r46034 / r46035;
        double r46037 = 2.0;
        double r46038 = pow(r46036, r46037);
        double r46039 = r46033 - r46038;
        double r46040 = t;
        double r46041 = l;
        double r46042 = r46040 / r46041;
        double r46043 = pow(r46042, r46037);
        double r46044 = r46037 * r46043;
        double r46045 = r46033 + r46044;
        double r46046 = r46039 / r46045;
        double r46047 = sqrt(r46046);
        double r46048 = asin(r46047);
        return r46048;
}

double f(double t, double l, double Om, double Omc) {
        double r46049 = 1.0;
        double r46050 = Om;
        double r46051 = Omc;
        double r46052 = r46050 / r46051;
        double r46053 = 2.0;
        double r46054 = pow(r46052, r46053);
        double r46055 = r46049 - r46054;
        double r46056 = t;
        double r46057 = l;
        double r46058 = r46056 / r46057;
        double r46059 = pow(r46058, r46053);
        double r46060 = fma(r46059, r46053, r46049);
        double r46061 = r46055 / r46060;
        double r46062 = expm1(r46061);
        double r46063 = sqrt(r46062);
        double r46064 = r46063 * r46063;
        double r46065 = log1p(r46064);
        double r46066 = sqrt(r46065);
        double r46067 = asin(r46066);
        return r46067;
}

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)))))))