\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}\;\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 = -\infty \lor \neg \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 \le 1.7151327599429132 \cdot 10^{302}\right):\\
\;\;\;\;0 + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\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 r741727 = x;
double r741728 = 18.0;
double r741729 = r741727 * r741728;
double r741730 = y;
double r741731 = r741729 * r741730;
double r741732 = z;
double r741733 = r741731 * r741732;
double r741734 = t;
double r741735 = r741733 * r741734;
double r741736 = a;
double r741737 = 4.0;
double r741738 = r741736 * r741737;
double r741739 = r741738 * r741734;
double r741740 = r741735 - r741739;
double r741741 = b;
double r741742 = c;
double r741743 = r741741 * r741742;
double r741744 = r741740 + r741743;
double r741745 = r741727 * r741737;
double r741746 = i;
double r741747 = r741745 * r741746;
double r741748 = r741744 - r741747;
double r741749 = j;
double r741750 = 27.0;
double r741751 = r741749 * r741750;
double r741752 = k;
double r741753 = r741751 * r741752;
double r741754 = r741748 - r741753;
return r741754;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r741755 = x;
double r741756 = 18.0;
double r741757 = r741755 * r741756;
double r741758 = y;
double r741759 = r741757 * r741758;
double r741760 = z;
double r741761 = r741759 * r741760;
double r741762 = t;
double r741763 = r741761 * r741762;
double r741764 = a;
double r741765 = 4.0;
double r741766 = r741764 * r741765;
double r741767 = r741766 * r741762;
double r741768 = r741763 - r741767;
double r741769 = b;
double r741770 = c;
double r741771 = r741769 * r741770;
double r741772 = r741768 + r741771;
double r741773 = r741755 * r741765;
double r741774 = i;
double r741775 = r741773 * r741774;
double r741776 = r741772 - r741775;
double r741777 = -inf.0;
bool r741778 = r741776 <= r741777;
double r741779 = 1.715132759942913e+302;
bool r741780 = r741776 <= r741779;
double r741781 = !r741780;
bool r741782 = r741778 || r741781;
double r741783 = 0.0;
double r741784 = j;
double r741785 = 27.0;
double r741786 = r741784 * r741785;
double r741787 = k;
double r741788 = r741786 * r741787;
double r741789 = r741775 + r741788;
double r741790 = r741771 - r741789;
double r741791 = r741783 + r741790;
double r741792 = r741761 - r741766;
double r741793 = r741762 * r741792;
double r741794 = r741793 + r741790;
double r741795 = r741782 ? r741791 : r741794;
return r741795;
}




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.6 |
|---|---|
| Target | 1.5 |
| Herbie | 3.2 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0 or 1.715132759942913e+302 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 58.7
Simplified58.7
Taylor expanded around 0 31.4
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 1.715132759942913e+302Initial program 0.4
Simplified0.4
Final simplification3.2
herbie shell --seed 2020049
(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)))