Average Error: 13.2 → 0.2
Time: 1.8m
Precision: 64
\[\left(x = 0 \lor 0.5884142 \le x \le 505.5909\right) \land \left(-1.796658 \cdot 10^{+308} \le y \le -9.425585 \cdot 10^{-310} \lor 1.284938 \cdot 10^{-309} \le y \le 1.751224 \cdot 10^{+308}\right) \land \left(-1.776707 \cdot 10^{+308} \le z \le -8.599796 \cdot 10^{-310} \lor 3.293145 \cdot 10^{-311} \le z \le 1.725154 \cdot 10^{+308}\right) \land \left(-1.796658 \cdot 10^{+308} \le a \le -9.425585 \cdot 10^{-310} \lor 1.284938 \cdot 10^{-309} \le a \le 1.751224 \cdot 10^{+308}\right)\]
\[x + \left(\tan \left(y + z\right) - \tan a\right)\]
\[0 \cdot \tan a + \left((\left(\frac{\tan y + \tan z}{1 - \sqrt[3]{{\left(\tan z \cdot \tan y\right)}^{3} \cdot \left({\left(\tan z \cdot \tan y\right)}^{3} \cdot {\left(\tan z \cdot \tan y\right)}^{3}\right)}}\right) \cdot \left(\left(\left(\tan z \cdot \tan y\right) \cdot \left(\tan z \cdot \tan y\right) + \tan z \cdot \tan y\right) + 1\right) + \left(-\tan a\right))_* + x\right)\]
x + \left(\tan \left(y + z\right) - \tan a\right)
0 \cdot \tan a + \left((\left(\frac{\tan y + \tan z}{1 - \sqrt[3]{{\left(\tan z \cdot \tan y\right)}^{3} \cdot \left({\left(\tan z \cdot \tan y\right)}^{3} \cdot {\left(\tan z \cdot \tan y\right)}^{3}\right)}}\right) \cdot \left(\left(\left(\tan z \cdot \tan y\right) \cdot \left(\tan z \cdot \tan y\right) + \tan z \cdot \tan y\right) + 1\right) + \left(-\tan a\right))_* + x\right)
double f(double x, double y, double z, double a) {
        double r27025234 = x;
        double r27025235 = y;
        double r27025236 = z;
        double r27025237 = r27025235 + r27025236;
        double r27025238 = tan(r27025237);
        double r27025239 = a;
        double r27025240 = tan(r27025239);
        double r27025241 = r27025238 - r27025240;
        double r27025242 = r27025234 + r27025241;
        return r27025242;
}

