Average Error: 1.6 → 1.6
Time: 48.2s
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{\log \left(e^{\frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\ell}{\frac{Om}{2}} \cdot \frac{\ell}{\frac{Om}{2}}, \mathsf{fma}\left(\sin ky, \sin ky, \sin kx \cdot \sin kx\right), 1\right)}}}\right) + \frac{1}{2}}\]
\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{\log \left(e^{\frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\ell}{\frac{Om}{2}} \cdot \frac{\ell}{\frac{Om}{2}}, \mathsf{fma}\left(\sin ky, \sin ky, \sin kx \cdot \sin kx\right), 1\right)}}}\right) + \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r1860554 = 1.0;
        double r1860555 = 2.0;
        double r1860556 = r1860554 / r1860555;
        double r1860557 = l;
        double r1860558 = r1860555 * r1860557;
        double r1860559 = Om;
        double r1860560 = r1860558 / r1860559;
        double r1860561 = pow(r1860560, r1860555);
        double r1860562 = kx;
        double r1860563 = sin(r1860562);
        double r1860564 = pow(r1860563, r1860555);
        double r1860565 = ky;
        double r1860566 = sin(r1860565);
        double r1860567 = pow(r1860566, r1860555);
        double r1860568 = r1860564 + r1860567;
        double r1860569 = r1860561 * r1860568;
        double r1860570 = r1860554 + r1860569;
        double r1860571 = sqrt(r1860570);
        double r1860572 = r1860554 / r1860571;
        double r1860573 = r1860554 + r1860572;
        double r1860574 = r1860556 * r1860573;
        double r1860575 = sqrt(r1860574);
        return r1860575;
}

double f(double l, double Om, double kx, double ky) {
        double r1860576 = 0.5;
        double r1860577 = l;
        double r1860578 = Om;
        double r1860579 = 2.0;
        double r1860580 = r1860578 / r1860579;
        double r1860581 = r1860577 / r1860580;
        double r1860582 = r1860581 * r1860581;
        double r1860583 = ky;
        double r1860584 = sin(r1860583);
        double r1860585 = kx;
        double r1860586 = sin(r1860585);
        double r1860587 = r1860586 * r1860586;
        double r1860588 = fma(r1860584, r1860584, r1860587);
        double r1860589 = 1.0;
        double r1860590 = fma(r1860582, r1860588, r1860589);
        double r1860591 = sqrt(r1860590);
        double r1860592 = r1860576 / r1860591;
        double r1860593 = exp(r1860592);
        double r1860594 = log(r1860593);
        double r1860595 = r1860594 + r1860576;
        double r1860596 = sqrt(r1860595);
        return r1860596;
}

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{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\ell}{\frac{Om}{2}} \cdot \frac{\ell}{\frac{Om}{2}}, \mathsf{fma}\left(\sin ky, \sin ky, \sin kx \cdot \sin kx\right), 1\right)}}}}\]
  3. Using strategy rm
  4. Applied add-log-exp1.6

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

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

Reproduce

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