\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 -4.183187481012982 \cdot 10^{+22}:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot \left(F \cdot F\right)} - \frac{1}{\sin B}\right) - \frac{x}{\tan B}\\
\mathbf{elif}\;F \le 6.013802817876398 \cdot 10^{+19}:\\
\;\;\;\;\frac{{\left(x \cdot 2 + \left(2 + F \cdot F\right)\right)}^{\frac{-1}{2}}}{\frac{1}{\frac{F}{\sin B}}} - \frac{x}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - \frac{1}{\sin B \cdot \left(F \cdot F\right)}\right) - \frac{x}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r817803 = x;
double r817804 = 1.0;
double r817805 = B;
double r817806 = tan(r817805);
double r817807 = r817804 / r817806;
double r817808 = r817803 * r817807;
double r817809 = -r817808;
double r817810 = F;
double r817811 = sin(r817805);
double r817812 = r817810 / r817811;
double r817813 = r817810 * r817810;
double r817814 = 2.0;
double r817815 = r817813 + r817814;
double r817816 = r817814 * r817803;
double r817817 = r817815 + r817816;
double r817818 = r817804 / r817814;
double r817819 = -r817818;
double r817820 = pow(r817817, r817819);
double r817821 = r817812 * r817820;
double r817822 = r817809 + r817821;
return r817822;
}
double f(double F, double B, double x) {
double r817823 = F;
double r817824 = -4.183187481012982e+22;
bool r817825 = r817823 <= r817824;
double r817826 = 1.0;
double r817827 = B;
double r817828 = sin(r817827);
double r817829 = r817823 * r817823;
double r817830 = r817828 * r817829;
double r817831 = r817826 / r817830;
double r817832 = r817826 / r817828;
double r817833 = r817831 - r817832;
double r817834 = x;
double r817835 = tan(r817827);
double r817836 = r817834 / r817835;
double r817837 = r817833 - r817836;
double r817838 = 6.013802817876398e+19;
bool r817839 = r817823 <= r817838;
double r817840 = 2.0;
double r817841 = r817834 * r817840;
double r817842 = r817840 + r817829;
double r817843 = r817841 + r817842;
double r817844 = -0.5;
double r817845 = pow(r817843, r817844);
double r817846 = r817823 / r817828;
double r817847 = r817826 / r817846;
double r817848 = r817845 / r817847;
double r817849 = r817848 - r817836;
double r817850 = r817832 - r817831;
double r817851 = r817850 - r817836;
double r817852 = r817839 ? r817849 : r817851;
double r817853 = r817825 ? r817837 : r817852;
return r817853;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -4.183187481012982e+22Initial program 26.4
Simplified25.5
Taylor expanded around -inf 0.1
Simplified0.1
if -4.183187481012982e+22 < F < 6.013802817876398e+19Initial program 0.4
Simplified0.3
rmApplied clear-num0.4
if 6.013802817876398e+19 < F Initial program 26.6
Simplified25.8
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.3
herbie shell --seed 2019156
(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))))))