\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;\left(\left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(x \cdot 4\right) \cdot i \le -3.562733702540698501769975042751072620323 \cdot 10^{286} \lor \neg \left(\left(\left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(x \cdot 4\right) \cdot i \le 8.107231729667045342202036618227366964577 \cdot 10^{306}\right):\\
\;\;\;\;\left(\left(\left(\left(y \cdot \left(t \cdot z\right)\right) \cdot \left(x \cdot 18\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(x \cdot 4\right) \cdot i\right) - \left(27 \cdot j\right) \cdot k\\
\mathbf{else}:\\
\;\;\;\;\left(\left(c \cdot b + \left(\left(z \cdot \left(\left(y \cdot x\right) \cdot 18\right)\right) \cdot t - \left(a \cdot 4\right) \cdot t\right)\right) - \left(x \cdot 4\right) \cdot i\right) - \left(\sqrt[3]{\left(27 \cdot k\right) \cdot j} \cdot \sqrt[3]{\left(27 \cdot k\right) \cdot j}\right) \cdot \left(\sqrt[3]{27 \cdot k} \cdot \sqrt[3]{j}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r866228 = x;
double r866229 = 18.0;
double r866230 = r866228 * r866229;
double r866231 = y;
double r866232 = r866230 * r866231;
double r866233 = z;
double r866234 = r866232 * r866233;
double r866235 = t;
double r866236 = r866234 * r866235;
double r866237 = a;
double r866238 = 4.0;
double r866239 = r866237 * r866238;
double r866240 = r866239 * r866235;
double r866241 = r866236 - r866240;
double r866242 = b;
double r866243 = c;
double r866244 = r866242 * r866243;
double r866245 = r866241 + r866244;
double r866246 = r866228 * r866238;
double r866247 = i;
double r866248 = r866246 * r866247;
double r866249 = r866245 - r866248;
double r866250 = j;
double r866251 = 27.0;
double r866252 = r866250 * r866251;
double r866253 = k;
double r866254 = r866252 * r866253;
double r866255 = r866249 - r866254;
return r866255;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r866256 = t;
double r866257 = x;
double r866258 = 18.0;
double r866259 = r866257 * r866258;
double r866260 = y;
double r866261 = r866259 * r866260;
double r866262 = z;
double r866263 = r866261 * r866262;
double r866264 = r866256 * r866263;
double r866265 = a;
double r866266 = 4.0;
double r866267 = r866265 * r866266;
double r866268 = r866267 * r866256;
double r866269 = r866264 - r866268;
double r866270 = c;
double r866271 = b;
double r866272 = r866270 * r866271;
double r866273 = r866269 + r866272;
double r866274 = r866257 * r866266;
double r866275 = i;
double r866276 = r866274 * r866275;
double r866277 = r866273 - r866276;
double r866278 = -3.5627337025406985e+286;
bool r866279 = r866277 <= r866278;
double r866280 = 8.107231729667045e+306;
bool r866281 = r866277 <= r866280;
double r866282 = !r866281;
bool r866283 = r866279 || r866282;
double r866284 = r866256 * r866262;
double r866285 = r866260 * r866284;
double r866286 = r866285 * r866259;
double r866287 = r866286 - r866268;
double r866288 = r866287 + r866272;
double r866289 = r866288 - r866276;
double r866290 = 27.0;
double r866291 = j;
double r866292 = r866290 * r866291;
double r866293 = k;
double r866294 = r866292 * r866293;
double r866295 = r866289 - r866294;
double r866296 = r866260 * r866257;
double r866297 = r866296 * r866258;
double r866298 = r866262 * r866297;
double r866299 = r866298 * r866256;
double r866300 = r866299 - r866268;
double r866301 = r866272 + r866300;
double r866302 = r866301 - r866276;
double r866303 = r866290 * r866293;
double r866304 = r866303 * r866291;
double r866305 = cbrt(r866304);
double r866306 = r866305 * r866305;
double r866307 = cbrt(r866303);
double r866308 = cbrt(r866291);
double r866309 = r866307 * r866308;
double r866310 = r866306 * r866309;
double r866311 = r866302 - r866310;
double r866312 = r866283 ? r866295 : r866311;
return r866312;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j




Bits error versus k
Results
| Original | 5.9 |
|---|---|
| Target | 1.6 |
| Herbie | 1.5 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -3.5627337025406985e+286 or 8.107231729667045e+306 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 47.1
rmApplied pow147.1
Applied pow147.1
Applied pow147.1
Applied pow147.1
Applied pow147.1
Applied pow-prod-down47.1
Applied pow-prod-down47.1
Applied pow-prod-down47.1
Applied pow-prod-down47.1
Simplified7.7
if -3.5627337025406985e+286 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 8.107231729667045e+306Initial program 0.4
rmApplied add-cube-cbrt0.6
Simplified0.7
Simplified0.7
rmApplied cbrt-prod0.6
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied associate-*r*0.6
Simplified0.6
Final simplification1.5
herbie shell --seed 2019174
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))
(- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))