\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;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -128874030.50003308Initial program 24.2
Simplified24.2
Taylor expanded around -inf 0.2
Simplified0.2
if -128874030.50003308 < F < 8324873.69956413Initial program 0.4
Simplified0.4
rmApplied pow-neg0.5
rmApplied add-cbrt-cube0.7
Applied add-cbrt-cube0.7
Applied cbrt-undiv0.5
Simplified0.5
if 8324873.69956413 < F Initial program 25.7
Simplified25.6
Taylor expanded around inf 25.6
rmApplied associate-/l*25.6
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
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))))))