Average Error: 10.3 → 10.3
Time: 15.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{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\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{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\right)\right)
double f(double t, double l, double Om, double Omc) {
        double r186 = 1.0;
        double r187 = Om;
        double r188 = Omc;
        double r189 = r187 / r188;
        double r190 = 2.0;
        double r191 = pow(r189, r190);
        double r192 = r186 - r191;
        double r193 = t;
        double r194 = l;
        double r195 = r193 / r194;
        double r196 = pow(r195, r190);
        double r197 = r190 * r196;
        double r198 = r186 + r197;
        double r199 = r192 / r198;
        double r200 = sqrt(r199);
        double r201 = asin(r200);
        return r201;
}

double f(double t, double l, double Om, double Omc) {
        double r202 = 1.0;
        double r203 = Om;
        double r204 = Omc;
        double r205 = r203 / r204;
        double r206 = 2.0;
        double r207 = pow(r205, r206);
        double r208 = r202 - r207;
        double r209 = t;
        double r210 = l;
        double r211 = r209 / r210;
        double r212 = pow(r211, r206);
        double r213 = r206 * r212;
        double r214 = r202 + r213;
        double r215 = r208 / r214;
        double r216 = sqrt(r215);
        double r217 = asin(r216);
        double r218 = log1p(r217);
        double r219 = expm1(r218);
        return r219;
}

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

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

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

Reproduce

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