Average Error: 13.2 → 10.4
Time: 34.8s
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)}\]
\[\frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\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)}
\frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\sin B} - \frac{x}{\tan B}
double f(double F, double B, double x) {
        double r862899 = x;
        double r862900 = 1.0;
        double r862901 = B;
        double r862902 = tan(r862901);
        double r862903 = r862900 / r862902;
        double r862904 = r862899 * r862903;
        double r862905 = -r862904;
        double r862906 = F;
        double r862907 = sin(r862901);
        double r862908 = r862906 / r862907;
        double r862909 = r862906 * r862906;
        double r862910 = 2.0;
        double r862911 = r862909 + r862910;
        double r862912 = r862910 * r862899;
        double r862913 = r862911 + r862912;
        double r862914 = r862900 / r862910;
        double r862915 = -r862914;
        double r862916 = pow(r862913, r862915);
        double r862917 = r862908 * r862916;
        double r862918 = r862905 + r862917;
        return r862918;
}

double f(double F, double B, double x) {
        double r862919 = F;
        double r862920 = 2.0;
        double r862921 = x;
        double r862922 = fma(r862919, r862919, r862920);
        double r862923 = fma(r862920, r862921, r862922);
        double r862924 = -0.25;
        double r862925 = pow(r862923, r862924);
        double r862926 = r862925 * r862925;
        double r862927 = r862919 * r862926;
        double r862928 = B;
        double r862929 = sin(r862928);
        double r862930 = r862927 / r862929;
        double r862931 = tan(r862928);
        double r862932 = r862921 / r862931;
        double r862933 = r862930 - r862932;
        return r862933;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Initial program 13.2

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

    \[\leadsto \color{blue}{{\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}} \cdot \frac{F}{\sin B} - \frac{x}{\tan B}}\]
  3. Using strategy rm
  4. Applied associate-*r/10.3

    \[\leadsto \color{blue}{\frac{{\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}} \cdot F}{\sin B}} - \frac{x}{\tan B}\]
  5. Using strategy rm
  6. Applied sqr-pow10.4

    \[\leadsto \frac{\color{blue}{\left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\left(\frac{\frac{-1}{2}}{2}\right)} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\left(\frac{\frac{-1}{2}}{2}\right)}\right)} \cdot F}{\sin B} - \frac{x}{\tan B}\]
  7. Final simplification10.4

    \[\leadsto \frac{F \cdot \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}} \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{4}}\right)}{\sin B} - \frac{x}{\tan B}\]

Reproduce

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