\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} = -\infty:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{z \cdot \frac{c}{y}}\right) - 4 \cdot \frac{a}{\frac{c}{t}}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -3.86575567753969965 \cdot 10^{-184}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le -0.0:\\
\;\;\;\;\left(\frac{b + \left(x \cdot 9\right) \cdot y}{z} - 4 \cdot \left(t \cdot a\right)\right) \cdot \frac{1}{c}\\
\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \le 2.5630952637815053 \cdot 10^{303}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + \left(9 \cdot \frac{x}{z}\right) \cdot \frac{y}{c}\right) - 4 \cdot \left(\frac{a}{c} \cdot t\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r1347286 = x;
double r1347287 = 9.0;
double r1347288 = r1347286 * r1347287;
double r1347289 = y;
double r1347290 = r1347288 * r1347289;
double r1347291 = z;
double r1347292 = 4.0;
double r1347293 = r1347291 * r1347292;
double r1347294 = t;
double r1347295 = r1347293 * r1347294;
double r1347296 = a;
double r1347297 = r1347295 * r1347296;
double r1347298 = r1347290 - r1347297;
double r1347299 = b;
double r1347300 = r1347298 + r1347299;
double r1347301 = c;
double r1347302 = r1347291 * r1347301;
double r1347303 = r1347300 / r1347302;
return r1347303;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r1347304 = x;
double r1347305 = 9.0;
double r1347306 = r1347304 * r1347305;
double r1347307 = y;
double r1347308 = r1347306 * r1347307;
double r1347309 = z;
double r1347310 = 4.0;
double r1347311 = r1347309 * r1347310;
double r1347312 = t;
double r1347313 = r1347311 * r1347312;
double r1347314 = a;
double r1347315 = r1347313 * r1347314;
double r1347316 = r1347308 - r1347315;
double r1347317 = b;
double r1347318 = r1347316 + r1347317;
double r1347319 = c;
double r1347320 = r1347309 * r1347319;
double r1347321 = r1347318 / r1347320;
double r1347322 = -inf.0;
bool r1347323 = r1347321 <= r1347322;
double r1347324 = r1347317 / r1347320;
double r1347325 = r1347319 / r1347307;
double r1347326 = r1347309 * r1347325;
double r1347327 = r1347304 / r1347326;
double r1347328 = r1347305 * r1347327;
double r1347329 = r1347324 + r1347328;
double r1347330 = r1347319 / r1347312;
double r1347331 = r1347314 / r1347330;
double r1347332 = r1347310 * r1347331;
double r1347333 = r1347329 - r1347332;
double r1347334 = -3.8657556775396997e-184;
bool r1347335 = r1347321 <= r1347334;
double r1347336 = -0.0;
bool r1347337 = r1347321 <= r1347336;
double r1347338 = r1347317 + r1347308;
double r1347339 = r1347338 / r1347309;
double r1347340 = r1347312 * r1347314;
double r1347341 = r1347310 * r1347340;
double r1347342 = r1347339 - r1347341;
double r1347343 = 1.0;
double r1347344 = r1347343 / r1347319;
double r1347345 = r1347342 * r1347344;
double r1347346 = 2.5630952637815053e+303;
bool r1347347 = r1347321 <= r1347346;
double r1347348 = r1347304 / r1347309;
double r1347349 = r1347305 * r1347348;
double r1347350 = r1347307 / r1347319;
double r1347351 = r1347349 * r1347350;
double r1347352 = r1347324 + r1347351;
double r1347353 = r1347314 / r1347319;
double r1347354 = r1347353 * r1347312;
double r1347355 = r1347310 * r1347354;
double r1347356 = r1347352 - r1347355;
double r1347357 = r1347347 ? r1347321 : r1347356;
double r1347358 = r1347337 ? r1347345 : r1347357;
double r1347359 = r1347335 ? r1347321 : r1347358;
double r1347360 = r1347323 ? r1347333 : r1347359;
return r1347360;
}




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
Results
| Original | 20.8 |
|---|---|
| Target | 14.9 |
| Herbie | 3.8 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0Initial program 64.0
Simplified26.0
Taylor expanded around 0 31.4
rmApplied associate-/l*29.6
rmApplied associate-/l*13.2
Simplified14.6
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -3.8657556775396997e-184 or -0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.5630952637815053e+303Initial program 0.7
if -3.8657556775396997e-184 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -0.0Initial program 33.9
Simplified0.6
rmApplied div-inv0.6
if 2.5630952637815053e+303 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 62.7
Simplified27.1
Taylor expanded around 0 30.4
rmApplied associate-/l*24.5
rmApplied associate-/r/25.9
rmApplied times-frac11.8
Applied associate-*r*11.8
Final simplification3.8
herbie shell --seed 2020047
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:herbie-target
(if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -1.1001567408041051e-171) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)))