Average Error: 13.9 → 0.8
Time: 11.5s
Precision: 64
\[\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.5035968290748607 \cdot 10^{47}:\\ \;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\ \mathbf{elif}\;F \le 5.75706281603868059 \cdot 10^{-13}:\\ \;\;\;\;\left(-1 \cdot \frac{x}{\frac{\sin B}{\cos B}}\right) + F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\ \end{array}\]
\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.5035968290748607 \cdot 10^{47}:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\

\mathbf{elif}\;F \le 5.75706281603868059 \cdot 10^{-13}:\\
\;\;\;\;\left(-1 \cdot \frac{x}{\frac{\sin B}{\cos B}}\right) + F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\

\mathbf{else}:\\
\;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\

\end{array}
double f(double F, double B, double x) {
        double r37507 = x;
        double r37508 = 1.0;
        double r37509 = B;
        double r37510 = tan(r37509);
        double r37511 = r37508 / r37510;
        double r37512 = r37507 * r37511;
        double r37513 = -r37512;
        double r37514 = F;
        double r37515 = sin(r37509);
        double r37516 = r37514 / r37515;
        double r37517 = r37514 * r37514;
        double r37518 = 2.0;
        double r37519 = r37517 + r37518;
        double r37520 = r37518 * r37507;
        double r37521 = r37519 + r37520;
        double r37522 = r37508 / r37518;
        double r37523 = -r37522;
        double r37524 = pow(r37521, r37523);
        double r37525 = r37516 * r37524;
        double r37526 = r37513 + r37525;
        return r37526;
}

double f(double F, double B, double x) {
        double r37527 = F;
        double r37528 = -4.503596829074861e+47;
        bool r37529 = r37527 <= r37528;
        double r37530 = x;
        double r37531 = 1.0;
        double r37532 = B;
        double r37533 = tan(r37532);
        double r37534 = r37531 / r37533;
        double r37535 = r37530 * r37534;
        double r37536 = -r37535;
        double r37537 = 1.0;
        double r37538 = sin(r37532);
        double r37539 = 2.0;
        double r37540 = pow(r37527, r37539);
        double r37541 = r37538 * r37540;
        double r37542 = r37537 / r37541;
        double r37543 = r37531 * r37542;
        double r37544 = r37537 / r37538;
        double r37545 = r37543 - r37544;
        double r37546 = r37536 + r37545;
        double r37547 = 5.757062816038681e-13;
        bool r37548 = r37527 <= r37547;
        double r37549 = cos(r37532);
        double r37550 = r37538 / r37549;
        double r37551 = r37530 / r37550;
        double r37552 = r37531 * r37551;
        double r37553 = -r37552;
        double r37554 = r37527 * r37527;
        double r37555 = 2.0;
        double r37556 = r37554 + r37555;
        double r37557 = r37555 * r37530;
        double r37558 = r37556 + r37557;
        double r37559 = r37531 / r37555;
        double r37560 = pow(r37558, r37559);
        double r37561 = r37538 * r37560;
        double r37562 = r37537 / r37561;
        double r37563 = r37527 * r37562;
        double r37564 = r37553 + r37563;
        double r37565 = r37544 - r37543;
        double r37566 = r37536 + r37565;
        double r37567 = r37548 ? r37564 : r37566;
        double r37568 = r37529 ? r37546 : r37567;
        return r37568;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if F < -4.503596829074861e+47

    1. Initial program 29.0

      \[\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)}\]
    2. Taylor expanded around -inf 0.2

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \color{blue}{\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)}\]

    if -4.503596829074861e+47 < F < 5.757062816038681e-13

    1. Initial program 0.5

      \[\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)}\]
    2. Using strategy rm
    3. Applied pow-neg0.6

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \frac{F}{\sin B} \cdot \color{blue}{\frac{1}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}\]
    4. Applied frac-times0.4

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \color{blue}{\frac{F \cdot 1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}\]
    5. Simplified0.4

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \frac{\color{blue}{F}}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\]
    6. Taylor expanded around inf 0.3

      \[\leadsto \left(-\color{blue}{1 \cdot \frac{x \cdot \cos B}{\sin B}}\right) + \frac{F}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\]
    7. Using strategy rm
    8. Applied associate-/l*0.3

      \[\leadsto \left(-1 \cdot \color{blue}{\frac{x}{\frac{\sin B}{\cos B}}}\right) + \frac{F}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\]
    9. Using strategy rm
    10. Applied div-inv0.3

      \[\leadsto \left(-1 \cdot \frac{x}{\frac{\sin B}{\cos B}}\right) + \color{blue}{F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}\]

    if 5.757062816038681e-13 < F

    1. Initial program 24.2

      \[\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)}\]
    2. Taylor expanded around inf 2.2

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \color{blue}{\left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -4.5035968290748607 \cdot 10^{47}:\\ \;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\ \mathbf{elif}\;F \le 5.75706281603868059 \cdot 10^{-13}:\\ \;\;\;\;\left(-1 \cdot \frac{x}{\frac{\sin B}{\cos B}}\right) + F \cdot \frac{1}{\sin B \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(-x \cdot \frac{1}{\tan B}\right) + \left(\frac{1}{\sin B} - 1 \cdot \frac{1}{\sin B \cdot {F}^{2}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020056 
(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))))))