\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
\left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(x \cdot 4\right) \cdot i\right)\right) - 27 \cdot \left(j \cdot k\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r501154 = x;
double r501155 = 18.0;
double r501156 = r501154 * r501155;
double r501157 = y;
double r501158 = r501156 * r501157;
double r501159 = z;
double r501160 = r501158 * r501159;
double r501161 = t;
double r501162 = r501160 * r501161;
double r501163 = a;
double r501164 = 4.0;
double r501165 = r501163 * r501164;
double r501166 = r501165 * r501161;
double r501167 = r501162 - r501166;
double r501168 = b;
double r501169 = c;
double r501170 = r501168 * r501169;
double r501171 = r501167 + r501170;
double r501172 = r501154 * r501164;
double r501173 = i;
double r501174 = r501172 * r501173;
double r501175 = r501171 - r501174;
double r501176 = j;
double r501177 = 27.0;
double r501178 = r501176 * r501177;
double r501179 = k;
double r501180 = r501178 * r501179;
double r501181 = r501175 - r501180;
return r501181;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r501182 = t;
double r501183 = x;
double r501184 = 18.0;
double r501185 = r501183 * r501184;
double r501186 = y;
double r501187 = r501185 * r501186;
double r501188 = z;
double r501189 = r501187 * r501188;
double r501190 = a;
double r501191 = 4.0;
double r501192 = r501190 * r501191;
double r501193 = r501189 - r501192;
double r501194 = r501182 * r501193;
double r501195 = b;
double r501196 = c;
double r501197 = r501195 * r501196;
double r501198 = r501183 * r501191;
double r501199 = i;
double r501200 = r501198 * r501199;
double r501201 = r501197 - r501200;
double r501202 = r501194 + r501201;
double r501203 = 27.0;
double r501204 = j;
double r501205 = k;
double r501206 = r501204 * r501205;
double r501207 = r501203 * r501206;
double r501208 = r501202 - r501207;
return r501208;
}




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.8 |
|---|---|
| Target | 1.5 |
| Herbie | 5.7 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -1.0761333188935318e+305 or 2.1127107260805905e+291 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 48.2
Taylor expanded around inf 33.1
Simplified6.4
rmApplied pow16.4
Applied pow16.4
Applied pow16.4
Applied pow-prod-down6.4
Applied pow-prod-down6.4
Simplified6.3
if -1.0761333188935318e+305 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 2.1127107260805905e+291Initial program 0.3
rmApplied associate-*l*0.3
Simplified0.3
Final simplification5.7
herbie shell --seed 2019291
(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)))