\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:\\
\;\;\;\;-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}{z \cdot c} \le -2.049750915246272776707763168040883621167 \cdot 10^{-94}:\\
\;\;\;\;\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 9418504667764352876544:\\
\;\;\;\;\frac{\frac{1}{\frac{z}{\mathsf{fma}\left(x \cdot y, 9, b\right)}} - \left(a \cdot 4\right) \cdot t}{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 1.262932583339488317194724427101820494475 \cdot 10^{299}:\\
\;\;\;\;\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}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{\mathsf{fma}\left(x \cdot y, 9, b\right)}{z} - a \cdot \left(4 \cdot t\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r413290 = x;
double r413291 = 9.0;
double r413292 = r413290 * r413291;
double r413293 = y;
double r413294 = r413292 * r413293;
double r413295 = z;
double r413296 = 4.0;
double r413297 = r413295 * r413296;
double r413298 = t;
double r413299 = r413297 * r413298;
double r413300 = a;
double r413301 = r413299 * r413300;
double r413302 = r413294 - r413301;
double r413303 = b;
double r413304 = r413302 + r413303;
double r413305 = c;
double r413306 = r413295 * r413305;
double r413307 = r413304 / r413306;
return r413307;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r413308 = x;
double r413309 = 9.0;
double r413310 = r413308 * r413309;
double r413311 = y;
double r413312 = r413310 * r413311;
double r413313 = z;
double r413314 = 4.0;
double r413315 = r413313 * r413314;
double r413316 = t;
double r413317 = r413315 * r413316;
double r413318 = a;
double r413319 = r413317 * r413318;
double r413320 = r413312 - r413319;
double r413321 = b;
double r413322 = r413320 + r413321;
double r413323 = c;
double r413324 = r413313 * r413323;
double r413325 = r413322 / r413324;
double r413326 = -inf.0;
bool r413327 = r413325 <= r413326;
double r413328 = -4.0;
double r413329 = r413316 * r413318;
double r413330 = r413329 / r413323;
double r413331 = r413328 * r413330;
double r413332 = -2.0497509152462728e-94;
bool r413333 = r413325 <= r413332;
double r413334 = 9.418504667764353e+21;
bool r413335 = r413325 <= r413334;
double r413336 = 1.0;
double r413337 = r413308 * r413311;
double r413338 = fma(r413337, r413309, r413321);
double r413339 = r413313 / r413338;
double r413340 = r413336 / r413339;
double r413341 = r413318 * r413314;
double r413342 = r413341 * r413316;
double r413343 = r413340 - r413342;
double r413344 = r413343 / r413323;
double r413345 = 1.2629325833394883e+299;
bool r413346 = r413325 <= r413345;
double r413347 = r413338 / r413313;
double r413348 = r413314 * r413316;
double r413349 = r413318 * r413348;
double r413350 = r413347 - r413349;
double r413351 = r413323 / r413350;
double r413352 = r413336 / r413351;
double r413353 = r413346 ? r413325 : r413352;
double r413354 = r413335 ? r413344 : r413353;
double r413355 = r413333 ? r413325 : r413354;
double r413356 = r413327 ? r413331 : r413355;
return r413356;
}




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.7 |
|---|---|
| Target | 14.7 |
| Herbie | 8.4 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -inf.0Initial program 64.0
Simplified24.8
rmApplied *-un-lft-identity24.8
Applied *-un-lft-identity24.8
Applied times-frac24.8
Simplified24.8
Simplified24.8
rmApplied clear-num24.9
Taylor expanded around inf 33.1
if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.0497509152462728e-94 or 9.418504667764353e+21 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.2629325833394883e+299Initial program 0.6
if -2.0497509152462728e-94 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 9.418504667764353e+21Initial program 15.2
Simplified1.2
rmApplied *-un-lft-identity1.2
Applied *-un-lft-identity1.2
Applied times-frac1.2
Simplified1.2
Simplified1.2
rmApplied clear-num1.3
if 1.2629325833394883e+299 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 61.7
Simplified28.3
rmApplied *-un-lft-identity28.3
Applied *-un-lft-identity28.3
Applied times-frac28.3
Simplified28.3
Simplified28.1
rmApplied clear-num28.1
rmApplied clear-num28.2
Simplified28.2
Final simplification8.4
herbie shell --seed 2019326 +o rules:numerics
(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.100156740804105e-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)))