\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
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)
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r421609 = x;
double r421610 = 18.0;
double r421611 = r421609 * r421610;
double r421612 = y;
double r421613 = r421611 * r421612;
double r421614 = z;
double r421615 = r421613 * r421614;
double r421616 = t;
double r421617 = r421615 * r421616;
double r421618 = a;
double r421619 = 4.0;
double r421620 = r421618 * r421619;
double r421621 = r421620 * r421616;
double r421622 = r421617 - r421621;
double r421623 = b;
double r421624 = c;
double r421625 = r421623 * r421624;
double r421626 = r421622 + r421625;
double r421627 = r421609 * r421619;
double r421628 = i;
double r421629 = r421627 * r421628;
double r421630 = r421626 - r421629;
double r421631 = j;
double r421632 = 27.0;
double r421633 = r421631 * r421632;
double r421634 = k;
double r421635 = r421633 * r421634;
double r421636 = r421630 - r421635;
return r421636;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r421637 = t;
double r421638 = x;
double r421639 = 18.0;
double r421640 = r421638 * r421639;
double r421641 = y;
double r421642 = z;
double r421643 = r421641 * r421642;
double r421644 = r421640 * r421643;
double r421645 = a;
double r421646 = 4.0;
double r421647 = r421645 * r421646;
double r421648 = r421644 - r421647;
double r421649 = r421637 * r421648;
double r421650 = b;
double r421651 = c;
double r421652 = r421650 * r421651;
double r421653 = r421638 * r421646;
double r421654 = i;
double r421655 = r421653 * r421654;
double r421656 = j;
double r421657 = 27.0;
double r421658 = k;
double r421659 = r421657 * r421658;
double r421660 = r421656 * r421659;
double r421661 = r421655 + r421660;
double r421662 = r421652 - r421661;
double r421663 = r421649 + r421662;
return r421663;
}




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.3 |
|---|---|
| Target | 1.6 |
| Herbie | 6.0 |
if x < -1.9520536695656065e-73Initial program 9.4
rmApplied associate-*l*9.3
rmApplied associate-*l*9.3
rmApplied associate-*l*6.3
if -1.9520536695656065e-73 < x < 53501025862446216.0Initial program 1.4
rmApplied associate-*l*1.4
rmApplied associate-*l*1.3
rmApplied associate-*l*1.5
rmApplied add-cube-cbrt1.5
if 53501025862446216.0 < x Initial program 12.5
rmApplied associate-*l*12.4
rmApplied associate-*l*12.4
rmApplied associate-*l*12.3
rmApplied associate-*l*8.8
Final simplification6.0
herbie shell --seed 2019304
(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)))