\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -7.924535231213678250824947916484516272463 \cdot 10^{-47} \lor \neg \left(t \le 2.350638188745770674030561433856451073657 \cdot 10^{-124}\right):\\
\;\;\;\;t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t \cdot \left(0 - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r535224 = x;
double r535225 = 18.0;
double r535226 = r535224 * r535225;
double r535227 = y;
double r535228 = r535226 * r535227;
double r535229 = z;
double r535230 = r535228 * r535229;
double r535231 = t;
double r535232 = r535230 * r535231;
double r535233 = a;
double r535234 = 4.0;
double r535235 = r535233 * r535234;
double r535236 = r535235 * r535231;
double r535237 = r535232 - r535236;
double r535238 = b;
double r535239 = c;
double r535240 = r535238 * r535239;
double r535241 = r535237 + r535240;
double r535242 = r535224 * r535234;
double r535243 = i;
double r535244 = r535242 * r535243;
double r535245 = r535241 - r535244;
double r535246 = j;
double r535247 = 27.0;
double r535248 = r535246 * r535247;
double r535249 = k;
double r535250 = r535248 * r535249;
double r535251 = r535245 - r535250;
return r535251;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r535252 = t;
double r535253 = -7.924535231213678e-47;
bool r535254 = r535252 <= r535253;
double r535255 = 2.3506381887457707e-124;
bool r535256 = r535252 <= r535255;
double r535257 = !r535256;
bool r535258 = r535254 || r535257;
double r535259 = 18.0;
double r535260 = x;
double r535261 = z;
double r535262 = y;
double r535263 = r535261 * r535262;
double r535264 = r535260 * r535263;
double r535265 = r535259 * r535264;
double r535266 = a;
double r535267 = 4.0;
double r535268 = r535266 * r535267;
double r535269 = r535265 - r535268;
double r535270 = r535252 * r535269;
double r535271 = b;
double r535272 = c;
double r535273 = r535271 * r535272;
double r535274 = r535260 * r535267;
double r535275 = i;
double r535276 = r535274 * r535275;
double r535277 = j;
double r535278 = 27.0;
double r535279 = r535277 * r535278;
double r535280 = k;
double r535281 = r535279 * r535280;
double r535282 = r535276 + r535281;
double r535283 = r535273 - r535282;
double r535284 = r535270 + r535283;
double r535285 = 0.0;
double r535286 = r535285 - r535268;
double r535287 = r535252 * r535286;
double r535288 = r535278 * r535280;
double r535289 = r535277 * r535288;
double r535290 = r535276 + r535289;
double r535291 = r535273 - r535290;
double r535292 = r535287 + r535291;
double r535293 = r535258 ? r535284 : r535292;
return r535293;
}




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




Bits error versus i




Bits error versus j




Bits error versus k
Results
| Original | 5.5 |
|---|---|
| Target | 1.7 |
| Herbie | 5.0 |
if t < -7.924535231213678e-47Initial program 2.4
Simplified2.4
Taylor expanded around inf 2.8
if -7.924535231213678e-47 < t < 2.3506381887457707e-124Initial program 8.4
Simplified8.4
rmApplied associate-*l*8.5
Taylor expanded around 0 6.9
if 2.3506381887457707e-124 < t Initial program 3.1
Simplified3.1
rmApplied associate-*l*3.1
rmApplied add-sqr-sqrt3.2
Applied associate-*l*3.2
Final simplification5.0
herbie shell --seed 1978988140
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.680279438052224) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))