Average Error: 13.7 → 7.7
Time: 38.0s
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}\;F \le -6.304734718037909 \cdot 10^{+78}:\\ \;\;\;\;\mathsf{expm1}\left(\left(\left(\sqrt{\frac{1}{2}} - x \cdot \sqrt{\frac{1}{8}}\right) \cdot F - \left(F \cdot F\right) \cdot \frac{1}{4}\right)\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\ \mathbf{else}:\\ \;\;\;\;\left(F \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}}\right) \cdot \frac{1}{\sin B} - \frac{x}{\sin B} \cdot \cos B\\ \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}\;F \le -6.304734718037909 \cdot 10^{+78}:\\
\;\;\;\;\mathsf{expm1}\left(\left(\left(\sqrt{\frac{1}{2}} - x \cdot \sqrt{\frac{1}{8}}\right) \cdot F - \left(F \cdot F\right) \cdot \frac{1}{4}\right)\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\

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

\end{array}
double f(double F, double B, double x) {
        double r1418683 = x;
        double r1418684 = 1.0;
        double r1418685 = B;
        double r1418686 = tan(r1418685);
        double r1418687 = r1418684 / r1418686;
        double r1418688 = r1418683 * r1418687;
        double r1418689 = -r1418688;
        double r1418690 = F;
        double r1418691 = sin(r1418685);
        double r1418692 = r1418690 / r1418691;
        double r1418693 = r1418690 * r1418690;
        double r1418694 = 2.0;
        double r1418695 = r1418693 + r1418694;
        double r1418696 = r1418694 * r1418683;
        double r1418697 = r1418695 + r1418696;
        double r1418698 = r1418684 / r1418694;
        double r1418699 = -r1418698;
        double r1418700 = pow(r1418697, r1418699);
        double r1418701 = r1418692 * r1418700;
        double r1418702 = r1418689 + r1418701;
        return r1418702;
}

double f(double F, double B, double x) {
        double r1418703 = F;
        double r1418704 = -6.304734718037909e+78;
        bool r1418705 = r1418703 <= r1418704;
        double r1418706 = 0.5;
        double r1418707 = sqrt(r1418706);
        double r1418708 = x;
        double r1418709 = 0.125;
        double r1418710 = sqrt(r1418709);
        double r1418711 = r1418708 * r1418710;
        double r1418712 = r1418707 - r1418711;
        double r1418713 = r1418712 * r1418703;
        double r1418714 = r1418703 * r1418703;
        double r1418715 = 0.25;
        double r1418716 = r1418714 * r1418715;
        double r1418717 = r1418713 - r1418716;
        double r1418718 = expm1(r1418717);
        double r1418719 = 1.0;
        double r1418720 = B;
        double r1418721 = sin(r1418720);
        double r1418722 = r1418719 / r1418721;
        double r1418723 = r1418718 * r1418722;
        double r1418724 = tan(r1418720);
        double r1418725 = r1418708 / r1418724;
        double r1418726 = r1418723 - r1418725;
        double r1418727 = 2.0;
        double r1418728 = fma(r1418703, r1418703, r1418727);
        double r1418729 = fma(r1418727, r1418708, r1418728);
        double r1418730 = -0.5;
        double r1418731 = pow(r1418729, r1418730);
        double r1418732 = r1418703 * r1418731;
        double r1418733 = r1418732 * r1418722;
        double r1418734 = r1418708 / r1418721;
        double r1418735 = cos(r1418720);
        double r1418736 = r1418734 * r1418735;
        double r1418737 = r1418733 - r1418736;
        double r1418738 = r1418705 ? r1418726 : r1418737;
        return r1418738;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if F < -6.304734718037909e+78

    1. Initial program 30.1

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

      \[\leadsto {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\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*24.6

      \[\leadsto \color{blue}{\left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}} \cdot F\right) \cdot \frac{1}{\sin B}} - \frac{x}{\tan B}\]
    6. Using strategy rm
    7. Applied expm1-log1p-u24.8

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

      \[\leadsto \mathsf{expm1}\left(\color{blue}{\left(F \cdot \sqrt{\frac{1}{2}} - \left(x \cdot \left(F \cdot \sqrt{\frac{1}{8}}\right) + \frac{1}{2} \cdot \left({F}^{2} \cdot {\left(\sqrt{\frac{1}{2}}\right)}^{2}\right)\right)\right)}\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\]
    9. Simplified9.6

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

    if -6.304734718037909e+78 < F

    1. Initial program 9.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. Simplified9.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 div-inv9.2

      \[\leadsto {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\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*7.1

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

      \[\leadsto \left({\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}} \cdot F\right) \cdot \frac{1}{\sin B} - \frac{x}{\color{blue}{\frac{\sin B}{\cos B}}}\]
    8. Applied associate-/r/7.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -6.304734718037909 \cdot 10^{+78}:\\ \;\;\;\;\mathsf{expm1}\left(\left(\left(\sqrt{\frac{1}{2}} - x \cdot \sqrt{\frac{1}{8}}\right) \cdot F - \left(F \cdot F\right) \cdot \frac{1}{4}\right)\right) \cdot \frac{1}{\sin B} - \frac{x}{\tan B}\\ \mathbf{else}:\\ \;\;\;\;\left(F \cdot {\left(\mathsf{fma}\left(2, x, \left(\mathsf{fma}\left(F, F, 2\right)\right)\right)\right)}^{\frac{-1}{2}}\right) \cdot \frac{1}{\sin B} - \frac{x}{\sin B} \cdot \cos B\\ \end{array}\]

Reproduce

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