double f(double x, double y, double z, double a) {
        double r27025243 = 0.0;
        double r27025244 = a;
        double r27025245 = tan(r27025244);
        double r27025246 = r27025243 * r27025245;
        double r27025247 = y;
        double r27025248 = tan(r27025247);
        double r27025249 = z;
        double r27025250 = tan(r27025249);
        double r27025251 = r27025248 + r27025250;
        double r27025252 = 1.0;
        double r27025253 = r27025250 * r27025248;
        double r27025254 = 3.0;
        double r27025255 = pow(r27025253, r27025254);
        double r27025256 = r27025255 * r27025255;
        double r27025257 = r27025255 * r27025256;
        double r27025258 = cbrt(r27025257);
        double r27025259 = r27025252 - r27025258;
        double r27025260 = r27025251 / r27025259;
        double r27025261 = r27025253 * r27025253;
        double r27025262 = r27025261 + r27025253;
        double r27025263 = r27025262 + r27025252;
        double r27025264 = -r27025245;
        double r27025265 = fma(r27025260, r27025263, r27025264);
        double r27025266 = x;
        double r27025267 = r27025265 + r27025266;
        double r27025268 = r27025246 + r27025267;
        return r27025268;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus a

Derivation

  1. Initial program 13.2

    \[x + \left(\tan \left(y + z\right) - \tan a\right)\]
  2. Using strategy rm
  3. Applied tan-sum0.2

    \[\leadsto x + \left(\color{blue}{\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z}} - \tan a\right)\]
  4. Using strategy rm
  5. Applied *-un-lft-identity0.2

    \[\leadsto x + \left(\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z} - \color{blue}{1 \cdot \tan a}\right)\]
  6. Applied flip3--0.2

    \[\leadsto x + \left(\frac{\tan y + \tan z}{\color{blue}{\frac{{1}^{3} - {\left(\tan y \cdot \tan z\right)}^{3}}{1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)}}} - 1 \cdot \tan a\right)\]
  7. Applied associate-/r/0.2

    \[\leadsto x + \left(\color{blue}{\frac{\tan y + \tan z}{{1}^{3} - {\left(\tan y \cdot \tan z\right)}^{3}} \cdot \left(1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)\right)} - 1 \cdot \tan a\right)\]
  8. Applied prod-diff0.2

    \[\leadsto x + \color{blue}{\left((\left(\frac{\tan y + \tan z}{{1}^{3} - {\left(\tan y \cdot \tan z\right)}^{3}}\right) \cdot \left(1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)\right) + \left(-\tan a \cdot 1\right))_* + (\left(-\tan a\right) \cdot 1 + \left(\tan a \cdot 1\right))_*\right)}\]
  9. Applied associate-+r+0.2

    \[\leadsto \color{blue}{\left(x + (\left(\frac{\tan y + \tan z}{{1}^{3} - {\left(\tan y \cdot \tan z\right)}^{3}}\right) \cdot \left(1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)\right) + \left(-\tan a \cdot 1\right))_*\right) + (\left(-\tan a\right) \cdot 1 + \left(\tan a \cdot 1\right))_*}\]
  10. Simplified0.2

    \[\leadsto \left(x + (\left(\frac{\tan y + \tan z}{{1}^{3} - {\left(\tan y \cdot \tan z\right)}^{3}}\right) \cdot \left(1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)\right) + \left(-\tan a \cdot 1\right))_*\right) + \color{blue}{\tan a \cdot 0}\]
  11. Using strategy rm
  12. Applied add-cbrt-cube0.2

    \[\leadsto \left(x + (\left(\frac{\tan y + \tan z}{{1}^{3} - \color{blue}{\sqrt[3]{\left({\left(\tan y \cdot \tan z\right)}^{3} \cdot {\left(\tan y \cdot \tan z\right)}^{3}\right) \cdot {\left(\tan y \cdot \tan z\right)}^{3}}}}\right) \cdot \left(1 \cdot 1 + \left(\left(\tan y \cdot \tan z\right) \cdot \left(\tan y \cdot \tan z\right) + 1 \cdot \left(\tan y \cdot \tan z\right)\right)\right) + \left(-\tan a \cdot 1\right))_*\right) + \tan a \cdot 0\]
  13. Final simplification0.2

    \[\leadsto 0 \cdot \tan a + \left((\left(\frac{\tan y + \tan z}{1 - \sqrt[3]{{\left(\tan z \cdot \tan y\right)}^{3} \cdot \left({\left(\tan z \cdot \tan y\right)}^{3} \cdot {\left(\tan z \cdot \tan y\right)}^{3}\right)}}\right) \cdot \left(\left(\left(\tan z \cdot \tan y\right) \cdot \left(\tan z \cdot \tan y\right) + \tan z \cdot \tan y\right) + 1\right) + \left(-\tan a\right))_* + x\right)\]

Reproduce

herbie shell --seed 2019119 +o rules:numerics
(FPCore (x y z a)
  :name "(+ x (- (tan (+ y z)) (tan a)))"
  :pre (and (or (== x 0) (<= 0.5884142 x 505.5909)) (or (<= -1.796658e+308 y -9.425585e-310) (<= 1.284938e-309 y 1.751224e+308)) (or (<= -1.776707e+308 z -8.599796e-310) (<= 3.293145e-311 z 1.725154e+308)) (or (<= -1.796658e+308 a -9.425585e-310) (<= 1.284938e-309 a 1.751224e+308)))
  (+ x (- (tan (+ y z)) (tan a))))