\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -5.433898367772061 \cdot 10^{-33}:\\
\;\;\;\;\left(\left(b \cdot c + \left(18.0 \cdot \left(t \cdot \left(\left(z \cdot y\right) \cdot x\right)\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - 27.0 \cdot \left(j \cdot k\right)\\
\mathbf{elif}\;t \le 8.769336708467037 \cdot 10^{+80}:\\
\;\;\;\;\left(\left(b \cdot c + \left(\left(\left(z \cdot \left(x \cdot t\right)\right) \cdot y\right) \cdot 18.0 - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(27.0 \cdot j\right) \cdot k\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b \cdot c + \left(18.0 \cdot \left(t \cdot \left(\left(z \cdot y\right) \cdot x\right)\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - j \cdot \left(27.0 \cdot k\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 r40056277 = x;
double r40056278 = 18.0;
double r40056279 = r40056277 * r40056278;
double r40056280 = y;
double r40056281 = r40056279 * r40056280;
double r40056282 = z;
double r40056283 = r40056281 * r40056282;
double r40056284 = t;
double r40056285 = r40056283 * r40056284;
double r40056286 = a;
double r40056287 = 4.0;
double r40056288 = r40056286 * r40056287;
double r40056289 = r40056288 * r40056284;
double r40056290 = r40056285 - r40056289;
double r40056291 = b;
double r40056292 = c;
double r40056293 = r40056291 * r40056292;
double r40056294 = r40056290 + r40056293;
double r40056295 = r40056277 * r40056287;
double r40056296 = i;
double r40056297 = r40056295 * r40056296;
double r40056298 = r40056294 - r40056297;
double r40056299 = j;
double r40056300 = 27.0;
double r40056301 = r40056299 * r40056300;
double r40056302 = k;
double r40056303 = r40056301 * r40056302;
double r40056304 = r40056298 - r40056303;
return r40056304;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r40056305 = t;
double r40056306 = -5.433898367772061e-33;
bool r40056307 = r40056305 <= r40056306;
double r40056308 = b;
double r40056309 = c;
double r40056310 = r40056308 * r40056309;
double r40056311 = 18.0;
double r40056312 = z;
double r40056313 = y;
double r40056314 = r40056312 * r40056313;
double r40056315 = x;
double r40056316 = r40056314 * r40056315;
double r40056317 = r40056305 * r40056316;
double r40056318 = r40056311 * r40056317;
double r40056319 = a;
double r40056320 = 4.0;
double r40056321 = r40056319 * r40056320;
double r40056322 = r40056321 * r40056305;
double r40056323 = r40056318 - r40056322;
double r40056324 = r40056310 + r40056323;
double r40056325 = r40056315 * r40056320;
double r40056326 = i;
double r40056327 = r40056325 * r40056326;
double r40056328 = r40056324 - r40056327;
double r40056329 = 27.0;
double r40056330 = j;
double r40056331 = k;
double r40056332 = r40056330 * r40056331;
double r40056333 = r40056329 * r40056332;
double r40056334 = r40056328 - r40056333;
double r40056335 = 8.769336708467037e+80;
bool r40056336 = r40056305 <= r40056335;
double r40056337 = r40056315 * r40056305;
double r40056338 = r40056312 * r40056337;
double r40056339 = r40056338 * r40056313;
double r40056340 = r40056339 * r40056311;
double r40056341 = r40056340 - r40056322;
double r40056342 = r40056310 + r40056341;
double r40056343 = r40056342 - r40056327;
double r40056344 = r40056329 * r40056330;
double r40056345 = r40056344 * r40056331;
double r40056346 = r40056343 - r40056345;
double r40056347 = r40056329 * r40056331;
double r40056348 = r40056330 * r40056347;
double r40056349 = r40056328 - r40056348;
double r40056350 = r40056336 ? r40056346 : r40056349;
double r40056351 = r40056307 ? r40056334 : r40056350;
return r40056351;
}




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.8 |
|---|---|
| Target | 1.7 |
| Herbie | 2.0 |
if t < -5.433898367772061e-33Initial program 2.3
Taylor expanded around inf 2.5
Taylor expanded around 0 2.4
if -5.433898367772061e-33 < t < 8.769336708467037e+80Initial program 7.6
Taylor expanded around inf 8.5
rmApplied associate-*r*5.9
rmApplied associate-*r*2.0
if 8.769336708467037e+80 < t Initial program 1.9
Taylor expanded around inf 1.3
rmApplied associate-*l*1.5
Final simplification2.0
herbie shell --seed 2019162
(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)))