Average Error: 1.8 → 1.8
Time: 1.0m
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{\sqrt{\frac{1 \cdot \frac{1}{2}}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}}} \cdot \sqrt{\frac{1 \cdot \frac{1}{2}}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}}} + 1 \cdot \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{\sqrt{\frac{1 \cdot \frac{1}{2}}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}}} \cdot \sqrt{\frac{1 \cdot \frac{1}{2}}{\sqrt{\mathsf{fma}\left({\left(\frac{2}{Om} \cdot \ell\right)}^{2}, {\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}, 1\right)}}} + 1 \cdot \frac{1}{2}}
double f(double l, double Om, double kx, double ky) {
        double r2226103 = 1.0;
        double r2226104 = 2.0;
        double r2226105 = r2226103 / r2226104;
        double r2226106 = l;
        double r2226107 = r2226104 * r2226106;
        double r2226108 = Om;
        double r2226109 = r2226107 / r2226108;
        double r2226110 = pow(r2226109, r2226104);
        double r2226111 = kx;
        double r2226112 = sin(r2226111);
        double r2226113 = pow(r2226112, r2226104);
        double r2226114 = ky;
        double r2226115 = sin(r2226114);
        double r2226116 = pow(r2226115, r2226104);
        double r2226117 = r2226113 + r2226116;
        double r2226118 = r2226110 * r2226117;
        double r2226119 = r2226103 + r2226118;
        double r2226120 = sqrt(r2226119);
        double r2226121 = r2226103 / r2226120;
        double r2226122 = r2226103 + r2226121;
        double r2226123 = r2226105 * r2226122;
        double r2226124 = sqrt(r2226123);
        return r2226124;
}

double f(double l, double Om, double kx, double ky) {
        double r2226125 = 1.0;
        double r2226126 = 2.0;
        double r2226127 = r2226125 / r2226126;
        double r2226128 = r2226125 * r2226127;
        double r2226129 = Om;
        double r2226130 = r2226126 / r2226129;
        double r2226131 = l;
        double r2226132 = r2226130 * r2226131;
        double r2226133 = pow(r2226132, r2226126);
        double r2226134 = ky;
        double r2226135 = sin(r2226134);
        double r2226136 = pow(r2226135, r2226126);
        double r2226137 = kx;
        double r2226138 = sin(r2226137);
        double r2226139 = pow(r2226138, r2226126);
        double r2226140 = r2226136 + r2226139;
        double r2226141 = fma(r2226133, r2226140, r2226125);
        double r2226142 = sqrt(r2226141);
        double r2226143 = r2226128 / r2226142;
        double r2226144 = sqrt(r2226143);
        double r2226145 = r2226144 * r2226144;
        double r2226146 = r2226145 + r2226128;
        double r2226147 = sqrt(r2226146);
        return r2226147;
}

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

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

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

Reproduce

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