Average Error: 13.4 → 1.0
Time: 12.3s
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 -3.391185637000769857389211381756035009184 \cdot 10^{143}:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\ \mathbf{elif}\;F \le 46343.85507146434974856674671173095703125:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{x \cdot 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 -3.391185637000769857389211381756035009184 \cdot 10^{143}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(-\frac{x \cdot 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 r37992 = x;
        double r37993 = 1.0;
        double r37994 = B;
        double r37995 = tan(r37994);
        double r37996 = r37993 / r37995;
        double r37997 = r37992 * r37996;
        double r37998 = -r37997;
        double r37999 = F;
        double r38000 = sin(r37994);
        double r38001 = r37999 / r38000;
        double r38002 = r37999 * r37999;
        double r38003 = 2.0;
        double r38004 = r38002 + r38003;
        double r38005 = r38003 * r37992;
        double r38006 = r38004 + r38005;
        double r38007 = r37993 / r38003;
        double r38008 = -r38007;
        double r38009 = pow(r38006, r38008);
        double r38010 = r38001 * r38009;
        double r38011 = r37998 + r38010;
        return r38011;
}

double f(double F, double B, double x) {
        double r38012 = F;
        double r38013 = -3.39118563700077e+143;
        bool r38014 = r38012 <= r38013;
        double r38015 = x;
        double r38016 = 1.0;
        double r38017 = r38015 * r38016;
        double r38018 = B;
        double r38019 = tan(r38018);
        double r38020 = r38017 / r38019;
        double r38021 = -r38020;
        double r38022 = 1.0;
        double r38023 = sin(r38018);
        double r38024 = 2.0;
        double r38025 = pow(r38012, r38024);
        double r38026 = r38023 * r38025;
        double r38027 = r38022 / r38026;
        double r38028 = r38016 * r38027;
        double r38029 = r38022 / r38023;
        double r38030 = r38028 - r38029;
        double r38031 = r38021 + r38030;
        double r38032 = 46343.85507146435;
        bool r38033 = r38012 <= r38032;
        double r38034 = r38012 / r38023;
        double r38035 = r38012 * r38012;
        double r38036 = 2.0;
        double r38037 = r38035 + r38036;
        double r38038 = r38036 * r38015;
        double r38039 = r38037 + r38038;
        double r38040 = r38016 / r38036;
        double r38041 = pow(r38039, r38040);
        double r38042 = r38034 / r38041;
        double r38043 = r38021 + r38042;
        double r38044 = r38029 - r38028;
        double r38045 = r38021 + r38044;
        double r38046 = r38033 ? r38043 : r38045;
        double r38047 = r38014 ? r38031 : r38046;
        return r38047;
}

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 < -3.39118563700077e+143

    1. Initial program 39.6

      \[\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 associate-*r/39.5

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 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)}\]
    4. Taylor expanded around -inf 0.1

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

    if -3.39118563700077e+143 < F < 46343.85507146435

    1. Initial program 1.6

      \[\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 associate-*r/1.5

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 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)}\]
    4. Using strategy rm
    5. Applied pow-neg1.6

      \[\leadsto \left(-\frac{x \cdot 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)}}}\]
    6. Applied un-div-inv1.5

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

    if 46343.85507146435 < F

    1. Initial program 23.9

      \[\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 associate-*r/23.9

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 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)}\]
    4. Taylor expanded around inf 0.2

      \[\leadsto \left(-\frac{x \cdot 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 simplification1.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -3.391185637000769857389211381756035009184 \cdot 10^{143}:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right)\\ \mathbf{elif}\;F \le 46343.85507146434974856674671173095703125:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{\frac{F}{\sin B}}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{x \cdot 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 2019352 
(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))))))