\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(\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 = -\infty:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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\\
\mathbf{elif}\;\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 \le 1.433693085574820316107865306676310981183 \cdot 10^{307}:\\
\;\;\;\;\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) - j \cdot \left(27 \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\\
\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 r704246 = x;
double r704247 = 18.0;
double r704248 = r704246 * r704247;
double r704249 = y;
double r704250 = r704248 * r704249;
double r704251 = z;
double r704252 = r704250 * r704251;
double r704253 = t;
double r704254 = r704252 * r704253;
double r704255 = a;
double r704256 = 4.0;
double r704257 = r704255 * r704256;
double r704258 = r704257 * r704253;
double r704259 = r704254 - r704258;
double r704260 = b;
double r704261 = c;
double r704262 = r704260 * r704261;
double r704263 = r704259 + r704262;
double r704264 = r704246 * r704256;
double r704265 = i;
double r704266 = r704264 * r704265;
double r704267 = r704263 - r704266;
double r704268 = j;
double r704269 = 27.0;
double r704270 = r704268 * r704269;
double r704271 = k;
double r704272 = r704270 * r704271;
double r704273 = r704267 - r704272;
return r704273;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r704274 = x;
double r704275 = 18.0;
double r704276 = r704274 * r704275;
double r704277 = y;
double r704278 = r704276 * r704277;
double r704279 = z;
double r704280 = r704278 * r704279;
double r704281 = t;
double r704282 = r704280 * r704281;
double r704283 = a;
double r704284 = 4.0;
double r704285 = r704283 * r704284;
double r704286 = r704285 * r704281;
double r704287 = r704282 - r704286;
double r704288 = b;
double r704289 = c;
double r704290 = r704288 * r704289;
double r704291 = r704287 + r704290;
double r704292 = r704274 * r704284;
double r704293 = i;
double r704294 = r704292 * r704293;
double r704295 = r704291 - r704294;
double r704296 = -inf.0;
bool r704297 = r704295 <= r704296;
double r704298 = r704279 * r704281;
double r704299 = r704278 * r704298;
double r704300 = r704299 - r704286;
double r704301 = r704300 + r704290;
double r704302 = r704301 - r704294;
double r704303 = j;
double r704304 = 27.0;
double r704305 = r704303 * r704304;
double r704306 = k;
double r704307 = r704305 * r704306;
double r704308 = r704302 - r704307;
double r704309 = 1.4336930855748203e+307;
bool r704310 = r704295 <= r704309;
double r704311 = r704304 * r704306;
double r704312 = r704303 * r704311;
double r704313 = r704295 - r704312;
double r704314 = r704277 * r704279;
double r704315 = r704276 * r704314;
double r704316 = r704315 * r704281;
double r704317 = r704316 - r704286;
double r704318 = r704317 + r704290;
double r704319 = r704318 - r704294;
double r704320 = r704319 - r704307;
double r704321 = r704310 ? r704313 : r704320;
double r704322 = r704297 ? r704308 : r704321;
return r704322;
}




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.5 |
|---|---|
| Target | 1.5 |
| Herbie | 3.3 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0Initial program 64.0
rmApplied associate-*l*35.4
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 1.4336930855748203e+307Initial program 0.3
rmApplied associate-*l*0.3
if 1.4336930855748203e+307 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 62.1
rmApplied associate-*l*38.1
Final simplification3.3
herbie shell --seed 2019353
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))