\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}{c \cdot z} \le -2.261854331447077498369269309258775740366 \cdot 10^{71}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{y \cdot x}{c \cdot z} \cdot 9\right) - 4 \cdot \frac{t \cdot a}{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}{c \cdot z} \le 0.0:\\
\;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\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}{c \cdot z} \le 1.09762604569508917121686233511500823776 \cdot 10^{287}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r26472342 = x;
double r26472343 = 9.0;
double r26472344 = r26472342 * r26472343;
double r26472345 = y;
double r26472346 = r26472344 * r26472345;
double r26472347 = z;
double r26472348 = 4.0;
double r26472349 = r26472347 * r26472348;
double r26472350 = t;
double r26472351 = r26472349 * r26472350;
double r26472352 = a;
double r26472353 = r26472351 * r26472352;
double r26472354 = r26472346 - r26472353;
double r26472355 = b;
double r26472356 = r26472354 + r26472355;
double r26472357 = c;
double r26472358 = r26472347 * r26472357;
double r26472359 = r26472356 / r26472358;
return r26472359;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r26472360 = x;
double r26472361 = 9.0;
double r26472362 = r26472360 * r26472361;
double r26472363 = y;
double r26472364 = r26472362 * r26472363;
double r26472365 = z;
double r26472366 = 4.0;
double r26472367 = r26472365 * r26472366;
double r26472368 = t;
double r26472369 = r26472367 * r26472368;
double r26472370 = a;
double r26472371 = r26472369 * r26472370;
double r26472372 = r26472364 - r26472371;
double r26472373 = b;
double r26472374 = r26472372 + r26472373;
double r26472375 = c;
double r26472376 = r26472375 * r26472365;
double r26472377 = r26472374 / r26472376;
double r26472378 = -2.2618543314470775e+71;
bool r26472379 = r26472377 <= r26472378;
double r26472380 = r26472373 / r26472376;
double r26472381 = r26472363 * r26472360;
double r26472382 = r26472381 / r26472376;
double r26472383 = r26472382 * r26472361;
double r26472384 = r26472380 + r26472383;
double r26472385 = r26472368 * r26472370;
double r26472386 = r26472385 / r26472375;
double r26472387 = r26472366 * r26472386;
double r26472388 = r26472384 - r26472387;
double r26472389 = 0.0;
bool r26472390 = r26472377 <= r26472389;
double r26472391 = r26472365 / r26472363;
double r26472392 = r26472360 / r26472391;
double r26472393 = r26472373 / r26472365;
double r26472394 = fma(r26472361, r26472392, r26472393);
double r26472395 = r26472370 * r26472366;
double r26472396 = r26472368 * r26472395;
double r26472397 = r26472394 - r26472396;
double r26472398 = 1.0;
double r26472399 = r26472398 / r26472375;
double r26472400 = r26472397 * r26472399;
double r26472401 = 1.0976260456950892e+287;
bool r26472402 = r26472377 <= r26472401;
double r26472403 = r26472402 ? r26472377 : r26472400;
double r26472404 = r26472390 ? r26472400 : r26472403;
double r26472405 = r26472379 ? r26472388 : r26472404;
return r26472405;
}




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
| Original | 20.2 |
|---|---|
| Target | 14.2 |
| Herbie | 7.0 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.2618543314470775e+71Initial program 18.9
Simplified17.6
Taylor expanded around 0 10.8
if -2.2618543314470775e+71 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 0.0 or 1.0976260456950892e+287 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 34.9
Simplified12.6
rmApplied div-inv12.6
Taylor expanded around 0 12.5
Simplified9.3
rmApplied clear-num9.6
rmApplied associate-/r/9.4
if 0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.0976260456950892e+287Initial program 0.6
Final simplification7.0
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:herbie-target
(if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))