\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 -67836704772650.625:\\
\;\;\;\;\left(\frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\
\mathbf{elif}\;F \le 16387.0021157664778:\\
\;\;\;\;\frac{F}{\sin B \cdot {\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} - \frac{1}{\sin B \cdot {F}^{2}}\right) - \frac{x \cdot 1}{\tan B}\\
\end{array}double f(double F, double B, double x) {
double r41265 = x;
double r41266 = 1.0;
double r41267 = B;
double r41268 = tan(r41267);
double r41269 = r41266 / r41268;
double r41270 = r41265 * r41269;
double r41271 = -r41270;
double r41272 = F;
double r41273 = sin(r41267);
double r41274 = r41272 / r41273;
double r41275 = r41272 * r41272;
double r41276 = 2.0;
double r41277 = r41275 + r41276;
double r41278 = r41276 * r41265;
double r41279 = r41277 + r41278;
double r41280 = r41266 / r41276;
double r41281 = -r41280;
double r41282 = pow(r41279, r41281);
double r41283 = r41274 * r41282;
double r41284 = r41271 + r41283;
return r41284;
}
double f(double F, double B, double x) {
double r41285 = F;
double r41286 = -67836704772650.625;
bool r41287 = r41285 <= r41286;
double r41288 = 1.0;
double r41289 = B;
double r41290 = sin(r41289);
double r41291 = 2.0;
double r41292 = pow(r41285, r41291);
double r41293 = r41290 * r41292;
double r41294 = r41288 / r41293;
double r41295 = 1.0;
double r41296 = r41295 / r41290;
double r41297 = r41294 - r41296;
double r41298 = x;
double r41299 = r41298 * r41288;
double r41300 = tan(r41289);
double r41301 = r41299 / r41300;
double r41302 = r41297 - r41301;
double r41303 = 16387.002115766478;
bool r41304 = r41285 <= r41303;
double r41305 = r41285 * r41285;
double r41306 = 2.0;
double r41307 = r41305 + r41306;
double r41308 = r41306 * r41298;
double r41309 = r41307 + r41308;
double r41310 = r41288 / r41306;
double r41311 = pow(r41309, r41310);
double r41312 = r41290 * r41311;
double r41313 = r41285 / r41312;
double r41314 = r41313 - r41301;
double r41315 = r41296 - r41294;
double r41316 = r41315 - r41301;
double r41317 = r41304 ? r41314 : r41316;
double r41318 = r41287 ? r41302 : r41317;
return r41318;
}



Bits error versus F



Bits error versus B



Bits error versus x
Results
if F < -67836704772650.625Initial program 25.7
Simplified25.7
rmApplied associate-*l/19.6
rmApplied associate-*r/19.5
rmApplied pow-neg19.5
Applied un-div-inv19.5
Applied associate-/l/19.5
Taylor expanded around -inf 0.1
Simplified0.1
if -67836704772650.625 < F < 16387.002115766478Initial program 0.4
Simplified0.4
rmApplied associate-*l/0.4
rmApplied associate-*r/0.3
rmApplied pow-neg0.3
Applied un-div-inv0.3
Applied associate-/l/0.3
if 16387.002115766478 < F Initial program 25.7
Simplified25.7
rmApplied associate-*l/19.2
rmApplied associate-*r/19.1
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2020045
(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))))))