Average Error: 13.4 → 0.3
Time: 11.7s
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 -128874030.500033080577850341796875:\\ \;\;\;\;\mathsf{fma}\left(1, \frac{x}{\sin B \cdot {F}^{2}}, -\mathsf{fma}\left(1, \frac{x \cdot \cos B}{\sin B}, \frac{1}{\sin B}\right)\right)\\ \mathbf{elif}\;F \le 8324873.699564130045473575592041015625:\\ \;\;\;\;\mathsf{fma}\left(\frac{F}{\sin B}, \sqrt[3]{\frac{1}{{\left({\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}\right)}^{3}}}, -x \cdot \frac{1}{\tan B}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-1, \mathsf{fma}\left(\frac{x}{\sin B}, \cos B, \frac{x}{\sin B \cdot {F}^{2}}\right), \frac{1}{\sin B}\right)\\ \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 -128874030.500033080577850341796875:\\
\;\;\;\;\mathsf{fma}\left(1, \frac{x}{\sin B \cdot {F}^{2}}, -\mathsf{fma}\left(1, \frac{x \cdot \cos B}{\sin B}, \frac{1}{\sin B}\right)\right)\\

\mathbf{elif}\;F \le 8324873.699564130045473575592041015625:\\
\;\;\;\;\mathsf{fma}\left(\frac{F}{\sin B}, \sqrt[3]{\frac{1}{{\left({\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}\right)}^{3}}}, -x \cdot \frac{1}{\tan B}\right)\\

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

\end{array}
double f(double F, double B, double x) {
        double r38808 = x;
        double r38809 = 1.0;
        double r38810 = B;
        double r38811 = tan(r38810);
        double r38812 = r38809 / r38811;
        double r38813 = r38808 * r38812;
        double r38814 = -r38813;
        double r38815 = F;
        double r38816 = sin(r38810);
        double r38817 = r38815 / r38816;
        double r38818 = r38815 * r38815;
        double r38819 = 2.0;
        double r38820 = r38818 + r38819;
        double r38821 = r38819 * r38808;
        double r38822 = r38820 + r38821;
        double r38823 = r38809 / r38819;
        double r38824 = -r38823;
        double r38825 = pow(r38822, r38824);
        double r38826 = r38817 * r38825;
        double r38827 = r38814 + r38826;
        return r38827;
}

double f(double F, double B, double x) {
        double r38828 = F;
        double r38829 = -128874030.50003308;
        bool r38830 = r38828 <= r38829;
        double r38831 = 1.0;
        double r38832 = x;
        double r38833 = B;
        double r38834 = sin(r38833);
        double r38835 = 2.0;
        double r38836 = pow(r38828, r38835);
        double r38837 = r38834 * r38836;
        double r38838 = r38832 / r38837;
        double r38839 = cos(r38833);
        double r38840 = r38832 * r38839;
        double r38841 = r38840 / r38834;
        double r38842 = 1.0;
        double r38843 = r38842 / r38834;
        double r38844 = fma(r38831, r38841, r38843);
        double r38845 = -r38844;
        double r38846 = fma(r38831, r38838, r38845);
        double r38847 = 8324873.69956413;
        bool r38848 = r38828 <= r38847;
        double r38849 = r38828 / r38834;
        double r38850 = r38828 * r38828;
        double r38851 = 2.0;
        double r38852 = r38850 + r38851;
        double r38853 = r38851 * r38832;
        double r38854 = r38852 + r38853;
        double r38855 = r38831 / r38851;
        double r38856 = pow(r38854, r38855);
        double r38857 = 3.0;
        double r38858 = pow(r38856, r38857);
        double r38859 = r38842 / r38858;
        double r38860 = cbrt(r38859);
        double r38861 = tan(r38833);
        double r38862 = r38831 / r38861;
        double r38863 = r38832 * r38862;
        double r38864 = -r38863;
        double r38865 = fma(r38849, r38860, r38864);
        double r38866 = -r38831;
        double r38867 = r38832 / r38834;
        double r38868 = fma(r38867, r38839, r38838);
        double r38869 = fma(r38866, r38868, r38843);
        double r38870 = r38848 ? r38865 : r38869;
        double r38871 = r38830 ? r38846 : r38870;
        return r38871;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if F < -128874030.50003308

    1. Initial program 24.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. Simplified24.2

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

      \[\leadsto \color{blue}{1 \cdot \frac{x}{\sin B \cdot {F}^{2}} - \left(1 \cdot \frac{x \cdot \cos B}{\sin B} + \frac{1}{\sin B}\right)}\]
    4. Simplified0.2

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

    if -128874030.50003308 < F < 8324873.69956413

    1. Initial program 0.4

      \[\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. Simplified0.4

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

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

      \[\leadsto \mathsf{fma}\left(\frac{F}{\sin B}, \frac{1}{\color{blue}{\sqrt[3]{\left({\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}\right) \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}}, -x \cdot \frac{1}{\tan B}\right)\]
    7. Applied add-cbrt-cube0.7

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

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

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

    if 8324873.69956413 < F

    1. Initial program 25.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. Simplified25.6

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

      \[\leadsto \mathsf{fma}\left(\frac{F}{\sin B}, {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}, -\color{blue}{1 \cdot \frac{x \cdot \cos B}{\sin B}}\right)\]
    4. Using strategy rm
    5. Applied associate-/l*25.6

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -128874030.500033080577850341796875:\\ \;\;\;\;\mathsf{fma}\left(1, \frac{x}{\sin B \cdot {F}^{2}}, -\mathsf{fma}\left(1, \frac{x \cdot \cos B}{\sin B}, \frac{1}{\sin B}\right)\right)\\ \mathbf{elif}\;F \le 8324873.699564130045473575592041015625:\\ \;\;\;\;\mathsf{fma}\left(\frac{F}{\sin B}, \sqrt[3]{\frac{1}{{\left({\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}\right)}^{3}}}, -x \cdot \frac{1}{\tan B}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(-1, \mathsf{fma}\left(\frac{x}{\sin B}, \cos B, \frac{x}{\sin B \cdot {F}^{2}}\right), \frac{1}{\sin B}\right)\\ \end{array}\]

Reproduce

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