Average Error: 13.3 → 10.8
Time: 37.3s
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)}\]
\[\begin{array}{l} \mathbf{if}\;B \le -1004873.6803424847:\\ \;\;\;\;\left({\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}} \cdot {\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}}\right) \cdot \frac{F}{\sin B} - \frac{x}{\tan B}\\ \mathbf{elif}\;B \le 0.006279617967676429:\\ \;\;\;\;\mathsf{fma}\left(B, \frac{7}{360} \cdot \left(B \cdot B\right), \mathsf{fma}\left(B, \frac{1}{6}, \frac{1}{B}\right)\right) \cdot \left(F \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}\right) - \frac{x}{\tan B}\\ \mathbf{else}:\\ \;\;\;\;\frac{F}{\sin B} \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} - \frac{1}{\frac{\tan B}{x}}\\ \end{array}\]
\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)}
\begin{array}{l}
\mathbf{if}\;B \le -1004873.6803424847:\\
\;\;\;\;\left({\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}} \cdot {\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}}\right) \cdot \frac{F}{\sin B} - \frac{x}{\tan B}\\

\mathbf{elif}\;B \le 0.006279617967676429:\\
\;\;\;\;\mathsf{fma}\left(B, \frac{7}{360} \cdot \left(B \cdot B\right), \mathsf{fma}\left(B, \frac{1}{6}, \frac{1}{B}\right)\right) \cdot \left(F \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}\right) - \frac{x}{\tan B}\\

\mathbf{else}:\\
\;\;\;\;\frac{F}{\sin B} \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} - \frac{1}{\frac{\tan B}{x}}\\

\end{array}
double f(double F, double B, double x) {
        double r701867 = x;
        double r701868 = 1.0;
        double r701869 = B;
        double r701870 = tan(r701869);
        double r701871 = r701868 / r701870;
        double r701872 = r701867 * r701871;
        double r701873 = -r701872;
        double r701874 = F;
        double r701875 = sin(r701869);
        double r701876 = r701874 / r701875;
        double r701877 = r701874 * r701874;
        double r701878 = 2.0;
        double r701879 = r701877 + r701878;
        double r701880 = r701878 * r701867;
        double r701881 = r701879 + r701880;
        double r701882 = r701868 / r701878;
        double r701883 = -r701882;
        double r701884 = pow(r701881, r701883);
        double r701885 = r701876 * r701884;
        double r701886 = r701873 + r701885;
        return r701886;
}

double f(double F, double B, double x) {
        double r701887 = B;
        double r701888 = -1004873.6803424847;
        bool r701889 = r701887 <= r701888;
        double r701890 = x;
        double r701891 = 2.0;
        double r701892 = F;
        double r701893 = fma(r701892, r701892, r701891);
        double r701894 = fma(r701890, r701891, r701893);
        double r701895 = sqrt(r701894);
        double r701896 = -0.5;
        double r701897 = pow(r701895, r701896);
        double r701898 = r701897 * r701897;
        double r701899 = sin(r701887);
        double r701900 = r701892 / r701899;
        double r701901 = r701898 * r701900;
        double r701902 = tan(r701887);
        double r701903 = r701890 / r701902;
        double r701904 = r701901 - r701903;
        double r701905 = 0.006279617967676429;
        bool r701906 = r701887 <= r701905;
        double r701907 = 0.019444444444444445;
        double r701908 = r701887 * r701887;
        double r701909 = r701907 * r701908;
        double r701910 = 0.16666666666666666;
        double r701911 = 1.0;
        double r701912 = r701911 / r701887;
        double r701913 = fma(r701887, r701910, r701912);
        double r701914 = fma(r701887, r701909, r701913);
        double r701915 = pow(r701894, r701896);
        double r701916 = r701892 * r701915;
        double r701917 = r701914 * r701916;
        double r701918 = r701917 - r701903;
        double r701919 = r701900 * r701915;
        double r701920 = r701902 / r701890;
        double r701921 = r701911 / r701920;
        double r701922 = r701919 - r701921;
        double r701923 = r701906 ? r701918 : r701922;
        double r701924 = r701889 ? r701904 : r701923;
        return r701924;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if B < -1004873.6803424847

    1. Initial program 9.3

      \[\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. Simplified9.3

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

      \[\leadsto {\color{blue}{\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)} \cdot \sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}}^{\frac{-1}{2}} \cdot \frac{F}{\sin B} - \frac{x}{\tan B}\]
    5. Applied unpow-prod-down9.3

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

    if -1004873.6803424847 < B < 0.006279617967676429

    1. Initial program 17.8

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

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

      \[\leadsto {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot \color{blue}{\left(F \cdot \frac{1}{\sin B}\right)} - \frac{x}{\tan B}\]
    5. Applied associate-*r*12.1

      \[\leadsto \color{blue}{\left({\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot F\right) \cdot \frac{1}{\sin B}} - \frac{x}{\tan B}\]
    6. Taylor expanded around 0 12.3

      \[\leadsto \left({\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot F\right) \cdot \color{blue}{\left(\frac{1}{6} \cdot B + \left(\frac{1}{B} + \frac{7}{360} \cdot {B}^{3}\right)\right)} - \frac{x}{\tan B}\]
    7. Simplified12.3

      \[\leadsto \left({\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot F\right) \cdot \color{blue}{\mathsf{fma}\left(B, \left(B \cdot B\right) \cdot \frac{7}{360}, \mathsf{fma}\left(B, \frac{1}{6}, \frac{1}{B}\right)\right)} - \frac{x}{\tan B}\]

    if 0.006279617967676429 < B

    1. Initial program 9.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. Simplified9.6

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

      \[\leadsto {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} \cdot \frac{F}{\sin B} - \color{blue}{\frac{1}{\frac{\tan B}{x}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;B \le -1004873.6803424847:\\ \;\;\;\;\left({\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}} \cdot {\left(\sqrt{\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)}\right)}^{\frac{-1}{2}}\right) \cdot \frac{F}{\sin B} - \frac{x}{\tan B}\\ \mathbf{elif}\;B \le 0.006279617967676429:\\ \;\;\;\;\mathsf{fma}\left(B, \frac{7}{360} \cdot \left(B \cdot B\right), \mathsf{fma}\left(B, \frac{1}{6}, \frac{1}{B}\right)\right) \cdot \left(F \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}}\right) - \frac{x}{\tan B}\\ \mathbf{else}:\\ \;\;\;\;\frac{F}{\sin B} \cdot {\left(\mathsf{fma}\left(x, 2, \mathsf{fma}\left(F, F, 2\right)\right)\right)}^{\frac{-1}{2}} - \frac{1}{\frac{\tan B}{x}}\\ \end{array}\]

Reproduce

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