Average Error: 1.7 → 0.6
Time: 23.4s
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{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\sin ky \cdot \ell}{Om} \cdot \frac{\sin ky \cdot \ell}{Om} + \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}, 4, 1\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{\frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\frac{\sin ky \cdot \ell}{Om} \cdot \frac{\sin ky \cdot \ell}{Om} + \frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}, 4, 1\right)}} + \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r1306368 = 1.0;
        double r1306369 = 2.0;
        double r1306370 = r1306368 / r1306369;
        double r1306371 = l;
        double r1306372 = r1306369 * r1306371;
        double r1306373 = Om;
        double r1306374 = r1306372 / r1306373;
        double r1306375 = pow(r1306374, r1306369);
        double r1306376 = kx;
        double r1306377 = sin(r1306376);
        double r1306378 = pow(r1306377, r1306369);
        double r1306379 = ky;
        double r1306380 = sin(r1306379);
        double r1306381 = pow(r1306380, r1306369);
        double r1306382 = r1306378 + r1306381;
        double r1306383 = r1306375 * r1306382;
        double r1306384 = r1306368 + r1306383;
        double r1306385 = sqrt(r1306384);
        double r1306386 = r1306368 / r1306385;
        double r1306387 = r1306368 + r1306386;
        double r1306388 = r1306370 * r1306387;
        double r1306389 = sqrt(r1306388);
        return r1306389;
}

double f(double l, double Om, double kx, double ky) {
        double r1306390 = 0.5;
        double r1306391 = ky;
        double r1306392 = sin(r1306391);
        double r1306393 = l;
        double r1306394 = r1306392 * r1306393;
        double r1306395 = Om;
        double r1306396 = r1306394 / r1306395;
        double r1306397 = r1306396 * r1306396;
        double r1306398 = kx;
        double r1306399 = sin(r1306398);
        double r1306400 = r1306395 / r1306393;
        double r1306401 = r1306399 / r1306400;
        double r1306402 = r1306401 * r1306401;
        double r1306403 = r1306397 + r1306402;
        double r1306404 = 4.0;
        double r1306405 = 1.0;
        double r1306406 = fma(r1306403, r1306404, r1306405);
        double r1306407 = sqrt(r1306406);
        double r1306408 = r1306390 / r1306407;
        double r1306409 = r1306408 + r1306390;
        double r1306410 = sqrt(r1306409);
        return r1306410;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.7

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

    \[\leadsto \color{blue}{\sqrt{\frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\left(\frac{2}{Om} \cdot \ell\right) \cdot \left(\frac{2}{Om} \cdot \ell\right), \mathsf{fma}\left(\sin kx, \sin kx, \sin ky \cdot \sin ky\right), 1\right)}} + \frac{1}{2}}}\]
  3. Using strategy rm
  4. Applied insert-posit162.4

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\mathsf{fma}\left(\left(\frac{2}{Om} \cdot \ell\right) \cdot \left(\frac{2}{Om} \cdot \ell\right), \mathsf{fma}\left(\sin kx, \sin kx, \color{blue}{\left(\left(\sin ky \cdot \sin ky\right)\right)}\right), 1\right)}} + \frac{1}{2}}\]
  5. Taylor expanded around inf 16.5

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{4 \cdot \frac{{\left(\sin kx\right)}^{2} \cdot {\ell}^{2}}{{Om}^{2}} + \left(4 \cdot \frac{{\ell}^{2} \cdot {\left(\sin ky\right)}^{2}}{{Om}^{2}} + 1\right)}}} + \frac{1}{2}}\]
  6. Simplified0.6

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

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

Reproduce

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