\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 -332253304756638400:\\
\;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - x \cdot \frac{1}{\tan B}\\
\mathbf{elif}\;F \le 191.051664676912566:\\
\;\;\;\;\frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}} - \frac{x \cdot 1}{\tan B}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right) - x \cdot \frac{1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r41192 = x;
double r41193 = 1.0;
double r41194 = B;
double r41195 = tan(r41194);
double r41196 = r41193 / r41195;
double r41197 = r41192 * r41196;
double r41198 = -r41197;
double r41199 = F;
double r41200 = sin(r41194);
double r41201 = r41199 / r41200;
double r41202 = r41199 * r41199;
double r41203 = 2.0;
double r41204 = r41202 + r41203;
double r41205 = r41203 * r41192;
double r41206 = r41204 + r41205;
double r41207 = r41193 / r41203;
double r41208 = -r41207;
double r41209 = pow(r41206, r41208);
double r41210 = r41201 * r41209;
double r41211 = r41198 + r41210;
return r41211;
}
double f(double F, double B, double x) {
double r41212 = F;
double r41213 = -3.322533047566384e+17;
bool r41214 = r41212 <= r41213;
double r41215 = 1.0;
double r41216 = 1.0;
double r41217 = B;
double r41218 = sin(r41217);
double r41219 = 2.0;
double r41220 = pow(r41212, r41219);
double r41221 = r41218 * r41220;
double r41222 = r41216 / r41221;
double r41223 = r41215 * r41222;
double r41224 = r41216 / r41218;
double r41225 = r41223 - r41224;
double r41226 = x;
double r41227 = tan(r41217);
double r41228 = r41215 / r41227;
double r41229 = r41226 * r41228;
double r41230 = r41225 - r41229;
double r41231 = 191.05166467691257;
bool r41232 = r41212 <= r41231;
double r41233 = r41212 / r41218;
double r41234 = r41212 * r41212;
double r41235 = 2.0;
double r41236 = r41234 + r41235;
double r41237 = r41235 * r41226;
double r41238 = r41236 + r41237;
double r41239 = r41215 / r41235;
double r41240 = pow(r41238, r41239);
double r41241 = r41233 / r41240;
double r41242 = r41226 * r41215;
double r41243 = r41242 / r41227;
double r41244 = r41241 - r41243;
double r41245 = r41224 - r41223;
double r41246 = r41245 - r41229;
double r41247 = r41232 ? r41244 : r41246;
double r41248 = r41214 ? r41230 : r41247;
return r41248;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -3.322533047566384e+17Initial program 25.1
Simplified25.1
Taylor expanded around -inf 0.2
if -3.322533047566384e+17 < F < 191.05166467691257Initial program 0.4
Simplified0.4
rmApplied pow-neg0.4
Applied un-div-inv0.4
rmApplied associate-*r/0.3
if 191.05166467691257 < F Initial program 24.0
Simplified24.0
Taylor expanded around inf 0.3
Final simplification0.3
herbie shell --seed 2020027
(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))))))