Average Error: 37.3 → 15.5
Time: 36.1s
Precision: 64
\[\tan \left(x + \varepsilon\right) - \tan x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -8.912746710277703 \cdot 10^{-18}:\\ \;\;\;\;\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} + \left(\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} \cdot \left(\tan x \cdot \tan \varepsilon\right) - \tan x\right)\\ \mathbf{elif}\;\varepsilon \le 5.153563226205793 \cdot 10^{-35}:\\ \;\;\;\;\left(\left(x \cdot \varepsilon\right) \cdot \varepsilon + \varepsilon\right) + \varepsilon \cdot \left(x \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\left(1 + \left(\tan x \cdot \tan \varepsilon + \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)\right) \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} - \tan x\\ \end{array}\]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -8.912746710277703 \cdot 10^{-18}:\\
\;\;\;\;\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} + \left(\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} \cdot \left(\tan x \cdot \tan \varepsilon\right) - \tan x\right)\\

\mathbf{elif}\;\varepsilon \le 5.153563226205793 \cdot 10^{-35}:\\
\;\;\;\;\left(\left(x \cdot \varepsilon\right) \cdot \varepsilon + \varepsilon\right) + \varepsilon \cdot \left(x \cdot x\right)\\

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

\end{array}
double f(double x, double eps) {
        double r3337719 = x;
        double r3337720 = eps;
        double r3337721 = r3337719 + r3337720;
        double r3337722 = tan(r3337721);
        double r3337723 = tan(r3337719);
        double r3337724 = r3337722 - r3337723;
        return r3337724;
}

double f(double x, double eps) {
        double r3337725 = eps;
        double r3337726 = -8.912746710277703e-18;
        bool r3337727 = r3337725 <= r3337726;
        double r3337728 = x;
        double r3337729 = tan(r3337728);
        double r3337730 = tan(r3337725);
        double r3337731 = r3337729 + r3337730;
        double r3337732 = 1.0;
        double r3337733 = r3337729 * r3337729;
        double r3337734 = r3337730 * r3337730;
        double r3337735 = r3337733 * r3337734;
        double r3337736 = r3337732 - r3337735;
        double r3337737 = r3337731 / r3337736;
        double r3337738 = r3337729 * r3337730;
        double r3337739 = r3337737 * r3337738;
        double r3337740 = r3337739 - r3337729;
        double r3337741 = r3337737 + r3337740;
        double r3337742 = 5.153563226205793e-35;
        bool r3337743 = r3337725 <= r3337742;
        double r3337744 = r3337728 * r3337725;
        double r3337745 = r3337744 * r3337725;
        double r3337746 = r3337745 + r3337725;
        double r3337747 = r3337728 * r3337728;
        double r3337748 = r3337725 * r3337747;
        double r3337749 = r3337746 + r3337748;
        double r3337750 = r3337738 * r3337738;
        double r3337751 = r3337738 + r3337750;
        double r3337752 = r3337732 + r3337751;
        double r3337753 = r3337750 * r3337738;
        double r3337754 = r3337732 - r3337753;
        double r3337755 = r3337731 / r3337754;
        double r3337756 = r3337752 * r3337755;
        double r3337757 = r3337756 - r3337729;
        double r3337758 = r3337743 ? r3337749 : r3337757;
        double r3337759 = r3337727 ? r3337741 : r3337758;
        return r3337759;
}

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original37.3
Target14.9
Herbie15.5
\[\frac{\sin \varepsilon}{\cos x \cdot \cos \left(x + \varepsilon\right)}\]

Derivation

  1. Split input into 3 regimes
  2. if eps < -8.912746710277703e-18

    1. Initial program 29.8

      \[\tan \left(x + \varepsilon\right) - \tan x\]
    2. Using strategy rm
    3. Applied tan-sum0.8

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x\]
    4. Using strategy rm
    5. Applied flip--0.9

      \[\leadsto \frac{\tan x + \tan \varepsilon}{\color{blue}{\frac{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}{1 + \tan x \cdot \tan \varepsilon}}} - \tan x\]
    6. Applied associate-/r/0.8

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right)} - \tan x\]
    7. Using strategy rm
    8. Applied swap-sqr0.9

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \color{blue}{\left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x\]
    9. Using strategy rm
    10. Applied distribute-rgt-in0.8

      \[\leadsto \color{blue}{\left(1 \cdot \frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} + \left(\tan x \cdot \tan \varepsilon\right) \cdot \frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)}\right)} - \tan x\]
    11. Applied associate--l+0.9

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

    if -8.912746710277703e-18 < eps < 5.153563226205793e-35

    1. Initial program 45.6

      \[\tan \left(x + \varepsilon\right) - \tan x\]
    2. Using strategy rm
    3. Applied tan-sum45.6

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x\]
    4. Using strategy rm
    5. Applied flip--45.6

      \[\leadsto \frac{\tan x + \tan \varepsilon}{\color{blue}{\frac{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}{1 + \tan x \cdot \tan \varepsilon}}} - \tan x\]
    6. Applied associate-/r/45.6

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right)} - \tan x\]
    7. Using strategy rm
    8. Applied swap-sqr45.6

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \color{blue}{\left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x\]
    9. Taylor expanded around 0 30.8

      \[\leadsto \color{blue}{x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)}\]
    10. Simplified30.8

      \[\leadsto \color{blue}{\left(\varepsilon \cdot \left(\varepsilon \cdot x\right) + \varepsilon\right) + \left(x \cdot x\right) \cdot \varepsilon}\]

    if 5.153563226205793e-35 < eps

    1. Initial program 30.2

      \[\tan \left(x + \varepsilon\right) - \tan x\]
    2. Using strategy rm
    3. Applied tan-sum3.0

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x\]
    4. Using strategy rm
    5. Applied flip3--3.0

      \[\leadsto \frac{\tan x + \tan \varepsilon}{\color{blue}{\frac{{1}^{3} - {\left(\tan x \cdot \tan \varepsilon\right)}^{3}}{1 \cdot 1 + \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right) + 1 \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)}}} - \tan x\]
    6. Applied associate-/r/3.0

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{{1}^{3} - {\left(\tan x \cdot \tan \varepsilon\right)}^{3}} \cdot \left(1 \cdot 1 + \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right) + 1 \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)\right)} - \tan x\]
    7. Simplified3.0

      \[\leadsto \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \left(\left(\tan \varepsilon \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan x\right)\right) \cdot \left(\tan \varepsilon \cdot \tan x\right)}} \cdot \left(1 \cdot 1 + \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right) + 1 \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)\right) - \tan x\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -8.912746710277703 \cdot 10^{-18}:\\ \;\;\;\;\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} + \left(\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\tan \varepsilon \cdot \tan \varepsilon\right)} \cdot \left(\tan x \cdot \tan \varepsilon\right) - \tan x\right)\\ \mathbf{elif}\;\varepsilon \le 5.153563226205793 \cdot 10^{-35}:\\ \;\;\;\;\left(\left(x \cdot \varepsilon\right) \cdot \varepsilon + \varepsilon\right) + \varepsilon \cdot \left(x \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\left(1 + \left(\tan x \cdot \tan \varepsilon + \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)\right) \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} - \tan x\\ \end{array}\]

Reproduce

herbie shell --seed 2019142 
(FPCore (x eps)
  :name "2tan (problem 3.3.2)"

  :herbie-target
  (/ (sin eps) (* (cos x) (cos (+ x eps))))

  (- (tan (+ x eps)) (tan x)))