Average Error: 13.7 → 10.7
Time: 2.1m
Precision: 64
\[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}\]
\[\log_* (1 + \log_* (1 + (e^{(e^{{\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F} - 1)^*} - 1)^*)) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\]
\left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}
\log_* (1 + \log_* (1 + (e^{(e^{{\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F} - 1)^*} - 1)^*)) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}
double f(double F, double B, double x) {
        double r7842818 = x;
        double r7842819 = 1.0;
        double r7842820 = B;
        double r7842821 = tan(r7842820);
        double r7842822 = r7842819 / r7842821;
        double r7842823 = r7842818 * r7842822;
        double r7842824 = -r7842823;
        double r7842825 = F;
        double r7842826 = sin(r7842820);
        double r7842827 = r7842825 / r7842826;
        double r7842828 = r7842825 * r7842825;
        double r7842829 = 2.0;
        double r7842830 = r7842828 + r7842829;
        double r7842831 = r7842829 * r7842818;
        double r7842832 = r7842830 + r7842831;
        double r7842833 = r7842819 / r7842829;
        double r7842834 = -r7842833;
        double r7842835 = pow(r7842832, r7842834);
        double r7842836 = r7842827 * r7842835;
        double r7842837 = r7842824 + r7842836;
        return r7842837;
}

double f(double F, double B, double x) {
        double r7842838 = x;
        double r7842839 = 2.0;
        double r7842840 = F;
        double r7842841 = fma(r7842840, r7842840, r7842839);
        double r7842842 = fma(r7842838, r7842839, r7842841);
        double r7842843 = -0.5;
        double r7842844 = pow(r7842842, r7842843);
        double r7842845 = r7842844 * r7842840;
        double r7842846 = expm1(r7842845);
        double r7842847 = expm1(r7842846);
        double r7842848 = log1p(r7842847);
        double r7842849 = log1p(r7842848);
        double r7842850 = 1.0;
        double r7842851 = B;
        double r7842852 = sin(r7842851);
        double r7842853 = r7842850 / r7842852;
        double r7842854 = r7842849 * r7842853;
        double r7842855 = tan(r7842851);
        double r7842856 = r7842838 / r7842855;
        double r7842857 = r7842854 - r7842856;
        return r7842857;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 13.7

    \[\left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}\]
  2. Simplified13.3

    \[\leadsto \color{blue}{\frac{{\left((2 \cdot x + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}}}{\frac{\sin B}{F}} - \frac{x}{\tan B}}\]
  3. Using strategy rm
  4. Applied div-inv13.3

    \[\leadsto \frac{{\left((2 \cdot x + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}}}{\color{blue}{\sin B \cdot \frac{1}{F}}} - \frac{x}{\tan B}\]
  5. Applied *-un-lft-identity13.3

    \[\leadsto \frac{\color{blue}{1 \cdot {\left((2 \cdot x + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}}}}{\sin B \cdot \frac{1}{F}} - \frac{x}{\tan B}\]
  6. Applied times-frac10.7

    \[\leadsto \color{blue}{\frac{1}{\sin B} \cdot \frac{{\left((2 \cdot x + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}}}{\frac{1}{F}}} - \frac{x}{\tan B}\]
  7. Simplified10.7

    \[\leadsto \frac{1}{\sin B} \cdot \color{blue}{\left({\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F\right)} - \frac{x}{\tan B}\]
  8. Using strategy rm
  9. Applied log1p-expm1-u10.7

    \[\leadsto \frac{1}{\sin B} \cdot \color{blue}{\log_* (1 + (e^{{\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F} - 1)^*)} - \frac{x}{\tan B}\]
  10. Using strategy rm
  11. Applied log1p-expm1-u10.7

    \[\leadsto \frac{1}{\sin B} \cdot \log_* (1 + \color{blue}{\log_* (1 + (e^{(e^{{\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F} - 1)^*} - 1)^*)}) - \frac{x}{\tan B}\]
  12. Final simplification10.7

    \[\leadsto \log_* (1 + \log_* (1 + (e^{(e^{{\left((x \cdot 2 + \left((F \cdot F + 2)_*\right))_*\right)}^{\frac{-1}{2}} \cdot F} - 1)^*} - 1)^*)) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (F B x)
  :name "VandenBroeck and Keller, Equation (23)"
  (+ (- (* x (/ 1 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2) (* 2 x)) (- (/ 1 2))))))