\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}\;\left(x \cdot 9\right) \cdot y \le -1.01280399873340739 \cdot 10^{-88}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x}{\frac{z \cdot c}{y}}\right) - 4 \cdot \left(\left(a \cdot t\right) \cdot \frac{1}{c}\right)\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le -9.44653292186014332 \cdot 10^{-285}:\\
\;\;\;\;\frac{1}{z} \cdot \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c}\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 1.80429930440544056 \cdot 10^{-135}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \left(\frac{x}{z \cdot c} \cdot y\right)\right) - 4 \cdot \left(a \cdot \frac{t}{c}\right)\\
\mathbf{elif}\;\left(x \cdot 9\right) \cdot y \le 2.50481645443219275 \cdot 10^{244}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{x \cdot y}{z \cdot c}\right) - 4 \cdot \frac{1}{\frac{c}{a \cdot t}}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{b}{z \cdot c} + 9 \cdot \frac{\frac{x}{z}}{\frac{c}{y}}\right) - 4 \cdot \left(a \cdot \frac{t}{c}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r766237 = x;
double r766238 = 9.0;
double r766239 = r766237 * r766238;
double r766240 = y;
double r766241 = r766239 * r766240;
double r766242 = z;
double r766243 = 4.0;
double r766244 = r766242 * r766243;
double r766245 = t;
double r766246 = r766244 * r766245;
double r766247 = a;
double r766248 = r766246 * r766247;
double r766249 = r766241 - r766248;
double r766250 = b;
double r766251 = r766249 + r766250;
double r766252 = c;
double r766253 = r766242 * r766252;
double r766254 = r766251 / r766253;
return r766254;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r766255 = x;
double r766256 = 9.0;
double r766257 = r766255 * r766256;
double r766258 = y;
double r766259 = r766257 * r766258;
double r766260 = -1.0128039987334074e-88;
bool r766261 = r766259 <= r766260;
double r766262 = b;
double r766263 = z;
double r766264 = c;
double r766265 = r766263 * r766264;
double r766266 = r766262 / r766265;
double r766267 = r766265 / r766258;
double r766268 = r766255 / r766267;
double r766269 = r766256 * r766268;
double r766270 = r766266 + r766269;
double r766271 = 4.0;
double r766272 = a;
double r766273 = t;
double r766274 = r766272 * r766273;
double r766275 = 1.0;
double r766276 = r766275 / r766264;
double r766277 = r766274 * r766276;
double r766278 = r766271 * r766277;
double r766279 = r766270 - r766278;
double r766280 = -9.446532921860143e-285;
bool r766281 = r766259 <= r766280;
double r766282 = r766275 / r766263;
double r766283 = r766263 * r766271;
double r766284 = r766283 * r766273;
double r766285 = r766284 * r766272;
double r766286 = r766259 - r766285;
double r766287 = r766286 + r766262;
double r766288 = r766287 / r766264;
double r766289 = r766282 * r766288;
double r766290 = 1.8042993044054406e-135;
bool r766291 = r766259 <= r766290;
double r766292 = r766255 / r766265;
double r766293 = r766292 * r766258;
double r766294 = r766256 * r766293;
double r766295 = r766266 + r766294;
double r766296 = r766273 / r766264;
double r766297 = r766272 * r766296;
double r766298 = r766271 * r766297;
double r766299 = r766295 - r766298;
double r766300 = 2.5048164544321928e+244;
bool r766301 = r766259 <= r766300;
double r766302 = r766255 * r766258;
double r766303 = r766302 / r766265;
double r766304 = r766256 * r766303;
double r766305 = r766266 + r766304;
double r766306 = r766264 / r766274;
double r766307 = r766275 / r766306;
double r766308 = r766271 * r766307;
double r766309 = r766305 - r766308;
double r766310 = r766255 / r766263;
double r766311 = r766264 / r766258;
double r766312 = r766310 / r766311;
double r766313 = r766256 * r766312;
double r766314 = r766266 + r766313;
double r766315 = r766314 - r766298;
double r766316 = r766301 ? r766309 : r766315;
double r766317 = r766291 ? r766299 : r766316;
double r766318 = r766281 ? r766289 : r766317;
double r766319 = r766261 ? r766279 : r766318;
return r766319;
}




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.4 |
|---|---|
| Target | 14.3 |
| Herbie | 10.5 |
if (* (* x 9.0) y) < -1.0128039987334074e-88Initial program 23.2
Taylor expanded around 0 15.2
rmApplied associate-/l*13.0
rmApplied div-inv13.0
if -1.0128039987334074e-88 < (* (* x 9.0) y) < -9.446532921860143e-285Initial program 15.7
rmApplied *-un-lft-identity15.7
Applied times-frac15.9
if -9.446532921860143e-285 < (* (* x 9.0) y) < 1.8042993044054406e-135Initial program 17.0
Taylor expanded around 0 8.2
rmApplied associate-/l*8.3
rmApplied *-un-lft-identity8.3
Applied times-frac8.6
Simplified8.6
rmApplied associate-/r/8.6
if 1.8042993044054406e-135 < (* (* x 9.0) y) < 2.5048164544321928e+244Initial program 17.4
Taylor expanded around 0 7.4
rmApplied clear-num7.5
if 2.5048164544321928e+244 < (* (* x 9.0) y) Initial program 45.8
Taylor expanded around 0 42.1
rmApplied associate-/l*18.0
rmApplied *-un-lft-identity18.0
Applied times-frac15.0
Simplified15.0
rmApplied *-un-lft-identity15.0
Applied times-frac6.8
Applied associate-/r*9.0
Simplified9.0
Final simplification10.5
herbie shell --seed 2020003
(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)))