Average Error: 37.6 → 15.6
Time: 11.6s
Precision: 64
\[\tan \left(x + \varepsilon\right) - \tan x\]
\[\begin{array}{l} \mathbf{if}\;\varepsilon \le -1.90524906925258064 \cdot 10^{-75}:\\ \;\;\;\;\left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \log \left(e^{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}\right)} - \tan x\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\ \mathbf{elif}\;\varepsilon \le 1.8371289099221047 \cdot 10^{-44}:\\ \;\;\;\;\mathsf{fma}\left({\varepsilon}^{2}, x, \mathsf{fma}\left(\varepsilon, {x}^{2}, \varepsilon\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\sin x, \cos \varepsilon, \cos x \cdot \sin \varepsilon\right), \cos x, -\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \sin x\right)}{\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \cos x} + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\ \end{array}\]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
\mathbf{if}\;\varepsilon \le -1.90524906925258064 \cdot 10^{-75}:\\
\;\;\;\;\left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \log \left(e^{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}\right)} - \tan x\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\

\mathbf{elif}\;\varepsilon \le 1.8371289099221047 \cdot 10^{-44}:\\
\;\;\;\;\mathsf{fma}\left({\varepsilon}^{2}, x, \mathsf{fma}\left(\varepsilon, {x}^{2}, \varepsilon\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\sin x, \cos \varepsilon, \cos x \cdot \sin \varepsilon\right), \cos x, -\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \sin x\right)}{\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \cos x} + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\

\end{array}
double f(double x, double eps) {
        double r166221 = x;
        double r166222 = eps;
        double r166223 = r166221 + r166222;
        double r166224 = tan(r166223);
        double r166225 = tan(r166221);
        double r166226 = r166224 - r166225;
        return r166226;
}

double f(double x, double eps) {
        double r166227 = eps;
        double r166228 = -1.9052490692525806e-75;
        bool r166229 = r166227 <= r166228;
        double r166230 = x;
        double r166231 = tan(r166230);
        double r166232 = tan(r166227);
        double r166233 = r166231 + r166232;
        double r166234 = 1.0;
        double r166235 = sin(r166230);
        double r166236 = r166235 * r166232;
        double r166237 = cos(r166230);
        double r166238 = r166236 / r166237;
        double r166239 = exp(r166238);
        double r166240 = log(r166239);
        double r166241 = r166234 - r166240;
        double r166242 = r166234 / r166241;
        double r166243 = r166233 * r166242;
        double r166244 = r166243 - r166231;
        double r166245 = -r166231;
        double r166246 = fma(r166245, r166234, r166231);
        double r166247 = r166244 + r166246;
        double r166248 = 1.8371289099221047e-44;
        bool r166249 = r166227 <= r166248;
        double r166250 = 2.0;
        double r166251 = pow(r166227, r166250);
        double r166252 = pow(r166230, r166250);
        double r166253 = fma(r166227, r166252, r166227);
        double r166254 = fma(r166251, r166230, r166253);
        double r166255 = cos(r166227);
        double r166256 = sin(r166227);
        double r166257 = r166237 * r166256;
        double r166258 = fma(r166235, r166255, r166257);
        double r166259 = r166237 * r166255;
        double r166260 = r166234 - r166238;
        double r166261 = r166259 * r166260;
        double r166262 = r166261 * r166235;
        double r166263 = -r166262;
        double r166264 = fma(r166258, r166237, r166263);
        double r166265 = r166261 * r166237;
        double r166266 = r166264 / r166265;
        double r166267 = r166266 + r166246;
        double r166268 = r166249 ? r166254 : r166267;
        double r166269 = r166229 ? r166247 : r166268;
        return r166269;
}

Error

Bits error versus x

Bits error versus eps

Target

Original37.6
Target15.4
Herbie15.6
\[\frac{\sin \varepsilon}{\cos x \cdot \cos \left(x + \varepsilon\right)}\]

