Average Error: 12.5 → 9.0
Time: 53.7s
Precision: 64
\[\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th\]
\[\log_* (1 + (e^{\sin th \cdot (e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*} - 1)^*)\]
double f(double kx, double ky, double th) {
        double r1513698 = ky;
        double r1513699 = sin(r1513698);
        double r1513700 = kx;
        double r1513701 = sin(r1513700);
        double r1513702 = 2.0;
        double r1513703 = pow(r1513701, r1513702);
        double r1513704 = pow(r1513699, r1513702);
        double r1513705 = r1513703 + r1513704;
        double r1513706 = sqrt(r1513705);
        double r1513707 = r1513699 / r1513706;
        double r1513708 = th;
        double r1513709 = sin(r1513708);
        double r1513710 = r1513707 * r1513709;
        return r1513710;
}

double f(double kx, double ky, double th) {
        double r1513711 = th;
        double r1513712 = sin(r1513711);
        double r1513713 = ky;
        double r1513714 = sin(r1513713);
        double r1513715 = kx;
        double r1513716 = sin(r1513715);
        double r1513717 = hypot(r1513716, r1513714);
        double r1513718 = r1513714 / r1513717;
        double r1513719 = log1p(r1513718);
        double r1513720 = expm1(r1513719);
        double r1513721 = r1513712 * r1513720;
        double r1513722 = expm1(r1513721);
        double r1513723 = log1p(r1513722);
        return r1513723;
}

\frac{\sin ky}{\sqrt{{\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}}} \cdot \sin th
\log_* (1 + (e^{\sin th \cdot (e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*} - 1)^*)

Error

Bits error versus kx

Bits error versus ky

Bits error versus th

Derivation

  1. Initial program 12.5

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

    \[\leadsto \color{blue}{\sin th \cdot \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*}}\]
  3. Using strategy rm
  4. Applied expm1-log1p-u8.9

    \[\leadsto \sin th \cdot \color{blue}{(e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*}\]
  5. Using strategy rm
  6. Applied log1p-expm1-u9.0

    \[\leadsto \color{blue}{\log_* (1 + (e^{\sin th \cdot (e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*} - 1)^*)}\]
  7. Final simplification9.0

    \[\leadsto \log_* (1 + (e^{\sin th \cdot (e^{\log_* (1 + \frac{\sin ky}{\sqrt{\left(\sin kx\right)^2 + \left(\sin ky\right)^2}^*})} - 1)^*} - 1)^*)\]

Reproduce

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