Average Error: 10.5 → 10.6
Time: 22.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)\]
\[\sin^{-1} \left(\left|\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\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(\left|\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right|\right)
double f(double t, double l, double Om, double Omc) {
        double r52466 = 1.0;
        double r52467 = Om;
        double r52468 = Omc;
        double r52469 = r52467 / r52468;
        double r52470 = 2.0;
        double r52471 = pow(r52469, r52470);
        double r52472 = r52466 - r52471;
        double r52473 = t;
        double r52474 = l;
        double r52475 = r52473 / r52474;
        double r52476 = pow(r52475, r52470);
        double r52477 = r52470 * r52476;
        double r52478 = r52466 + r52477;
        double r52479 = r52472 / r52478;
        double r52480 = sqrt(r52479);
        double r52481 = asin(r52480);
        return r52481;
}

double f(double t, double l, double Om, double Omc) {
        double r52482 = 1.0;
        double r52483 = Om;
        double r52484 = Omc;
        double r52485 = r52483 / r52484;
        double r52486 = 2.0;
        double r52487 = pow(r52485, r52486);
        double r52488 = r52482 - r52487;
        double r52489 = sqrt(r52488);
        double r52490 = t;
        double r52491 = l;
        double r52492 = r52490 / r52491;
        double r52493 = pow(r52492, r52486);
        double r52494 = fma(r52486, r52493, r52482);
        double r52495 = sqrt(r52494);
        double r52496 = r52489 / r52495;
        double r52497 = fabs(r52496);
        double r52498 = asin(r52497);
        return r52498;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.5

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

    \[\leadsto \color{blue}{\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt10.6

    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)} \cdot \sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}}}\right)\]
  5. Applied add-sqr-sqrt10.6

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

    \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}} \cdot \frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}}}\right)\]
  7. Applied rem-sqrt-square10.6

    \[\leadsto \sin^{-1} \color{blue}{\left(\left|\frac{\sqrt{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{\sqrt{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right|\right)}\]
  8. Final simplification10.6

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

Reproduce

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