Average Error: 37.1 → 16.0
Time: 12.1s
Precision: 64
\[\tan \left(x + \varepsilon\right) - \tan x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.522641810987648235580681026368571553727 \cdot 10^{-98}:\\ \;\;\;\;\frac{1 \cdot \cos x - \frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \sin x}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 6.436474923212402395515194209472351994748 \cdot 10^{-27}:\\ \;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{{\left(\tan x\right)}^{3} + {\left(\tan \varepsilon\right)}^{3}}{\tan \varepsilon \cdot \left(\tan \varepsilon - \tan x\right) + \tan x \cdot \tan x}}{1 - \tan x \cdot \tan \varepsilon} - \tan x\\ \end{array}\]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.522641810987648235580681026368571553727 \cdot 10^{-98}:\\
\;\;\;\;\frac{1 \cdot \cos x - \frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \sin x}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \cos x}\\

\mathbf{elif}\;\varepsilon \le 6.436474923212402395515194209472351994748 \cdot 10^{-27}:\\
\;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\

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

\end{array}
double f(double x, double eps) {
        double r94909 = x;
        double r94910 = eps;
        double r94911 = r94909 + r94910;
        double r94912 = tan(r94911);
        double r94913 = tan(r94909);
        double r94914 = r94912 - r94913;
        return r94914;
}

double f(double x, double eps) {
        double r94915 = eps;
        double r94916 = -1.5226418109876482e-98;
        bool r94917 = r94915 <= r94916;
        double r94918 = 1.0;
        double r94919 = x;
        double r94920 = cos(r94919);
        double r94921 = r94918 * r94920;
        double r94922 = tan(r94919);
        double r94923 = tan(r94915);
        double r94924 = r94922 * r94923;
        double r94925 = r94918 - r94924;
        double r94926 = r94922 + r94923;
        double r94927 = r94925 / r94926;
        double r94928 = sin(r94919);
        double r94929 = r94927 * r94928;
        double r94930 = r94921 - r94929;
        double r94931 = r94927 * r94920;
        double r94932 = r94930 / r94931;
        double r94933 = 6.4364749232124024e-27;
        bool r94934 = r94915 <= r94933;
        double r94935 = 2.0;
        double r94936 = pow(r94915, r94935);
        double r94937 = r94919 * r94936;
        double r94938 = pow(r94919, r94935);
        double r94939 = r94938 * r94915;
        double r94940 = r94915 + r94939;
        double r94941 = r94937 + r94940;
        double r94942 = 3.0;
        double r94943 = pow(r94922, r94942);
        double r94944 = pow(r94923, r94942);
        double r94945 = r94943 + r94944;
        double r94946 = r94923 - r94922;
        double r94947 = r94923 * r94946;
        double r94948 = r94922 * r94922;
        double r94949 = r94947 + r94948;
        double r94950 = r94945 / r94949;
        double r94951 = r94950 / r94925;
        double r94952 = r94951 - r94922;
        double r94953 = r94934 ? r94941 : r94952;
        double r94954 = r94917 ? r94932 : r94953;
        return r94954;
}

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.1
Target14.7
Herbie16.0
\[\frac{\sin \varepsilon}{\cos x \cdot \cos \left(x + \varepsilon\right)}\]

Derivation

  1. Split input into 3 regimes
  2. if eps < -1.5226418109876482e-98

    1. Initial program 30.9

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

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

      \[\leadsto \color{blue}{\frac{1}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon}}} - \tan x\]
    6. Using strategy rm
    7. Applied tan-quot8.0

      \[\leadsto \frac{1}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon}} - \color{blue}{\frac{\sin x}{\cos x}}\]
    8. Applied frac-sub8.0

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

    if -1.5226418109876482e-98 < eps < 6.4364749232124024e-27

    1. Initial program 47.1

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

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

      \[\leadsto \color{blue}{\left(\frac{\sin x}{\left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}\right) \cdot \cos x} + \frac{\sin \varepsilon}{\left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}\right) \cdot \cos \varepsilon}\right) - \frac{\sin x}{\cos x}}\]
    5. Taylor expanded around 0 31.3

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

    if 6.4364749232124024e-27 < eps

    1. Initial program 29.5

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

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

      \[\leadsto \frac{\color{blue}{\frac{{\left(\tan x\right)}^{3} + {\left(\tan \varepsilon\right)}^{3}}{\tan x \cdot \tan x + \left(\tan \varepsilon \cdot \tan \varepsilon - \tan x \cdot \tan \varepsilon\right)}}}{1 - \tan x \cdot \tan \varepsilon} - \tan x\]
    6. Simplified2.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.522641810987648235580681026368571553727 \cdot 10^{-98}:\\ \;\;\;\;\frac{1 \cdot \cos x - \frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \sin x}{\frac{1 - \tan x \cdot \tan \varepsilon}{\tan x + \tan \varepsilon} \cdot \cos x}\\ \mathbf{elif}\;\varepsilon \le 6.436474923212402395515194209472351994748 \cdot 10^{-27}:\\ \;\;\;\;x \cdot {\varepsilon}^{2} + \left(\varepsilon + {x}^{2} \cdot \varepsilon\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{{\left(\tan x\right)}^{3} + {\left(\tan \varepsilon\right)}^{3}}{\tan \varepsilon \cdot \left(\tan \varepsilon - \tan x\right) + \tan x \cdot \tan x}}{1 - \tan x \cdot \tan \varepsilon} - \tan x\\ \end{array}\]

Reproduce

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