Average Error: 37.3 → 15.6
Time: 10.8s
Precision: 64
\[\tan \left(x + \varepsilon\right) - \tan x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -3.284256269035985405500607176917200639033 \cdot 10^{-29} \lor \neg \left(\varepsilon \le 2.032772979059420834328953766570879460726 \cdot 10^{-23}\right):\\ \;\;\;\;\frac{\frac{\sin \varepsilon}{\cos \varepsilon} + \frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}} - \tan x\\ \mathbf{else}:\\ \;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\ \end{array}\]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -3.284256269035985405500607176917200639033 \cdot 10^{-29} \lor \neg \left(\varepsilon \le 2.032772979059420834328953766570879460726 \cdot 10^{-23}\right):\\
\;\;\;\;\frac{\frac{\sin \varepsilon}{\cos \varepsilon} + \frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}} - \tan x\\

\mathbf{else}:\\
\;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\

\end{array}
double f(double x, double eps) {
        double r131386 = x;
        double r131387 = eps;
        double r131388 = r131386 + r131387;
        double r131389 = tan(r131388);
        double r131390 = tan(r131386);
        double r131391 = r131389 - r131390;
        return r131391;
}

double f(double x, double eps) {
        double r131392 = eps;
        double r131393 = -3.2842562690359854e-29;
        bool r131394 = r131392 <= r131393;
        double r131395 = 2.0327729790594208e-23;
        bool r131396 = r131392 <= r131395;
        double r131397 = !r131396;
        bool r131398 = r131394 || r131397;
        double r131399 = sin(r131392);
        double r131400 = cos(r131392);
        double r131401 = r131399 / r131400;
        double r131402 = x;
        double r131403 = sin(r131402);
        double r131404 = cos(r131402);
        double r131405 = r131403 / r131404;
        double r131406 = r131401 + r131405;
        double r131407 = 1.0;
        double r131408 = r131403 * r131399;
        double r131409 = r131404 * r131400;
        double r131410 = r131408 / r131409;
        double r131411 = r131407 - r131410;
        double r131412 = r131406 / r131411;
        double r131413 = tan(r131402);
        double r131414 = r131412 - r131413;
        double r131415 = 2.0;
        double r131416 = pow(r131392, r131415);
        double r131417 = r131402 * r131416;
        double r131418 = pow(r131402, r131415);
        double r131419 = r131418 * r131392;
        double r131420 = r131392 + r131419;
        double r131421 = r131417 + r131420;
        double r131422 = r131398 ? r131414 : r131421;
        return r131422;
}

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
Target15.7
Herbie15.6
\[\frac{\sin \varepsilon}{\cos x \cdot \cos \left(x + \varepsilon\right)}\]

Derivation

  1. Split input into 2 regimes
  2. if eps < -3.2842562690359854e-29 or 2.0327729790594208e-23 < eps

    1. Initial program 30.5

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

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

      \[\leadsto \color{blue}{\frac{1}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon}}} - \tan x\]
    6. Taylor expanded around inf 1.9

      \[\leadsto \color{blue}{\frac{\frac{\sin \varepsilon}{\cos \varepsilon} + \frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}}} - \tan x\]

    if -3.2842562690359854e-29 < eps < 2.0327729790594208e-23

    1. Initial program 45.5

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

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

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \color{blue}{\frac{\sin \varepsilon}{\cos \varepsilon}}} - \tan x\]
    6. Applied associate-*r/45.5

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\frac{\tan x \cdot \sin \varepsilon}{\cos \varepsilon}}} - \tan x\]
    7. Taylor expanded around 0 32.2

      \[\leadsto \color{blue}{x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification15.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -3.284256269035985405500607176917200639033 \cdot 10^{-29} \lor \neg \left(\varepsilon \le 2.032772979059420834328953766570879460726 \cdot 10^{-23}\right):\\ \;\;\;\;\frac{\frac{\sin \varepsilon}{\cos \varepsilon} + \frac{\sin x}{\cos x}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}} - \tan x\\ \mathbf{else}:\\ \;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\ \end{array}\]

Reproduce

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

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

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