Average Error: 10.1 → 10.1
Time: 1.1m
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 \cdot 1 - {\left(\frac{Om}{Omc}\right)}^{2} \cdot {\left(\frac{Om}{Omc}\right)}^{2}}{\left(1 + {\left(\frac{Om}{Omc}\right)}^{2}\right) \cdot \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 \cdot 1 - {\left(\frac{Om}{Omc}\right)}^{2} \cdot {\left(\frac{Om}{Omc}\right)}^{2}}{\left(1 + {\left(\frac{Om}{Omc}\right)}^{2}\right) \cdot \mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r4725236 = 1.0;
        double r4725237 = Om;
        double r4725238 = Omc;
        double r4725239 = r4725237 / r4725238;
        double r4725240 = 2.0;
        double r4725241 = pow(r4725239, r4725240);
        double r4725242 = r4725236 - r4725241;
        double r4725243 = t;
        double r4725244 = l;
        double r4725245 = r4725243 / r4725244;
        double r4725246 = pow(r4725245, r4725240);
        double r4725247 = r4725240 * r4725246;
        double r4725248 = r4725236 + r4725247;
        double r4725249 = r4725242 / r4725248;
        double r4725250 = sqrt(r4725249);
        double r4725251 = asin(r4725250);
        return r4725251;
}

double f(double t, double l, double Om, double Omc) {
        double r4725252 = 1.0;
        double r4725253 = r4725252 * r4725252;
        double r4725254 = Om;
        double r4725255 = Omc;
        double r4725256 = r4725254 / r4725255;
        double r4725257 = 2.0;
        double r4725258 = pow(r4725256, r4725257);
        double r4725259 = r4725258 * r4725258;
        double r4725260 = r4725253 - r4725259;
        double r4725261 = r4725252 + r4725258;
        double r4725262 = t;
        double r4725263 = l;
        double r4725264 = r4725262 / r4725263;
        double r4725265 = pow(r4725264, r4725257);
        double r4725266 = fma(r4725265, r4725257, r4725252);
        double r4725267 = r4725261 * r4725266;
        double r4725268 = r4725260 / r4725267;
        double r4725269 = sqrt(r4725268);
        double r4725270 = asin(r4725269);
        return r4725270;
}

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. Using strategy rm
  4. Applied flip--10.1

    \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{1 \cdot 1 - {\left(\frac{Om}{Omc}\right)}^{2} \cdot {\left(\frac{Om}{Omc}\right)}^{2}}{1 + {\left(\frac{Om}{Omc}\right)}^{2}}}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}}\right)\]
  5. Applied associate-/l/10.1

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

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

Reproduce

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