Average Error: 10.7 → 10.7
Time: 39.2s
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{\left(1 + \frac{Om}{Omc}\right) \cdot \frac{1 - \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 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{\left(1 + \frac{Om}{Omc}\right) \cdot \frac{1 - \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)\right)\right)
double f(double t, double l, double Om, double Omc) {
        double r1949887 = 1.0;
        double r1949888 = Om;
        double r1949889 = Omc;
        double r1949890 = r1949888 / r1949889;
        double r1949891 = 2.0;
        double r1949892 = pow(r1949890, r1949891);
        double r1949893 = r1949887 - r1949892;
        double r1949894 = t;
        double r1949895 = l;
        double r1949896 = r1949894 / r1949895;
        double r1949897 = pow(r1949896, r1949891);
        double r1949898 = r1949891 * r1949897;
        double r1949899 = r1949887 + r1949898;
        double r1949900 = r1949893 / r1949899;
        double r1949901 = sqrt(r1949900);
        double r1949902 = asin(r1949901);
        return r1949902;
}

double f(double t, double l, double Om, double Omc) {
        double r1949903 = 1.0;
        double r1949904 = Om;
        double r1949905 = Omc;
        double r1949906 = r1949904 / r1949905;
        double r1949907 = r1949903 + r1949906;
        double r1949908 = r1949903 - r1949906;
        double r1949909 = t;
        double r1949910 = l;
        double r1949911 = r1949909 / r1949910;
        double r1949912 = r1949911 * r1949911;
        double r1949913 = 2.0;
        double r1949914 = fma(r1949912, r1949913, r1949903);
        double r1949915 = r1949908 / r1949914;
        double r1949916 = r1949907 * r1949915;
        double r1949917 = sqrt(r1949916);
        double r1949918 = asin(r1949917);
        double r1949919 = log1p(r1949918);
        double r1949920 = expm1(r1949919);
        return r1949920;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.7

    \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]
  2. Simplified10.7

    \[\leadsto \color{blue}{\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)}\]
  3. Using strategy rm
  4. Applied expm1-log1p-u10.7

    \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)\right)\right)}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity10.7

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

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

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

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

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

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

Reproduce

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