Average Error: 13.6 → 0.3
Time: 13.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 -8.2357196407830214 \cdot 10^{30}:\\ \;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\ \mathbf{elif}\;F \le 519496060.91579181:\\ \;\;\;\;\frac{F}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)} - 1 \cdot \frac{x \cdot \cos B}{\sin B}\\ \mathbf{else}:\\ \;\;\;\;\frac{F \cdot \left(\frac{1}{F} - 1 \cdot \frac{1}{{F}^{3}}\right)}{\sin B} - \frac{x \cdot 1}{\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 -8.2357196407830214 \cdot 10^{30}:\\
\;\;\;\;\left(1 \cdot \frac{1}{\sin B \cdot {F}^{2}} - \frac{1}{\sin B}\right) - \frac{x \cdot 1}{\tan B}\\

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

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

\end{array}
double f(double F, double B, double x) {
        double r42670 = x;
        double r42671 = 1.0;
        double r42672 = B;
        double r42673 = tan(r42672);
        double r42674 = r42671 / r42673;
        double r42675 = r42670 * r42674;
        double r42676 = -r42675;
        double r42677 = F;
        double r42678 = sin(r42672);
        double r42679 = r42677 / r42678;
        double r42680 = r42677 * r42677;
        double r42681 = 2.0;
        double r42682 = r42680 + r42681;
        double r42683 = r42681 * r42670;
        double r42684 = r42682 + r42683;
        double r42685 = r42671 / r42681;
        double r42686 = -r42685;
        double r42687 = pow(r42684, r42686);
        double r42688 = r42679 * r42687;
        double r42689 = r42676 + r42688;
        return r42689;
}

double f(double F, double B, double x) {
        double r42690 = F;
        double r42691 = -8.235719640783021e+30;
        bool r42692 = r42690 <= r42691;
        double r42693 = 1.0;
        double r42694 = 1.0;
        double r42695 = B;
        double r42696 = sin(r42695);
        double r42697 = 2.0;
        double r42698 = pow(r42690, r42697);
        double r42699 = r42696 * r42698;
        double r42700 = r42694 / r42699;
        double r42701 = r42693 * r42700;
        double r42702 = r42694 / r42696;
        double r42703 = r42701 - r42702;
        double r42704 = x;
        double r42705 = r42704 * r42693;
        double r42706 = tan(r42695);
        double r42707 = r42705 / r42706;
        double r42708 = r42703 - r42707;
        double r42709 = 519496060.9157918;
        bool r42710 = r42690 <= r42709;
        double r42711 = r42690 / r42696;
        double r42712 = r42690 * r42690;
        double r42713 = 2.0;
        double r42714 = r42712 + r42713;
        double r42715 = r42713 * r42704;
        double r42716 = r42714 + r42715;
        double r42717 = r42693 / r42713;
        double r42718 = -r42717;
        double r42719 = pow(r42716, r42718);
        double r42720 = r42711 * r42719;
        double r42721 = cos(r42695);
        double r42722 = r42704 * r42721;
        double r42723 = r42722 / r42696;
        double r42724 = r42693 * r42723;
        double r42725 = r42720 - r42724;
        double r42726 = r42694 / r42690;
        double r42727 = 3.0;
        double r42728 = pow(r42690, r42727);
        double r42729 = r42694 / r42728;
        double r42730 = r42693 * r42729;
        double r42731 = r42726 - r42730;
        double r42732 = r42690 * r42731;
        double r42733 = r42732 / r42696;
        double r42734 = r42733 - r42707;
        double r42735 = r42710 ? r42725 : r42734;
        double r42736 = r42692 ? r42708 : r42735;
        return r42736;
}

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 < -8.235719640783021e+30

    1. Initial program 26.7

      \[\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. Simplified26.7

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

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

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

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

    if -8.235719640783021e+30 < F < 519496060.9157918

    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}{\sin B} \cdot {\left(\left(F \cdot F + 2\right) + 2 \cdot x\right)}^{\left(-\frac{1}{2}\right)} - x \cdot \frac{1}{\tan B}}\]
    3. Taylor expanded around inf 0.3

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

    if 519496060.9157918 < F

    1. Initial program 26.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. Simplified26.0

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

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

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

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

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

Reproduce

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