\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:\\
\;\;\;\;\left(\left(\left(x \cdot \left(18 \cdot \left(y \cdot \left(z \cdot t\right)\right)\right) - \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\\
\mathbf{elif}\;\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 9.44691043772436753 \cdot 10^{300}:\\
\;\;\;\;\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) - 27 \cdot \left(k \cdot j\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\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 r773753 = x;
double r773754 = 18.0;
double r773755 = r773753 * r773754;
double r773756 = y;
double r773757 = r773755 * r773756;
double r773758 = z;
double r773759 = r773757 * r773758;
double r773760 = t;
double r773761 = r773759 * r773760;
double r773762 = a;
double r773763 = 4.0;
double r773764 = r773762 * r773763;
double r773765 = r773764 * r773760;
double r773766 = r773761 - r773765;
double r773767 = b;
double r773768 = c;
double r773769 = r773767 * r773768;
double r773770 = r773766 + r773769;
double r773771 = r773753 * r773763;
double r773772 = i;
double r773773 = r773771 * r773772;
double r773774 = r773770 - r773773;
double r773775 = j;
double r773776 = 27.0;
double r773777 = r773775 * r773776;
double r773778 = k;
double r773779 = r773777 * r773778;
double r773780 = r773774 - r773779;
return r773780;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r773781 = x;
double r773782 = 18.0;
double r773783 = r773781 * r773782;
double r773784 = y;
double r773785 = r773783 * r773784;
double r773786 = z;
double r773787 = r773785 * r773786;
double r773788 = t;
double r773789 = r773787 * r773788;
double r773790 = a;
double r773791 = 4.0;
double r773792 = r773790 * r773791;
double r773793 = r773792 * r773788;
double r773794 = r773789 - r773793;
double r773795 = b;
double r773796 = c;
double r773797 = r773795 * r773796;
double r773798 = r773794 + r773797;
double r773799 = r773781 * r773791;
double r773800 = i;
double r773801 = r773799 * r773800;
double r773802 = r773798 - r773801;
double r773803 = -inf.0;
bool r773804 = r773802 <= r773803;
double r773805 = r773786 * r773788;
double r773806 = r773784 * r773805;
double r773807 = r773782 * r773806;
double r773808 = r773781 * r773807;
double r773809 = r773808 - r773793;
double r773810 = r773809 + r773797;
double r773811 = r773810 - r773801;
double r773812 = j;
double r773813 = 27.0;
double r773814 = r773812 * r773813;
double r773815 = k;
double r773816 = r773814 * r773815;
double r773817 = r773811 - r773816;
double r773818 = 9.446910437724368e+300;
bool r773819 = r773802 <= r773818;
double r773820 = r773815 * r773812;
double r773821 = r773813 * r773820;
double r773822 = r773802 - r773821;
double r773823 = r773783 * r773806;
double r773824 = r773823 - r773793;
double r773825 = r773824 + r773797;
double r773826 = r773825 - r773801;
double r773827 = r773813 * r773815;
double r773828 = r773812 * r773827;
double r773829 = r773826 - r773828;
double r773830 = r773819 ? r773822 : r773829;
double r773831 = r773804 ? r773817 : r773830;
return r773831;
}




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.6 |
| Herbie | 0.8 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0Initial program 64.0
rmApplied associate-*l*37.2
rmApplied associate-*l*5.2
rmApplied associate-*l*4.8
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 9.446910437724368e+300Initial program 0.4
Taylor expanded around 0 0.3
if 9.446910437724368e+300 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 49.4
rmApplied associate-*l*28.1
rmApplied associate-*l*7.0
rmApplied associate-*l*7.2
Final simplification0.8
herbie shell --seed 2020042
(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)))