\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
x \cdot 2 - \left(9 \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 27\right) \cdot b\right)
double f(double x, double y, double z, double t, double a, double b) {
double r502684 = x;
double r502685 = 2.0;
double r502686 = r502684 * r502685;
double r502687 = y;
double r502688 = 9.0;
double r502689 = r502687 * r502688;
double r502690 = z;
double r502691 = r502689 * r502690;
double r502692 = t;
double r502693 = r502691 * r502692;
double r502694 = r502686 - r502693;
double r502695 = a;
double r502696 = 27.0;
double r502697 = r502695 * r502696;
double r502698 = b;
double r502699 = r502697 * r502698;
double r502700 = r502694 + r502699;
return r502700;
}
double f(double x, double y, double z, double t, double a, double b) {
double r502701 = x;
double r502702 = 2.0;
double r502703 = r502701 * r502702;
double r502704 = 9.0;
double r502705 = y;
double r502706 = z;
double r502707 = t;
double r502708 = r502706 * r502707;
double r502709 = r502705 * r502708;
double r502710 = r502704 * r502709;
double r502711 = a;
double r502712 = 27.0;
double r502713 = r502711 * r502712;
double r502714 = b;
double r502715 = r502713 * r502714;
double r502716 = r502710 - r502715;
double r502717 = r502703 - r502716;
return r502717;
}




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 | 3.7 |
if t < -1.0630870322617426e+83 or 5.718628013402842e-49 < t Initial program 0.8
rmApplied associate-*l*0.8
Simplified0.8
if -1.0630870322617426e+83 < t < 5.718628013402842e-49Initial program 5.5
rmApplied pow15.5
Applied pow15.5
Applied pow15.5
Applied pow15.5
Applied pow-prod-down5.5
Applied pow-prod-down5.5
Applied pow-prod-down5.5
Simplified0.9
Final simplification3.7
herbie shell --seed 2019291
(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)))