\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 -4.58511975214130373 \cdot 10^{-202}:\\
\;\;\;\;t \cdot \left(\left(x \cdot \left(18 \cdot y\right)\right) \cdot z - 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)\\
\mathbf{elif}\;t \le 1.24034573106726284 \cdot 10^{-70}:\\
\;\;\;\;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)\\
\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - 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 r754180 = x;
double r754181 = 18.0;
double r754182 = r754180 * r754181;
double r754183 = y;
double r754184 = r754182 * r754183;
double r754185 = z;
double r754186 = r754184 * r754185;
double r754187 = t;
double r754188 = r754186 * r754187;
double r754189 = a;
double r754190 = 4.0;
double r754191 = r754189 * r754190;
double r754192 = r754191 * r754187;
double r754193 = r754188 - r754192;
double r754194 = b;
double r754195 = c;
double r754196 = r754194 * r754195;
double r754197 = r754193 + r754196;
double r754198 = r754180 * r754190;
double r754199 = i;
double r754200 = r754198 * r754199;
double r754201 = r754197 - r754200;
double r754202 = j;
double r754203 = 27.0;
double r754204 = r754202 * r754203;
double r754205 = k;
double r754206 = r754204 * r754205;
double r754207 = r754201 - r754206;
return r754207;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r754208 = t;
double r754209 = -4.585119752141304e-202;
bool r754210 = r754208 <= r754209;
double r754211 = x;
double r754212 = 18.0;
double r754213 = y;
double r754214 = r754212 * r754213;
double r754215 = r754211 * r754214;
double r754216 = z;
double r754217 = r754215 * r754216;
double r754218 = a;
double r754219 = 4.0;
double r754220 = r754218 * r754219;
double r754221 = r754217 - r754220;
double r754222 = r754208 * r754221;
double r754223 = b;
double r754224 = c;
double r754225 = r754223 * r754224;
double r754226 = r754211 * r754219;
double r754227 = i;
double r754228 = r754226 * r754227;
double r754229 = j;
double r754230 = 27.0;
double r754231 = k;
double r754232 = r754230 * r754231;
double r754233 = r754229 * r754232;
double r754234 = r754228 + r754233;
double r754235 = r754225 - r754234;
double r754236 = r754222 + r754235;
double r754237 = 1.2403457310672628e-70;
bool r754238 = r754208 <= r754237;
double r754239 = 0.0;
double r754240 = r754239 - r754220;
double r754241 = r754208 * r754240;
double r754242 = r754241 + r754235;
double r754243 = r754211 * r754212;
double r754244 = r754213 * r754216;
double r754245 = r754243 * r754244;
double r754246 = r754245 - r754220;
double r754247 = r754208 * r754246;
double r754248 = r754247 + r754235;
double r754249 = r754238 ? r754242 : r754248;
double r754250 = r754210 ? r754236 : r754249;
return r754250;
}




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.2 |
|---|---|
| Target | 1.5 |
| Herbie | 4.7 |
if t < -4.585119752141304e-202Initial program 4.2
Simplified4.2
rmApplied associate-*l*4.2
rmApplied associate-*l*4.3
if -4.585119752141304e-202 < t < 1.2403457310672628e-70Initial program 8.3
Simplified8.3
rmApplied associate-*l*8.4
Taylor expanded around 0 6.0
if 1.2403457310672628e-70 < t Initial program 2.3
Simplified2.3
rmApplied associate-*l*2.3
rmApplied associate-*l*3.5
Final simplification4.7
herbie shell --seed 2020047
(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.68027943805222) (+ (- (* (* 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)))