Average Error: 12.3 → 8.9
Time: 2.4m
Precision: 64
\[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
\[\frac{\frac{\sin th}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}}{\frac{1}{\sin ky}}\]
\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th
\frac{\frac{\sin th}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}}{\frac{1}{\sin ky}}
double f(double kx, double ky, double th) {
        double r4131442 = ky;
        double r4131443 = sin(r4131442);
        double r4131444 = kx;
        double r4131445 = sin(r4131444);
        double r4131446 = 2.0;
        double r4131447 = pow(r4131445, r4131446);
        double r4131448 = pow(r4131443, r4131446);
        double r4131449 = r4131447 + r4131448;
        double r4131450 = sqrt(r4131449);
        double r4131451 = r4131443 / r4131450;
        double r4131452 = th;
        double r4131453 = sin(r4131452);
        double r4131454 = r4131451 * r4131453;
        return r4131454;
}

double f(double kx, double ky, double th) {
        double r4131455 = th;
        double r4131456 = sin(r4131455);
        double r4131457 = kx;
        double r4131458 = sin(r4131457);
        double r4131459 = ky;
        double r4131460 = sin(r4131459);
        double r4131461 = hypot(r4131458, r4131460);
        double r4131462 = r4131456 / r4131461;
        double r4131463 = 1.0;
        double r4131464 = r4131463 / r4131460;
        double r4131465 = r4131462 / r4131464;
        return r4131465;
}

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. Initial program 12.3

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

    \[\leadsto \color{blue}{\frac{\sin th \cdot \sin ky}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}}\]
  3. Using strategy rm
  4. Applied associate-/l*8.7

    \[\leadsto \color{blue}{\frac{\sin th}{\frac{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}{\sin ky}}}\]
  5. Using strategy rm
  6. Applied div-inv8.8

    \[\leadsto \frac{\sin th}{\color{blue}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right) \cdot \frac{1}{\sin ky}}}\]
  7. Applied associate-/r*8.9

    \[\leadsto \color{blue}{\frac{\frac{\sin th}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}}{\frac{1}{\sin ky}}}\]
  8. Final simplification8.9

    \[\leadsto \frac{\frac{\sin th}{\mathsf{hypot}\left(\left(\sin kx\right), \left(\sin ky\right)\right)}}{\frac{1}{\sin ky}}\]

Reproduce

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