Average Error: 12.3 → 8.6
Time: 37.3s
Precision: 64
\[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
\[\sin th \cdot \left(\frac{1}{\mathsf{hypot}\left(\sin ky, \sin kx\right)} \cdot \sin ky\right)\]
\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th
\sin th \cdot \left(\frac{1}{\mathsf{hypot}\left(\sin ky, \sin kx\right)} \cdot \sin ky\right)
double f(double kx, double ky, double th) {
        double r777702 = ky;
        double r777703 = sin(r777702);
        double r777704 = kx;
        double r777705 = sin(r777704);
        double r777706 = 2.0;
        double r777707 = pow(r777705, r777706);
        double r777708 = pow(r777703, r777706);
        double r777709 = r777707 + r777708;
        double r777710 = sqrt(r777709);
        double r777711 = r777703 / r777710;
        double r777712 = th;
        double r777713 = sin(r777712);
        double r777714 = r777711 * r777713;
        return r777714;
}

double f(double kx, double ky, double th) {
        double r777715 = th;
        double r777716 = sin(r777715);
        double r777717 = 1.0;
        double r777718 = ky;
        double r777719 = sin(r777718);
        double r777720 = kx;
        double r777721 = sin(r777720);
        double r777722 = hypot(r777719, r777721);
        double r777723 = r777717 / r777722;
        double r777724 = r777723 * r777719;
        double r777725 = r777716 * r777724;
        return r777725;
}

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. Simplified8.5

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

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

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

Reproduce

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