\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 -86718073306.1840972900390625:\\
\;\;\;\;\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 150840120.32874381542205810546875:\\
\;\;\;\;\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 \frac{x \cdot \cos B}{\sin B}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-1, \frac{x \cdot \cos B}{\sin B} + \frac{x}{\sin B \cdot {F}^{2}}, \frac{1}{\sin B}\right)\\
\end{array}double f(double F, double B, double x) {
double r30243 = x;
double r30244 = 1.0;
double r30245 = B;
double r30246 = tan(r30245);
double r30247 = r30244 / r30246;
double r30248 = r30243 * r30247;
double r30249 = -r30248;
double r30250 = F;
double r30251 = sin(r30245);
double r30252 = r30250 / r30251;
double r30253 = r30250 * r30250;
double r30254 = 2.0;
double r30255 = r30253 + r30254;
double r30256 = r30254 * r30243;
double r30257 = r30255 + r30256;
double r30258 = r30244 / r30254;
double r30259 = -r30258;
double r30260 = pow(r30257, r30259);
double r30261 = r30252 * r30260;
double r30262 = r30249 + r30261;
return r30262;
}
double f(double F, double B, double x) {
double r30263 = F;
double r30264 = -86718073306.1841;
bool r30265 = r30263 <= r30264;
double r30266 = 1.0;
double r30267 = x;
double r30268 = B;
double r30269 = sin(r30268);
double r30270 = 2.0;
double r30271 = pow(r30263, r30270);
double r30272 = r30269 * r30271;
double r30273 = r30267 / r30272;
double r30274 = cos(r30268);
double r30275 = r30267 * r30274;
double r30276 = r30275 / r30269;
double r30277 = 1.0;
double r30278 = r30277 / r30269;
double r30279 = fma(r30266, r30276, r30278);
double r30280 = -r30279;
double r30281 = fma(r30266, r30273, r30280);
double r30282 = 150840120.32874382;
bool r30283 = r30263 <= r30282;
double r30284 = r30263 / r30269;
double r30285 = r30263 * r30263;
double r30286 = 2.0;
double r30287 = r30285 + r30286;
double r30288 = r30286 * r30267;
double r30289 = r30287 + r30288;
double r30290 = r30266 / r30286;
double r30291 = -r30290;
double r30292 = pow(r30289, r30291);
double r30293 = r30266 * r30276;
double r30294 = -r30293;
double r30295 = fma(r30284, r30292, r30294);
double r30296 = -r30266;
double r30297 = r30276 + r30273;
double r30298 = fma(r30296, r30297, r30278);
double r30299 = r30283 ? r30295 : r30298;
double r30300 = r30265 ? r30281 : r30299;
return r30300;
}



Bits error versus F



Bits error versus B



Bits error versus x
if F < -86718073306.1841Initial program 26.9
Simplified26.9
Taylor expanded around -inf 0.2
Simplified0.2
if -86718073306.1841 < F < 150840120.32874382Initial program 0.4
Simplified0.4
rmApplied associate-*r/0.3
Taylor expanded around inf 0.3
if 150840120.32874382 < F Initial program 24.1
Simplified24.1
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.3
herbie shell --seed 2020002 +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))))))