\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 -4.310655787273717085626057165340673522926 \cdot 10^{307}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9\right) - 4 \cdot \frac{t}{\frac{c}{a}}\\
\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 -5.714617762619817600956632832341409108159 \cdot 10^{-177}:\\
\;\;\;\;\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{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 7.904503724641214606985000956936627235095 \cdot 10^{-44}:\\
\;\;\;\;\frac{1}{\frac{c}{\frac{\mathsf{fma}\left(x \cdot 9, y, b\right)}{z} - \left(a \cdot 4\right) \cdot 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}{c \cdot z} \le 6.624712766971525157760939835591736702834 \cdot 10^{252}:\\
\;\;\;\;\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(\left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9 + \frac{b}{c \cdot z}\right) - \frac{t \cdot a}{c} \cdot 4\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r31440221 = x;
double r31440222 = 9.0;
double r31440223 = r31440221 * r31440222;
double r31440224 = y;
double r31440225 = r31440223 * r31440224;
double r31440226 = z;
double r31440227 = 4.0;
double r31440228 = r31440226 * r31440227;
double r31440229 = t;
double r31440230 = r31440228 * r31440229;
double r31440231 = a;
double r31440232 = r31440230 * r31440231;
double r31440233 = r31440225 - r31440232;
double r31440234 = b;
double r31440235 = r31440233 + r31440234;
double r31440236 = c;
double r31440237 = r31440226 * r31440236;
double r31440238 = r31440235 / r31440237;
return r31440238;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r31440239 = x;
double r31440240 = 9.0;
double r31440241 = r31440239 * r31440240;
double r31440242 = y;
double r31440243 = r31440241 * r31440242;
double r31440244 = z;
double r31440245 = 4.0;
double r31440246 = r31440244 * r31440245;
double r31440247 = t;
double r31440248 = r31440246 * r31440247;
double r31440249 = a;
double r31440250 = r31440248 * r31440249;
double r31440251 = r31440243 - r31440250;
double r31440252 = b;
double r31440253 = r31440251 + r31440252;
double r31440254 = c;
double r31440255 = r31440254 * r31440244;
double r31440256 = r31440253 / r31440255;
double r31440257 = -4.310655787273717e+307;
bool r31440258 = r31440256 <= r31440257;
double r31440259 = r31440252 / r31440255;
double r31440260 = r31440255 / r31440242;
double r31440261 = r31440239 / r31440260;
double r31440262 = r31440261 * r31440240;
double r31440263 = r31440259 + r31440262;
double r31440264 = r31440254 / r31440249;
double r31440265 = r31440247 / r31440264;
double r31440266 = r31440245 * r31440265;
double r31440267 = r31440263 - r31440266;
double r31440268 = -5.714617762619818e-177;
bool r31440269 = r31440256 <= r31440268;
double r31440270 = 7.904503724641215e-44;
bool r31440271 = r31440256 <= r31440270;
double r31440272 = 1.0;
double r31440273 = fma(r31440241, r31440242, r31440252);
double r31440274 = r31440273 / r31440244;
double r31440275 = r31440249 * r31440245;
double r31440276 = r31440275 * r31440247;
double r31440277 = r31440274 - r31440276;
double r31440278 = r31440254 / r31440277;
double r31440279 = r31440272 / r31440278;
double r31440280 = 6.624712766971525e+252;
bool r31440281 = r31440256 <= r31440280;
double r31440282 = r31440239 / r31440244;
double r31440283 = r31440242 / r31440254;
double r31440284 = r31440282 * r31440283;
double r31440285 = r31440284 * r31440240;
double r31440286 = r31440285 + r31440259;
double r31440287 = r31440247 * r31440249;
double r31440288 = r31440287 / r31440254;
double r31440289 = r31440288 * r31440245;
double r31440290 = r31440286 - r31440289;
double r31440291 = r31440281 ? r31440256 : r31440290;
double r31440292 = r31440271 ? r31440279 : r31440291;
double r31440293 = r31440269 ? r31440256 : r31440292;
double r31440294 = r31440258 ? r31440267 : r31440293;
return r31440294;
}




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.5 |
| Herbie | 5.2 |
if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -4.310655787273717e+307Initial program 63.5
Simplified28.8
Taylor expanded around 0 34.3
rmApplied associate-/l*15.6
rmApplied associate-/l*9.0
if -4.310655787273717e+307 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -5.714617762619818e-177 or 7.904503724641215e-44 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 6.624712766971525e+252Initial program 0.7
if -5.714617762619818e-177 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 7.904503724641215e-44Initial program 20.5
Simplified0.8
rmApplied clear-num1.9
if 6.624712766971525e+252 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) Initial program 53.7
Simplified26.4
Taylor expanded around 0 26.8
rmApplied times-frac17.2
Final simplification5.2
herbie shell --seed 2019174 +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)))