Average Error: 13.5 → 0.2
Time: 36.6s
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 -225219344219741.5625:\\ \;\;\;\;\frac{x \cdot \left(-1\right)}{\tan B} + \left(\frac{\frac{1}{F \cdot F}}{\sin B} + \frac{-1}{\sin B}\right)\\ \mathbf{elif}\;F \le 10637.3795628844945895252749323844909668:\\ \;\;\;\;\frac{x \cdot \left(-1\right)}{\tan B} + \left({\left(\sqrt{\mathsf{fma}\left(F, F, \mathsf{fma}\left(2, x, 2\right)\right)}\right)}^{\left(\frac{-1}{2}\right)} \cdot {\left(\sqrt{\mathsf{fma}\left(F, F, \mathsf{fma}\left(2, x, 2\right)\right)}\right)}^{\left(\frac{-1}{2}\right)}\right) \cdot \frac{F}{\sin B}\\ \mathbf{else}:\\ \;\;\;\;\left(-x\right) \cdot \frac{1}{\tan B} + \left(\frac{1}{\sin B} - \frac{\frac{1}{\sin B}}{F \cdot F}\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 -225219344219741.5625:\\
\;\;\;\;\frac{x \cdot \left(-1\right)}{\tan B} + \left(\frac{\frac{1}{F \cdot F}}{\sin B} + \frac{-1}{\sin B}\right)\\

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

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

\end{array}
double f(double F, double B, double x) {
        double r49056 = x;
        double r49057 = 1.0;
        double r49058 = B;
        double r49059 = tan(r49058);
        double r49060 = r49057 / r49059;
        double r49061 = r49056 * r49060;
        double r49062 = -r49061;
        double r49063 = F;
        double r49064 = sin(r49058);
        double r49065 = r49063 / r49064;
        double r49066 = r49063 * r49063;
        double r49067 = 2.0;
        double r49068 = r49066 + r49067;
        double r49069 = r49067 * r49056;
        double r49070 = r49068 + r49069;
        double r49071 = r49057 / r49067;
        double r49072 = -r49071;
        double r49073 = pow(r49070, r49072);
        double r49074 = r49065 * r49073;
        double r49075 = r49062 + r49074;
        return r49075;
}

double f(double F, double B, double x) {
        double r49076 = F;
        double r49077 = -225219344219741.56;
        bool r49078 = r49076 <= r49077;
        double r49079 = x;
        double r49080 = 1.0;
        double r49081 = -r49080;
        double r49082 = r49079 * r49081;
        double r49083 = B;
        double r49084 = tan(r49083);
        double r49085 = r49082 / r49084;
        double r49086 = r49076 * r49076;
        double r49087 = r49080 / r49086;
        double r49088 = sin(r49083);
        double r49089 = r49087 / r49088;
        double r49090 = -1.0;
        double r49091 = r49090 / r49088;
        double r49092 = r49089 + r49091;
        double r49093 = r49085 + r49092;
        double r49094 = 10637.379562884495;
        bool r49095 = r49076 <= r49094;
        double r49096 = 2.0;
        double r49097 = fma(r49096, r49079, r49096);
        double r49098 = fma(r49076, r49076, r49097);
        double r49099 = sqrt(r49098);
        double r49100 = r49081 / r49096;
        double r49101 = pow(r49099, r49100);
        double r49102 = r49101 * r49101;
        double r49103 = r49076 / r49088;
        double r49104 = r49102 * r49103;
        double r49105 = r49085 + r49104;
        double r49106 = -r49079;
        double r49107 = r49080 / r49084;
        double r49108 = r49106 * r49107;
        double r49109 = 1.0;
        double r49110 = r49109 / r49088;
        double r49111 = r49080 / r49088;
        double r49112 = r49111 / r49086;
        double r49113 = r49110 - r49112;
        double r49114 = r49108 + r49113;
        double r49115 = r49095 ? r49105 : r49114;
        double r49116 = r49078 ? r49093 : r49115;
        return r49116;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if F < -225219344219741.56

    1. Initial program 25.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. Using strategy rm
    3. Applied associate-*r/25.1

      \[\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}{{F}^{2} \cdot \sin B} - \frac{1}{\sin B}\right)}\]
    5. Simplified0.1

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

    if -225219344219741.56 < F < 10637.379562884495

    1. Initial program 0.4

      \[\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/0.3

      \[\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 add-sqr-sqrt0.3

      \[\leadsto \left(-\frac{x \cdot 1}{\tan B}\right) + \frac{F}{\sin B} \cdot {\color{blue}{\left(\sqrt{\left(F \cdot F + 2\right) + 2 \cdot x} \cdot \sqrt{\left(F \cdot F + 2\right) + 2 \cdot x}\right)}}^{\left(-\frac{1}{2}\right)}\]
    6. Applied unpow-prod-down0.3

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

      \[\leadsto \left(-\frac{x \cdot 1}{\tan B}\right) + \frac{F}{\sin B} \cdot \left(\color{blue}{{\left(\sqrt{\mathsf{fma}\left(F, F, \mathsf{fma}\left(2, x, 2\right)\right)}\right)}^{\left(-\frac{1}{2}\right)}} \cdot {\left(\sqrt{\left(F \cdot F + 2\right) + 2 \cdot x}\right)}^{\left(-\frac{1}{2}\right)}\right)\]
    8. Simplified0.3

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

    if 10637.379562884495 < F

    1. Initial program 25.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 0.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -225219344219741.5625:\\ \;\;\;\;\frac{x \cdot \left(-1\right)}{\tan B} + \left(\frac{\frac{1}{F \cdot F}}{\sin B} + \frac{-1}{\sin B}\right)\\ \mathbf{elif}\;F \le 10637.3795628844945895252749323844909668:\\ \;\;\;\;\frac{x \cdot \left(-1\right)}{\tan B} + \left({\left(\sqrt{\mathsf{fma}\left(F, F, \mathsf{fma}\left(2, x, 2\right)\right)}\right)}^{\left(\frac{-1}{2}\right)} \cdot {\left(\sqrt{\mathsf{fma}\left(F, F, \mathsf{fma}\left(2, x, 2\right)\right)}\right)}^{\left(\frac{-1}{2}\right)}\right) \cdot \frac{F}{\sin B}\\ \mathbf{else}:\\ \;\;\;\;\left(-x\right) \cdot \frac{1}{\tan B} + \left(\frac{1}{\sin B} - \frac{\frac{1}{\sin B}}{F \cdot F}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (F B x)
  :name "VandenBroeck and Keller, Equation (23)"
  (+ (- (* x (/ 1.0 (tan B)))) (* (/ F (sin B)) (pow (+ (+ (* F F) 2.0) (* 2.0 x)) (- (/ 1.0 2.0))))))