Average Error: 1.6 → 0.7
Time: 1.2m
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{(4 \cdot \left(\frac{\ell \cdot \sin kx}{Om} \cdot \frac{\ell \cdot \sin kx}{Om} + \frac{\sin ky \cdot \ell}{Om} \cdot \frac{\sin ky \cdot \ell}{Om}\right) + 1)_*}} + \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{(4 \cdot \left(\frac{\ell \cdot \sin kx}{Om} \cdot \frac{\ell \cdot \sin kx}{Om} + \frac{\sin ky \cdot \ell}{Om} \cdot \frac{\sin ky \cdot \ell}{Om}\right) + 1)_*}} + \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r7044563 = 1.0;
        double r7044564 = 2.0;
        double r7044565 = r7044563 / r7044564;
        double r7044566 = l;
        double r7044567 = r7044564 * r7044566;
        double r7044568 = Om;
        double r7044569 = r7044567 / r7044568;
        double r7044570 = pow(r7044569, r7044564);
        double r7044571 = kx;
        double r7044572 = sin(r7044571);
        double r7044573 = pow(r7044572, r7044564);
        double r7044574 = ky;
        double r7044575 = sin(r7044574);
        double r7044576 = pow(r7044575, r7044564);
        double r7044577 = r7044573 + r7044576;
        double r7044578 = r7044570 * r7044577;
        double r7044579 = r7044563 + r7044578;
        double r7044580 = sqrt(r7044579);
        double r7044581 = r7044563 / r7044580;
        double r7044582 = r7044563 + r7044581;
        double r7044583 = r7044565 * r7044582;
        double r7044584 = sqrt(r7044583);
        return r7044584;
}

double f(double l, double Om, double kx, double ky) {
        double r7044585 = 0.5;
        double r7044586 = 4.0;
        double r7044587 = l;
        double r7044588 = kx;
        double r7044589 = sin(r7044588);
        double r7044590 = r7044587 * r7044589;
        double r7044591 = Om;
        double r7044592 = r7044590 / r7044591;
        double r7044593 = r7044592 * r7044592;
        double r7044594 = ky;
        double r7044595 = sin(r7044594);
        double r7044596 = r7044595 * r7044587;
        double r7044597 = r7044596 / r7044591;
        double r7044598 = r7044597 * r7044597;
        double r7044599 = r7044593 + r7044598;
        double r7044600 = 1.0;
        double r7044601 = fma(r7044586, r7044599, r7044600);
        double r7044602 = sqrt(r7044601);
        double r7044603 = r7044585 / r7044602;
        double r7044604 = r7044603 + r7044585;
        double r7044605 = sqrt(r7044604);
        return r7044605;
}

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{\frac{1}{2}}{\sqrt{(\left(\frac{\ell \cdot 2}{Om} \cdot \frac{\ell \cdot 2}{Om}\right) \cdot \left((\left(\sin ky\right) \cdot \left(\sin ky\right) + \left(\sin kx \cdot \sin kx\right))_*\right) + 1)_*}} + \frac{1}{2}}}\]
  3. Taylor expanded around inf 16.7

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

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

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

Reproduce

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