Average Error: 13.8 → 0.7
Time: 14.0s
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.9533540946199464 \cdot 10^{117}:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1}{\mathsf{fma}\left(1, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \frac{\sin B}{{F}^{2}}, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \sin B\right)}\\ \mathbf{elif}\;F \le 1633306.38700473751:\\ \;\;\;\;\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) + \frac{1}{\mathsf{fma}\left(1 \cdot \sin B, {\left(\frac{1}{{F}^{2}}\right)}^{1}, \sin B\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.9533540946199464 \cdot 10^{117}:\\
\;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1}{\mathsf{fma}\left(1, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \frac{\sin B}{{F}^{2}}, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \sin B\right)}\\

\mathbf{elif}\;F \le 1633306.38700473751:\\
\;\;\;\;\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) + \frac{1}{\mathsf{fma}\left(1 \cdot \sin B, {\left(\frac{1}{{F}^{2}}\right)}^{1}, \sin B\right)}\\

\end{array}
double f(double F, double B, double x) {
        double r44933 = x;
        double r44934 = 1.0;
        double r44935 = B;
        double r44936 = tan(r44935);
        double r44937 = r44934 / r44936;
        double r44938 = r44933 * r44937;
        double r44939 = -r44938;
        double r44940 = F;
        double r44941 = sin(r44935);
        double r44942 = r44940 / r44941;
        double r44943 = r44940 * r44940;
        double r44944 = 2.0;
        double r44945 = r44943 + r44944;
        double r44946 = r44944 * r44933;
        double r44947 = r44945 + r44946;
        double r44948 = r44934 / r44944;
        double r44949 = -r44948;
        double r44950 = pow(r44947, r44949);
        double r44951 = r44942 * r44950;
        double r44952 = r44939 + r44951;
        return r44952;
}

double f(double F, double B, double x) {
        double r44953 = F;
        double r44954 = -3.9533540946199464e+117;
        bool r44955 = r44953 <= r44954;
        double r44956 = x;
        double r44957 = 1.0;
        double r44958 = r44956 * r44957;
        double r44959 = B;
        double r44960 = tan(r44959);
        double r44961 = r44958 / r44960;
        double r44962 = -r44961;
        double r44963 = 1.0;
        double r44964 = -1.0;
        double r44965 = pow(r44964, r44957);
        double r44966 = r44963 / r44965;
        double r44967 = pow(r44966, r44957);
        double r44968 = sin(r44959);
        double r44969 = 2.0;
        double r44970 = pow(r44953, r44969);
        double r44971 = r44968 / r44970;
        double r44972 = r44967 * r44971;
        double r44973 = r44967 * r44968;
        double r44974 = fma(r44957, r44972, r44973);
        double r44975 = r44963 / r44974;
        double r44976 = r44962 + r44975;
        double r44977 = 1633306.3870047375;
        bool r44978 = r44953 <= r44977;
        double r44979 = r44953 / r44968;
        double r44980 = r44953 * r44953;
        double r44981 = 2.0;
        double r44982 = r44980 + r44981;
        double r44983 = r44981 * r44956;
        double r44984 = r44982 + r44983;
        double r44985 = r44957 / r44981;
        double r44986 = pow(r44984, r44985);
        double r44987 = r44979 / r44986;
        double r44988 = r44962 + r44987;
        double r44989 = r44957 * r44968;
        double r44990 = pow(r44953, r44981);
        double r44991 = r44963 / r44990;
        double r44992 = pow(r44991, r44957);
        double r44993 = fma(r44989, r44992, r44968);
        double r44994 = r44963 / r44993;
        double r44995 = r44962 + r44994;
        double r44996 = r44978 ? r44988 : r44995;
        double r44997 = r44955 ? r44976 : r44996;
        return r44997;
}

Error

Bits error versus F

Bits error versus B

Bits error versus x

Derivation

  1. Split input into 3 regimes
  2. if F < -3.9533540946199464e+117

    1. Initial program 36.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-*l/29.9

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \color{blue}{\frac{F \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B}}\]
    4. Using strategy rm
    5. Applied associate-*r/29.9

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 1}{\tan B}}\right) + \frac{F \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B}\]
    6. Using strategy rm
    7. Applied clear-num29.9

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

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

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

    if -3.9533540946199464e+117 < F < 1633306.3870047375

    1. Initial program 1.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-*l/0.4

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

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 1}{\tan B}}\right) + \frac{F \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B}\]
    6. Using strategy rm
    7. Applied clear-num0.3

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

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

      \[\leadsto \left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1}{\frac{\sin B}{\color{blue}{\frac{F}{{\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}}}\]
    11. Applied associate-/r/1.0

      \[\leadsto \left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1}{\color{blue}{\frac{\sin B}{F} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(\frac{1}{2}\right)}}}\]
    12. Applied associate-/r*1.1

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

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

    if 1633306.3870047375 < F

    1. Initial program 25.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-*l/20.0

      \[\leadsto \left(-x \cdot \frac{1}{\tan B}\right) + \color{blue}{\frac{F \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B}}\]
    4. Using strategy rm
    5. Applied associate-*r/19.9

      \[\leadsto \left(-\color{blue}{\frac{x \cdot 1}{\tan B}}\right) + \frac{F \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)}}{\sin B}\]
    6. Using strategy rm
    7. Applied clear-num20.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;F \le -3.9533540946199464 \cdot 10^{117}:\\ \;\;\;\;\left(-\frac{x \cdot 1}{\tan B}\right) + \frac{1}{\mathsf{fma}\left(1, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \frac{\sin B}{{F}^{2}}, {\left(\frac{1}{{-1}^{1}}\right)}^{1} \cdot \sin B\right)}\\ \mathbf{elif}\;F \le 1633306.38700473751:\\ \;\;\;\;\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) + \frac{1}{\mathsf{fma}\left(1 \cdot \sin B, {\left(\frac{1}{{F}^{2}}\right)}^{1}, \sin B\right)}\\ \end{array}\]

Reproduce

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