Average Error: 10.6 → 10.6
Time: 21.5s
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 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{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 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(2, {\left(\frac{t}{\ell}\right)}^{2}, 1\right)}}\right)
double f(double t, double l, double Om, double Omc) {
        double r59427 = 1.0;
        double r59428 = Om;
        double r59429 = Omc;
        double r59430 = r59428 / r59429;
        double r59431 = 2.0;
        double r59432 = pow(r59430, r59431);
        double r59433 = r59427 - r59432;
        double r59434 = t;
        double r59435 = l;
        double r59436 = r59434 / r59435;
        double r59437 = pow(r59436, r59431);
        double r59438 = r59431 * r59437;
        double r59439 = r59427 + r59438;
        double r59440 = r59433 / r59439;
        double r59441 = sqrt(r59440);
        double r59442 = asin(r59441);
        return r59442;
}

double f(double t, double l, double Om, double Omc) {
        double r59443 = 1.0;
        double r59444 = Om;
        double r59445 = Omc;
        double r59446 = r59444 / r59445;
        double r59447 = 2.0;
        double r59448 = pow(r59446, r59447);
        double r59449 = r59443 - r59448;
        double r59450 = t;
        double r59451 = l;
        double r59452 = r59450 / r59451;
        double r59453 = pow(r59452, r59447);
        double r59454 = fma(r59447, r59453, r59443);
        double r59455 = r59449 / r59454;
        double r59456 = sqrt(r59455);
        double r59457 = asin(r59456);
        return r59457;
}

Error

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus Omc

Derivation

  1. Initial program 10.6

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

    \[\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 pow110.6

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

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

Reproduce

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