Average Error: 10.5 → 5.7
Time: 1.0m
Precision: 64
\[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\]
\[\begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le 1.4752565700038008 \cdot 10^{+89}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\ \end{array}\]
\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)
\begin{array}{l}
\mathbf{if}\;\frac{t}{\ell} \le 1.4752565700038008 \cdot 10^{+89}:\\
\;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}}\right)\\

\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\

\end{array}
double f(double t, double l, double Om, double Omc) {
        double r2935545 = 1.0;
        double r2935546 = Om;
        double r2935547 = Omc;
        double r2935548 = r2935546 / r2935547;
        double r2935549 = 2.0;
        double r2935550 = pow(r2935548, r2935549);
        double r2935551 = r2935545 - r2935550;
        double r2935552 = t;
        double r2935553 = l;
        double r2935554 = r2935552 / r2935553;
        double r2935555 = pow(r2935554, r2935549);
        double r2935556 = r2935549 * r2935555;
        double r2935557 = r2935545 + r2935556;
        double r2935558 = r2935551 / r2935557;
        double r2935559 = sqrt(r2935558);
        double r2935560 = asin(r2935559);
        return r2935560;
}

double f(double t, double l, double Om, double Omc) {
        double r2935561 = t;
        double r2935562 = l;
        double r2935563 = r2935561 / r2935562;
        double r2935564 = 1.4752565700038008e+89;
        bool r2935565 = r2935563 <= r2935564;
        double r2935566 = 1.0;
        double r2935567 = Om;
        double r2935568 = Omc;
        double r2935569 = r2935567 / r2935568;
        double r2935570 = r2935569 * r2935569;
        double r2935571 = r2935566 - r2935570;
        double r2935572 = sqrt(r2935571);
        double r2935573 = r2935563 * r2935563;
        double r2935574 = 2.0;
        double r2935575 = fma(r2935573, r2935574, r2935566);
        double r2935576 = sqrt(r2935575);
        double r2935577 = sqrt(r2935576);
        double r2935578 = r2935577 * r2935577;
        double r2935579 = r2935572 / r2935578;
        double r2935580 = asin(r2935579);
        double r2935581 = sqrt(r2935574);
        double r2935582 = r2935561 * r2935581;
        double r2935583 = r2935582 / r2935562;
        double r2935584 = r2935572 / r2935583;
        double r2935585 = asin(r2935584);
        double r2935586 = r2935565 ? r2935580 : r2935585;
        return r2935586;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Split input into 2 regimes
  2. if (/ t l) < 1.4752565700038008e+89

    1. Initial program 6.7

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

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

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

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

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

    if 1.4752565700038008e+89 < (/ t l)

    1. Initial program 27.2

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

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

      \[\leadsto \sin^{-1} \color{blue}{\left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}\right)}\]
    5. Taylor expanded around -inf 1.3

      \[\leadsto \sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\color{blue}{\frac{t \cdot \sqrt{2}}{\ell}}}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification5.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le 1.4752565700038008 \cdot 10^{+89}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right), 2, 1\right)}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\ \end{array}\]

Reproduce

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