Average Error: 1.6 → 1.6
Time: 11.7s
Precision: 64
\[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
\[\sqrt{\frac{1}{2} \cdot \left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{\frac{Om}{\ell}}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1\right)}\]
\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}
\sqrt{\frac{1}{2} \cdot \left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{\frac{Om}{\ell}}\right)}^{2}, {\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}, 1\right)}} + 1\right)}
double f(double l, double Om, double kx, double ky) {
        double r725570 = 1.0;
        double r725571 = 2.0;
        double r725572 = r725570 / r725571;
        double r725573 = l;
        double r725574 = r725571 * r725573;
        double r725575 = Om;
        double r725576 = r725574 / r725575;
        double r725577 = pow(r725576, r725571);
        double r725578 = kx;
        double r725579 = sin(r725578);
        double r725580 = pow(r725579, r725571);
        double r725581 = ky;
        double r725582 = sin(r725581);
        double r725583 = pow(r725582, r725571);
        double r725584 = r725580 + r725583;
        double r725585 = r725577 * r725584;
        double r725586 = r725570 + r725585;
        double r725587 = sqrt(r725586);
        double r725588 = r725570 / r725587;
        double r725589 = r725570 + r725588;
        double r725590 = r725572 * r725589;
        double r725591 = sqrt(r725590);
        return r725591;
}

double f(double l, double Om, double kx, double ky) {
        double r725592 = 1.0;
        double r725593 = 2.0;
        double r725594 = r725592 / r725593;
        double r725595 = Om;
        double r725596 = l;
        double r725597 = r725595 / r725596;
        double r725598 = r725593 / r725597;
        double r725599 = pow(r725598, r725593);
        double r725600 = kx;
        double r725601 = sin(r725600);
        double r725602 = pow(r725601, r725593);
        double r725603 = ky;
        double r725604 = sin(r725603);
        double r725605 = pow(r725604, r725593);
        double r725606 = r725602 + r725605;
        double r725607 = fma(r725599, r725606, r725592);
        double r725608 = sqrt(r725607);
        double r725609 = r725592 / r725608;
        double r725610 = r725609 + r725592;
        double r725611 = r725594 * r725610;
        double r725612 = sqrt(r725611);
        return r725612;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.6

    \[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
  2. Simplified1.6

    \[\leadsto \color{blue}{\sqrt{\left(\frac{1}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{\frac{Om}{\ell}}\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}} + 1\right) \cdot \frac{1}{2}}}\]
  3. Final simplification1.6

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

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (l Om kx ky)
  :name "Toniolo and Linder, Equation (3a)"
  (sqrt (* (/ 1.0 2.0) (+ 1.0 (/ 1.0 (sqrt (+ 1.0 (* (pow (/ (* 2.0 l) Om) 2.0) (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))))))))