Average Error: 12.3 → 11.4
Time: 11.4s
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:\\ \;\;\;\;\sin ky \cdot \frac{-\sin th}{-\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\\ \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:\\
\;\;\;\;\sin ky \cdot \frac{-\sin th}{-\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\\

\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 r46831 = ky;
        double r46832 = sin(r46831);
        double r46833 = kx;
        double r46834 = sin(r46833);
        double r46835 = 2.0;
        double r46836 = pow(r46834, r46835);
        double r46837 = pow(r46832, r46835);
        double r46838 = r46836 + r46837;
        double r46839 = sqrt(r46838);
        double r46840 = r46832 / r46839;
        double r46841 = th;
        double r46842 = sin(r46841);
        double r46843 = r46840 * r46842;
        return r46843;
}

double f(double kx, double ky, double th) {
        double r46844 = ky;
        double r46845 = sin(r46844);
        double r46846 = kx;
        double r46847 = sin(r46846);
        double r46848 = 2.0;
        double r46849 = pow(r46847, r46848);
        double r46850 = pow(r46845, r46848);
        double r46851 = r46849 + r46850;
        double r46852 = sqrt(r46851);
        double r46853 = r46845 / r46852;
        double r46854 = 1.0;
        bool r46855 = r46853 <= r46854;
        double r46856 = th;
        double r46857 = sin(r46856);
        double r46858 = -r46857;
        double r46859 = -r46852;
        double r46860 = r46858 / r46859;
        double r46861 = r46845 * r46860;
        double r46862 = 0.08333333333333333;
        double r46863 = 2.0;
        double r46864 = pow(r46846, r46863);
        double r46865 = r46864 * r46844;
        double r46866 = r46862 * r46865;
        double r46867 = r46844 + r46866;
        double r46868 = 0.16666666666666666;
        double r46869 = 3.0;
        double r46870 = pow(r46844, r46869);
        double r46871 = r46868 * r46870;
        double r46872 = r46867 - r46871;
        double r46873 = r46845 / r46872;
        double r46874 = r46873 * r46857;
        double r46875 = r46855 ? r46861 : r46874;
        return r46875;
}

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 10.9

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

      \[\leadsto \color{blue}{\left(\sin ky \cdot \frac{1}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\right)} \cdot \sin th\]
    4. Applied associate-*l*11.0

      \[\leadsto \color{blue}{\sin ky \cdot \left(\frac{1}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\right)}\]
    5. Simplified10.9

      \[\leadsto \sin ky \cdot \color{blue}{\frac{\sin th}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}}\]
    6. Using strategy rm
    7. Applied frac-2neg10.9

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

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

    1. Initial program 62.9

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \le 1:\\ \;\;\;\;\sin ky \cdot \frac{-\sin th}{-\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}}\\ \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 2020020 
(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)))