\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -2.8547222936875714 \cdot 10^{304} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 7609499462.3579979\right):\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(2 \cdot x - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\right) + \left(\left(y \cdot 9\right) \cdot z\right) \cdot \left(\left(-t\right) + t\right)\right) + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r876251 = x;
double r876252 = 2.0;
double r876253 = r876251 * r876252;
double r876254 = y;
double r876255 = 9.0;
double r876256 = r876254 * r876255;
double r876257 = z;
double r876258 = r876256 * r876257;
double r876259 = t;
double r876260 = r876258 * r876259;
double r876261 = r876253 - r876260;
double r876262 = a;
double r876263 = 27.0;
double r876264 = r876262 * r876263;
double r876265 = b;
double r876266 = r876264 * r876265;
double r876267 = r876261 + r876266;
return r876267;
}
double f(double x, double y, double z, double t, double a, double b) {
double r876268 = y;
double r876269 = 9.0;
double r876270 = r876268 * r876269;
double r876271 = z;
double r876272 = r876270 * r876271;
double r876273 = -2.8547222936875714e+304;
bool r876274 = r876272 <= r876273;
double r876275 = 7609499462.357998;
bool r876276 = r876272 <= r876275;
double r876277 = !r876276;
bool r876278 = r876274 || r876277;
double r876279 = x;
double r876280 = 2.0;
double r876281 = r876279 * r876280;
double r876282 = r876269 * r876271;
double r876283 = t;
double r876284 = r876282 * r876283;
double r876285 = r876268 * r876284;
double r876286 = r876281 - r876285;
double r876287 = 27.0;
double r876288 = a;
double r876289 = b;
double r876290 = r876288 * r876289;
double r876291 = r876287 * r876290;
double r876292 = r876286 + r876291;
double r876293 = r876280 * r876279;
double r876294 = r876271 * r876268;
double r876295 = r876283 * r876294;
double r876296 = r876269 * r876295;
double r876297 = r876293 - r876296;
double r876298 = -r876283;
double r876299 = r876298 + r876283;
double r876300 = r876272 * r876299;
double r876301 = r876297 + r876300;
double r876302 = sqrt(r876287);
double r876303 = r876302 * r876290;
double r876304 = r876302 * r876303;
double r876305 = r876301 + r876304;
double r876306 = r876278 ? r876292 : r876305;
return r876306;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.6 |
|---|---|
| Target | 2.6 |
| Herbie | 1.2 |
if (* (* y 9.0) z) < -2.8547222936875714e+304 or 7609499462.357998 < (* (* y 9.0) z) Initial program 14.6
Taylor expanded around 0 14.6
rmApplied associate-*l*14.6
rmApplied associate-*l*4.0
if -2.8547222936875714e+304 < (* (* y 9.0) z) < 7609499462.357998Initial program 0.5
Taylor expanded around 0 0.4
rmApplied prod-diff0.4
Simplified0.4
Simplified0.4
rmApplied add-sqr-sqrt0.4
Applied associate-*l*0.5
Final simplification1.2
herbie shell --seed 2020100 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))