Average Error: 1.8 → 5.4
Time: 32.1s
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)}\]
\[\begin{array}{l} \mathbf{if}\;\ell \le -1.537064068705883 \cdot 10^{+108}:\\ \;\;\;\;\sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{1 + \left(\left(\frac{kx \cdot kx}{Om} \cdot \ell + \frac{ky \cdot ky}{\frac{Om}{\ell}}\right) \cdot 2\right) \cdot \frac{\ell + \ell}{Om}}}}\\ \mathbf{elif}\;\ell \le 1.5365535845369674 \cdot 10^{+218}:\\ \;\;\;\;\sqrt{\frac{1}{2} + \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}} \cdot \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{\frac{1}{2}}{\sqrt{\left(\left(\left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right) + 1}} + \frac{1}{2}}\\ \end{array}\]
\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)}
\begin{array}{l}
\mathbf{if}\;\ell \le -1.537064068705883 \cdot 10^{+108}:\\
\;\;\;\;\sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{1 + \left(\left(\frac{kx \cdot kx}{Om} \cdot \ell + \frac{ky \cdot ky}{\frac{Om}{\ell}}\right) \cdot 2\right) \cdot \frac{\ell + \ell}{Om}}}}\\

\mathbf{elif}\;\ell \le 1.5365535845369674 \cdot 10^{+218}:\\
\;\;\;\;\sqrt{\frac{1}{2} + \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}} \cdot \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}}}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{\frac{1}{2}}{\sqrt{\left(\left(\left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right) + 1}} + \frac{1}{2}}\\

\end{array}
double f(double l, double Om, double kx, double ky) {
        double r1928234 = 1.0;
        double r1928235 = 2.0;
        double r1928236 = r1928234 / r1928235;
        double r1928237 = l;
        double r1928238 = r1928235 * r1928237;
        double r1928239 = Om;
        double r1928240 = r1928238 / r1928239;
        double r1928241 = pow(r1928240, r1928235);
        double r1928242 = kx;
        double r1928243 = sin(r1928242);
        double r1928244 = pow(r1928243, r1928235);
        double r1928245 = ky;
        double r1928246 = sin(r1928245);
        double r1928247 = pow(r1928246, r1928235);
        double r1928248 = r1928244 + r1928247;
        double r1928249 = r1928241 * r1928248;
        double r1928250 = r1928234 + r1928249;
        double r1928251 = sqrt(r1928250);
        double r1928252 = r1928234 / r1928251;
        double r1928253 = r1928234 + r1928252;
        double r1928254 = r1928236 * r1928253;
        double r1928255 = sqrt(r1928254);
        return r1928255;
}

