Average Error: 1.8 → 0.9
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{\log \left(e^{\mathsf{fma}\left(4, \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\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{\frac{\frac{1}{2}}{\sqrt{\log \left(e^{\mathsf{fma}\left(4, \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\right)}\right)}} + \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r6044741 = 1.0;
        double r6044742 = 2.0;
        double r6044743 = r6044741 / r6044742;
        double r6044744 = l;
        double r6044745 = r6044742 * r6044744;
        double r6044746 = Om;
        double r6044747 = r6044745 / r6044746;
        double r6044748 = pow(r6044747, r6044742);
        double r6044749 = kx;
        double r6044750 = sin(r6044749);
        double r6044751 = pow(r6044750, r6044742);
        double r6044752 = ky;
        double r6044753 = sin(r6044752);
        double r6044754 = pow(r6044753, r6044742);
        double r6044755 = r6044751 + r6044754;
        double r6044756 = r6044748 * r6044755;
        double r6044757 = r6044741 + r6044756;
        double r6044758 = sqrt(r6044757);
        double r6044759 = r6044741 / r6044758;
        double r6044760 = r6044741 + r6044759;
        double r6044761 = r6044743 * r6044760;
        double r6044762 = sqrt(r6044761);
        return r6044762;
}

double f(double l, double Om, double kx, double ky) {
        double r6044763 = 0.5;
        double r6044764 = 4.0;
        double r6044765 = l;
        double r6044766 = kx;
        double r6044767 = sin(r6044766);
        double r6044768 = r6044765 * r6044767;
        double r6044769 = Om;
        double r6044770 = r6044768 / r6044769;
        double r6044771 = r6044770 * r6044770;
        double r6044772 = ky;
        double r6044773 = sin(r6044772);
        double r6044774 = r6044773 * r6044765;
        double r6044775 = r6044774 / r6044769;
        double r6044776 = r6044775 * r6044775;
        double r6044777 = r6044771 + r6044776;
        double r6044778 = 1.0;
        double r6044779 = fma(r6044764, r6044777, r6044778);
        double r6044780 = exp(r6044779);
        double r6044781 = log(r6044780);
        double r6044782 = sqrt(r6044781);
        double r6044783 = r6044763 / r6044782;
        double r6044784 = r6044783 + r6044763;
        double r6044785 = sqrt(r6044784);
        return r6044785;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.8

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

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

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

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\log \left(e^{\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)}}\right)}} + \frac{1}{2}}\]
  6. Simplified0.9

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\log \left(e^{\color{blue}{\mathsf{fma}\left(4, \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\right)}}\right)}} + \frac{1}{2}}\]
  7. Final simplification0.9

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\log \left(e^{\mathsf{fma}\left(4, \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\right)}\right)}} + \frac{1}{2}}\]

Reproduce

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