Derivation

  1. Split input into 3 regimes
  2. if eps < -1.9052490692525806e-75

    1. Initial program 30.2

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

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

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

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}} - \tan x\]
    7. Using strategy rm
    8. Applied add-cube-cbrt6.3

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \color{blue}{\left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right) \cdot \sqrt[3]{\tan x}}\]
    9. Applied div-inv6.3

      \[\leadsto \color{blue}{\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}}} - \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right) \cdot \sqrt[3]{\tan x}\]
    10. Applied prod-diff6.3

      \[\leadsto \color{blue}{\mathsf{fma}\left(\tan x + \tan \varepsilon, \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}}, -\sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right)}\]
    11. Simplified6.0

      \[\leadsto \color{blue}{\left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \tan x\right)} + \mathsf{fma}\left(-\sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right)\]
    12. Simplified6.1

      \[\leadsto \left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \tan x\right) + \color{blue}{\mathsf{fma}\left(-\tan x, 1, \tan x\right)}\]
    13. Using strategy rm
    14. Applied add-log-exp6.2

      \[\leadsto \left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \color{blue}{\log \left(e^{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}\right)}} - \tan x\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]

    if -1.9052490692525806e-75 < eps < 1.8371289099221047e-44

    1. Initial program 47.3

      \[\tan \left(x + \varepsilon\right) - \tan x\]
    2. Taylor expanded around 0 31.3

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

      \[\leadsto \color{blue}{\mathsf{fma}\left({\varepsilon}^{2}, x, \mathsf{fma}\left(\varepsilon, {x}^{2}, \varepsilon\right)\right)}\]

    if 1.8371289099221047e-44 < eps

    1. Initial program 31.4

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

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

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

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}} - \tan x\]
    7. Using strategy rm
    8. Applied add-cube-cbrt3.0

      \[\leadsto \frac{\tan x + \tan \varepsilon}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \color{blue}{\left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right) \cdot \sqrt[3]{\tan x}}\]
    9. Applied div-inv3.0

      \[\leadsto \color{blue}{\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}}} - \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right) \cdot \sqrt[3]{\tan x}\]
    10. Applied prod-diff3.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\tan x + \tan \varepsilon, \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}}, -\sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right) + \mathsf{fma}\left(-\sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right)}\]
    11. Simplified2.6

      \[\leadsto \color{blue}{\left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \tan x\right)} + \mathsf{fma}\left(-\sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}, \sqrt[3]{\tan x} \cdot \left(\sqrt[3]{\tan x} \cdot \sqrt[3]{\tan x}\right)\right)\]
    12. Simplified2.7

      \[\leadsto \left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \tan x\right) + \color{blue}{\mathsf{fma}\left(-\tan x, 1, \tan x\right)}\]
    13. Using strategy rm
    14. Applied tan-quot2.7

      \[\leadsto \left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \color{blue}{\frac{\sin x}{\cos x}}\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    15. Applied tan-quot2.9

      \[\leadsto \left(\left(\tan x + \color{blue}{\frac{\sin \varepsilon}{\cos \varepsilon}}\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \frac{\sin x}{\cos x}\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    16. Applied tan-quot2.8

      \[\leadsto \left(\left(\color{blue}{\frac{\sin x}{\cos x}} + \frac{\sin \varepsilon}{\cos \varepsilon}\right) \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \frac{\sin x}{\cos x}\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    17. Applied frac-add2.9

      \[\leadsto \left(\color{blue}{\frac{\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon}{\cos x \cdot \cos \varepsilon}} \cdot \frac{1}{1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}} - \frac{\sin x}{\cos x}\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    18. Applied frac-times2.9

      \[\leadsto \left(\color{blue}{\frac{\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) \cdot 1}{\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)}} - \frac{\sin x}{\cos x}\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    19. Applied frac-sub2.9

      \[\leadsto \color{blue}{\frac{\left(\left(\sin x \cdot \cos \varepsilon + \cos x \cdot \sin \varepsilon\right) \cdot 1\right) \cdot \cos x - \left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \sin x}{\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \cos x}} + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\]
    20. Simplified2.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\varepsilon \le -1.90524906925258064 \cdot 10^{-75}:\\ \;\;\;\;\left(\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \log \left(e^{\frac{\sin x \cdot \tan \varepsilon}{\cos x}}\right)} - \tan x\right) + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\ \mathbf{elif}\;\varepsilon \le 1.8371289099221047 \cdot 10^{-44}:\\ \;\;\;\;\mathsf{fma}\left({\varepsilon}^{2}, x, \mathsf{fma}\left(\varepsilon, {x}^{2}, \varepsilon\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\sin x, \cos \varepsilon, \cos x \cdot \sin \varepsilon\right), \cos x, -\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \sin x\right)}{\left(\left(\cos x \cdot \cos \varepsilon\right) \cdot \left(1 - \frac{\sin x \cdot \tan \varepsilon}{\cos x}\right)\right) \cdot \cos x} + \mathsf{fma}\left(-\tan x, 1, \tan x\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020036 +o rules:numerics
(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)))