double f(double l, double Om, double kx, double ky) {
        double r1928256 = l;
        double r1928257 = -1.537064068705883e+108;
        bool r1928258 = r1928256 <= r1928257;
        double r1928259 = 0.5;
        double r1928260 = 1.0;
        double r1928261 = kx;
        double r1928262 = r1928261 * r1928261;
        double r1928263 = Om;
        double r1928264 = r1928262 / r1928263;
        double r1928265 = r1928264 * r1928256;
        double r1928266 = ky;
        double r1928267 = r1928266 * r1928266;
        double r1928268 = r1928263 / r1928256;
        double r1928269 = r1928267 / r1928268;
        double r1928270 = r1928265 + r1928269;
        double r1928271 = 2.0;
        double r1928272 = r1928270 * r1928271;
        double r1928273 = r1928256 + r1928256;
        double r1928274 = r1928273 / r1928263;
        double r1928275 = r1928272 * r1928274;
        double r1928276 = r1928260 + r1928275;
        double r1928277 = sqrt(r1928276);
        double r1928278 = r1928259 / r1928277;
        double r1928279 = r1928259 + r1928278;
        double r1928280 = sqrt(r1928279);
        double r1928281 = 1.5365535845369674e+218;
        bool r1928282 = r1928256 <= r1928281;
        double r1928283 = sin(r1928266);
        double r1928284 = r1928283 * r1928283;
        double r1928285 = sin(r1928261);
        double r1928286 = r1928285 * r1928285;
        double r1928287 = r1928284 + r1928286;
        double r1928288 = r1928274 * r1928287;
        double r1928289 = /* ERROR: no posit support in C */;
        double r1928290 = /* ERROR: no posit support in C */;
        double r1928291 = r1928274 * r1928290;
        double r1928292 = r1928260 + r1928291;
        double r1928293 = sqrt(r1928292);
        double r1928294 = r1928259 / r1928293;
        double r1928295 = sqrt(r1928294);
        double r1928296 = r1928295 * r1928295;
        double r1928297 = r1928259 + r1928296;
        double r1928298 = sqrt(r1928297);
        double r1928299 = r1928274 * r1928274;
        double r1928300 = r1928299 * r1928287;
        double r1928301 = /* ERROR: no posit support in C */;
        double r1928302 = /* ERROR: no posit support in C */;
        double r1928303 = r1928302 + r1928260;
        double r1928304 = sqrt(r1928303);
        double r1928305 = r1928259 / r1928304;
        double r1928306 = r1928305 + r1928259;
        double r1928307 = sqrt(r1928306);
        double r1928308 = r1928282 ? r1928298 : r1928307;
        double r1928309 = r1928258 ? r1928280 : r1928308;
        return r1928309;
}

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Split input into 3 regimes
  2. if l < -1.537064068705883e+108

    1. Initial program 2.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. Simplified2.7

      \[\leadsto \color{blue}{\sqrt{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) + 1}} + \frac{1}{2}}}\]
    3. Using strategy rm
    4. Applied associate-*r*2.4

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \frac{\ell + \ell}{Om}\right) \cdot \frac{\ell + \ell}{Om}} + 1}} + \frac{1}{2}}\]
    5. Using strategy rm
    6. Applied insert-posit1613.3

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(\left(\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \frac{\ell + \ell}{Om}\right)\right)} \cdot \frac{\ell + \ell}{Om} + 1}} + \frac{1}{2}}\]
    7. Taylor expanded around 0 7.5

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(2 \cdot \frac{{ky}^{2} \cdot \ell}{Om} + 2 \cdot \frac{{kx}^{2} \cdot \ell}{Om}\right)} \cdot \frac{\ell + \ell}{Om} + 1}} + \frac{1}{2}}\]
    8. Simplified11.3

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(2 \cdot \left(\frac{ky \cdot ky}{\frac{Om}{\ell}} + \frac{kx \cdot kx}{Om} \cdot \ell\right)\right)} \cdot \frac{\ell + \ell}{Om} + 1}} + \frac{1}{2}}\]

    if -1.537064068705883e+108 < l < 1.5365535845369674e+218

    1. Initial program 1.4

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

      \[\leadsto \color{blue}{\sqrt{\frac{\frac{1}{2}}{\sqrt{\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) + 1}} + \frac{1}{2}}}\]
    3. Using strategy rm
    4. Applied associate-*r*1.1

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \frac{\ell + \ell}{Om}\right) \cdot \frac{\ell + \ell}{Om}} + 1}} + \frac{1}{2}}\]
    5. Using strategy rm
    6. Applied insert-posit163.6

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(\left(\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \frac{\ell + \ell}{Om}\right)\right)} \cdot \frac{\ell + \ell}{Om} + 1}} + \frac{1}{2}}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt3.6

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

    if 1.5365535845369674e+218 < l

    1. Initial program 3.3

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

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

      \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{\left(\left(\left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right) \cdot \left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right)\right)\right)} + 1}} + \frac{1}{2}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification5.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\ell \le -1.537064068705883 \cdot 10^{+108}:\\ \;\;\;\;\sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{1 + \left(\left(\frac{kx \cdot kx}{Om} \cdot \ell + \frac{ky \cdot ky}{\frac{Om}{\ell}}\right) \cdot 2\right) \cdot \frac{\ell + \ell}{Om}}}}\\ \mathbf{elif}\;\ell \le 1.5365535845369674 \cdot 10^{+218}:\\ \;\;\;\;\sqrt{\frac{1}{2} + \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}} \cdot \sqrt{\frac{\frac{1}{2}}{\sqrt{1 + \frac{\ell + \ell}{Om} \cdot \left(\left(\frac{\ell + \ell}{Om} \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right)}}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{\frac{1}{2}}{\sqrt{\left(\left(\left(\frac{\ell + \ell}{Om} \cdot \frac{\ell + \ell}{Om}\right) \cdot \left(\sin ky \cdot \sin ky + \sin kx \cdot \sin kx\right)\right)\right) + 1}} + \frac{1}{2}}\\ \end{array}\]

Reproduce

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