Average Error: 10.1 → 10.1
Time: 29.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)\]
\[\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)\]
\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 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r2496103 = 1.0;
        double r2496104 = Om;
        double r2496105 = Omc;
        double r2496106 = r2496104 / r2496105;
        double r2496107 = 2.0;
        double r2496108 = pow(r2496106, r2496107);
        double r2496109 = r2496103 - r2496108;
        double r2496110 = t;
        double r2496111 = l;
        double r2496112 = r2496110 / r2496111;
        double r2496113 = pow(r2496112, r2496107);
        double r2496114 = r2496107 * r2496113;
        double r2496115 = r2496103 + r2496114;
        double r2496116 = r2496109 / r2496115;
        double r2496117 = sqrt(r2496116);
        double r2496118 = asin(r2496117);
        return r2496118;
}

double f(double t, double l, double Om, double Omc) {
        double r2496119 = 1.0;
        double r2496120 = Om;
        double r2496121 = Omc;
        double r2496122 = r2496120 / r2496121;
        double r2496123 = 2.0;
        double r2496124 = pow(r2496122, r2496123);
        double r2496125 = r2496119 - r2496124;
        double r2496126 = t;
        double r2496127 = l;
        double r2496128 = r2496126 / r2496127;
        double r2496129 = pow(r2496128, r2496123);
        double r2496130 = fma(r2496129, r2496123, r2496119);
        double r2496131 = r2496125 / r2496130;
        double r2496132 = sqrt(r2496131);
        double r2496133 = asin(r2496132);
        return r2496133;
}

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. Simplified10.1

    \[\leadsto \color{blue}{\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)}\]
  3. Final simplification10.1

    \[\leadsto \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)\]

Reproduce

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