Average Error: 12.3 → 11.7
Time: 10.9s
Precision: 64
\[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
\[\begin{array}{l} \mathbf{if}\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \le 1:\\ \;\;\;\;\frac{\sin ky}{\sqrt{{\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\sqrt[3]{\sin kx}\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin ky}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}} \cdot \sin th\\ \end{array}\]
\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th
\begin{array}{l}
\mathbf{if}\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \le 1:\\
\;\;\;\;\frac{\sin ky}{\sqrt{{\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\sqrt[3]{\sin kx}\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\\

\mathbf{else}:\\
\;\;\;\;\frac{\sin ky}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}} \cdot \sin th\\

\end{array}
double f(double kx, double ky, double th) {
        double r40292 = ky;
        double r40293 = sin(r40292);
        double r40294 = kx;
        double r40295 = sin(r40294);
        double r40296 = 2.0;
        double r40297 = pow(r40295, r40296);
        double r40298 = pow(r40293, r40296);
        double r40299 = r40297 + r40298;
        double r40300 = sqrt(r40299);
        double r40301 = r40293 / r40300;
        double r40302 = th;
        double r40303 = sin(r40302);
        double r40304 = r40301 * r40303;
        return r40304;
}

double f(double kx, double ky, double th) {
        double r40305 = ky;
        double r40306 = sin(r40305);
        double r40307 = kx;
        double r40308 = sin(r40307);
        double r40309 = 2.0;
        double r40310 = pow(r40308, r40309);
        double r40311 = pow(r40306, r40309);
        double r40312 = r40310 + r40311;
        double r40313 = sqrt(r40312);
        double r40314 = r40306 / r40313;
        double r40315 = 1.0;
        bool r40316 = r40314 <= r40315;
        double r40317 = cbrt(r40308);
        double r40318 = r40317 * r40317;
        double r40319 = pow(r40318, r40309);
        double r40320 = pow(r40317, r40309);
        double r40321 = r40319 * r40320;
        double r40322 = r40321 + r40311;
        double r40323 = sqrt(r40322);
        double r40324 = r40306 / r40323;
        double r40325 = th;
        double r40326 = sin(r40325);
        double r40327 = r40324 * r40326;
        double r40328 = 0.08333333333333333;
        double r40329 = 2.0;
        double r40330 = pow(r40307, r40329);
        double r40331 = r40330 * r40305;
        double r40332 = r40328 * r40331;
        double r40333 = r40305 + r40332;
        double r40334 = 0.16666666666666666;
        double r40335 = 3.0;
        double r40336 = pow(r40305, r40335);
        double r40337 = r40334 * r40336;
        double r40338 = r40333 - r40337;
        double r40339 = r40306 / r40338;
        double r40340 = r40339 * r40326;
        double r40341 = r40316 ? r40327 : r40340;
        return r40341;
}

Error

Bits error versus kx

Bits error versus ky

Bits error versus th

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0)))) < 1.0

    1. Initial program 11.0

      \[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
    2. Using strategy rm
    3. Applied add-cube-cbrt11.2

      \[\leadsto \frac{\sin ky}{\sqrt{{\color{blue}{\left(\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right) \cdot \sqrt[3]{\sin kx}\right)}}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
    4. Applied unpow-prod-down11.2

      \[\leadsto \frac{\sin ky}{\sqrt{\color{blue}{{\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\sqrt[3]{\sin kx}\right)}^{2}} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]

    if 1.0 < (/ (sin ky) (sqrt (+ (pow (sin kx) 2.0) (pow (sin ky) 2.0))))

    1. Initial program 63.0

      \[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
    2. Taylor expanded around 0 30.2

      \[\leadsto \frac{\sin ky}{\color{blue}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}}} \cdot \sin th\]
  3. Recombined 2 regimes into one program.
  4. Final simplification11.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \le 1:\\ \;\;\;\;\frac{\sin ky}{\sqrt{{\left(\sqrt[3]{\sin kx} \cdot \sqrt[3]{\sin kx}\right)}^{2} \cdot {\left(\sqrt[3]{\sin kx}\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin ky}{\left(ky + \frac{1}{12} \cdot \left({kx}^{2} \cdot ky\right)\right) - \frac{1}{6} \cdot {ky}^{3}} \cdot \sin th\\ \end{array}\]

Reproduce

herbie shell --seed 2020033 
(FPCore (kx ky th)
  :name "Toniolo and Linder, Equation (3b), real"
  :precision binary64
  (* (/ (sin ky) (sqrt (+ (pow (sin kx) 2) (pow (sin ky) 2)))) (sin th)))