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

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

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

\end{array}
double f(double F, double B, double x) {
        double r2390109 = x;
        double r2390110 = 1.0;
        double r2390111 = B;
        double r2390112 = tan(r2390111);
        double r2390113 = r2390110 / r2390112;
        double r2390114 = r2390109 * r2390113;
        double r2390115 = -r2390114;
        double r2390116 = F;
        double r2390117 = sin(r2390111);
        double r2390118 = r2390116 / r2390117;
        double r2390119 = r2390116 * r2390116;
        double r2390120 = 2.0;
        double r2390121 = r2390119 + r2390120;
        double r2390122 = r2390120 * r2390109;
        double r2390123 = r2390121 + r2390122;
        double r2390124 = r2390110 / r2390120;
        double r2390125 = -r2390124;
        double r2390126 = pow(r2390123, r2390125);
        double r2390127 = r2390118 * r2390126;
        double r2390128 = r2390115 + r2390127;
        return r2390128;
}

double f(double F, double B, double x) {
        double r2390129 = F;
        double r2390130 = -73198.40425548062;
        bool r2390131 = r2390129 <= r2390130;
        double r2390132 = 1.0;
        double r2390133 = B;
        double r2390134 = sin(r2390133);
        double r2390135 = r2390132 / r2390134;
        double r2390136 = r2390129 * r2390129;
        double r2390137 = r2390135 / r2390136;
        double r2390138 = 1.0;
        double r2390139 = r2390138 / r2390134;
        double r2390140 = r2390137 - r2390139;
        double r2390141 = x;
        double r2390142 = tan(r2390133);
        double r2390143 = r2390132 / r2390142;
        double r2390144 = r2390141 * r2390143;
        double r2390145 = r2390140 - r2390144;
        double r2390146 = 1.0855066767324344e+24;
        bool r2390147 = r2390129 <= r2390146;
        double r2390148 = r2390129 / r2390134;
        double r2390149 = 2.0;
        double r2390150 = fma(r2390141, r2390149, r2390149);
        double r2390151 = fma(r2390129, r2390129, r2390150);
        double r2390152 = r2390132 / r2390149;
        double r2390153 = pow(r2390151, r2390152);
        double r2390154 = r2390148 / r2390153;
        double r2390155 = r2390141 / r2390142;
        double r2390156 = r2390132 * r2390155;
        double r2390157 = r2390154 - r2390156;
        double r2390158 = pow(r2390129, r2390132);
        double r2390159 = r2390138 / r2390158;
        double r2390160 = pow(r2390159, r2390132);
        double r2390161 = r2390138 / r2390129;
        double r2390162 = -1.0;
        double r2390163 = pow(r2390161, r2390162);
        double r2390164 = fma(r2390132, r2390160, r2390163);
        double r2390165 = r2390129 / r2390164;
        double r2390166 = r2390165 * r2390139;
        double r2390167 = r2390166 - r2390156;
        double r2390168 = r2390147 ? r2390157 : r2390167;
        double r2390169 = r2390131 ? r2390145 : r2390168;
        return r2390169;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

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

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

      \[\leadsto \color{blue}{\frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - \frac{1}{\tan B} \cdot x}\]
    3. Taylor expanded around -inf 0.2

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

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

    if -73198.40425548062 < F < 1.0855066767324344e+24

    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. Simplified0.4

      \[\leadsto \color{blue}{\frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - \frac{1}{\tan B} \cdot x}\]
    3. Using strategy rm
    4. Applied div-inv0.4

      \[\leadsto \frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - \color{blue}{\left(1 \cdot \frac{1}{\tan B}\right)} \cdot x\]
    5. Applied associate-*l*0.4

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

      \[\leadsto \frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - 1 \cdot \color{blue}{\frac{x}{\tan B}}\]
    7. Using strategy rm
    8. Applied pow-neg0.3

      \[\leadsto \frac{F}{\frac{\sin B}{\color{blue}{\frac{1}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}}}} - 1 \cdot \frac{x}{\tan B}\]
    9. Applied associate-/r/0.3

      \[\leadsto \frac{F}{\color{blue}{\frac{\sin B}{1} \cdot {\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}} - 1 \cdot \frac{x}{\tan B}\]
    10. Applied associate-/r*0.3

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

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

    if 1.0855066767324344e+24 < F

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

      \[\leadsto \color{blue}{\frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - \frac{1}{\tan B} \cdot x}\]
    3. Using strategy rm
    4. Applied div-inv18.9

      \[\leadsto \frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - \color{blue}{\left(1 \cdot \frac{1}{\tan B}\right)} \cdot x\]
    5. Applied associate-*l*18.9

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

      \[\leadsto \frac{F}{\frac{\sin B}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(-\frac{1}{2}\right)}}} - 1 \cdot \color{blue}{\frac{x}{\tan B}}\]
    7. Using strategy rm
    8. Applied pow-neg18.9

      \[\leadsto \frac{F}{\frac{\sin B}{\color{blue}{\frac{1}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}}}} - 1 \cdot \frac{x}{\tan B}\]
    9. Applied associate-/r/18.8

      \[\leadsto \frac{F}{\color{blue}{\frac{\sin B}{1} \cdot {\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}}} - 1 \cdot \frac{x}{\tan B}\]
    10. Applied *-un-lft-identity18.8

      \[\leadsto \frac{\color{blue}{1 \cdot F}}{\frac{\sin B}{1} \cdot {\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}} - 1 \cdot \frac{x}{\tan B}\]
    11. Applied times-frac18.8

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

      \[\leadsto \color{blue}{\frac{1}{\sin B}} \cdot \frac{F}{{\left(\mathsf{fma}\left(F, F, \mathsf{fma}\left(x, 2, 2\right)\right)\right)}^{\left(\frac{1}{2}\right)}} - 1 \cdot \frac{x}{\tan B}\]
    13. Taylor expanded around inf 0.2

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

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

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

Reproduce

herbie shell --seed 2019172 +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))))))