Average Error: 10.3 → 1.1
Time: 25.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)\]
\[\begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le -6.888860690548247 \cdot 10^{+70}:\\ \;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\ \mathbf{elif}\;\frac{t}{\ell} \le 8.516626991432281 \cdot 10^{+142}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\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 -6.888860690548247 \cdot 10^{+70}:\\
\;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\

\mathbf{elif}\;\frac{t}{\ell} \le 8.516626991432281 \cdot 10^{+142}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)\\

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

\end{array}
double f(double t, double l, double Om, double Omc) {
        double r1808999 = 1.0;
        double r1809000 = Om;
        double r1809001 = Omc;
        double r1809002 = r1809000 / r1809001;
        double r1809003 = 2.0;
        double r1809004 = pow(r1809002, r1809003);
        double r1809005 = r1808999 - r1809004;
        double r1809006 = t;
        double r1809007 = l;
        double r1809008 = r1809006 / r1809007;
        double r1809009 = pow(r1809008, r1809003);
        double r1809010 = r1809003 * r1809009;
        double r1809011 = r1808999 + r1809010;
        double r1809012 = r1809005 / r1809011;
        double r1809013 = sqrt(r1809012);
        double r1809014 = asin(r1809013);
        return r1809014;
}

double f(double t, double l, double Om, double Omc) {
        double r1809015 = t;
        double r1809016 = l;
        double r1809017 = r1809015 / r1809016;
        double r1809018 = -6.888860690548247e+70;
        bool r1809019 = r1809017 <= r1809018;
        double r1809020 = 1.0;
        double r1809021 = Om;
        double r1809022 = Omc;
        double r1809023 = r1809021 / r1809022;
        double r1809024 = r1809023 * r1809023;
        double r1809025 = exp(r1809024);
        double r1809026 = log(r1809025);
        double r1809027 = r1809020 - r1809026;
        double r1809028 = sqrt(r1809027);
        double r1809029 = 2.0;
        double r1809030 = sqrt(r1809029);
        double r1809031 = r1809030 * r1809015;
        double r1809032 = r1809031 / r1809016;
        double r1809033 = r1809028 / r1809032;
        double r1809034 = fabs(r1809033);
        double r1809035 = asin(r1809034);
        double r1809036 = 8.516626991432281e+142;
        bool r1809037 = r1809017 <= r1809036;
        double r1809038 = r1809017 * r1809017;
        double r1809039 = fma(r1809038, r1809029, r1809020);
        double r1809040 = r1809027 / r1809039;
        double r1809041 = sqrt(r1809040);
        double r1809042 = asin(r1809041);
        double r1809043 = r1809037 ? r1809042 : r1809035;
        double r1809044 = r1809019 ? r1809035 : r1809043;
        return r1809044;
}

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) < -6.888860690548247e+70 or 8.516626991432281e+142 < (/ t l)

    1. Initial program 28.4

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

      \[\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 add-log-exp28.4

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

      \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\color{blue}{\sqrt{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)} \cdot \sqrt{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}}}\right)\]
    7. Applied add-sqr-sqrt28.4

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

      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\sqrt{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}} \cdot \frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\sqrt{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}}}\right)\]
    9. Applied rem-sqrt-square28.4

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

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

    if -6.888860690548247e+70 < (/ t l) < 8.516626991432281e+142

    1. Initial program 1.1

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

      \[\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 add-log-exp1.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{t}{\ell} \le -6.888860690548247 \cdot 10^{+70}:\\ \;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\ \mathbf{elif}\;\frac{t}{\ell} \le 8.516626991432281 \cdot 10^{+142}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}{\mathsf{fma}\left(\frac{t}{\ell} \cdot \frac{t}{\ell}, 2, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\ \end{array}\]

Reproduce

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