\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 5.3319379792198453 \cdot 10^{304}\right):\\
\;\;\;\;\left(\left(\left(0 \cdot t - \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)\\
\mathbf{else}:\\
\;\;\;\;\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(\sqrt[3]{\left(j \cdot 27\right) \cdot k} \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right) \cdot \left(\sqrt[3]{j \cdot 27} \cdot \sqrt[3]{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 r730100 = x;
double r730101 = 18.0;
double r730102 = r730100 * r730101;
double r730103 = y;
double r730104 = r730102 * r730103;
double r730105 = z;
double r730106 = r730104 * r730105;
double r730107 = t;
double r730108 = r730106 * r730107;
double r730109 = a;
double r730110 = 4.0;
double r730111 = r730109 * r730110;
double r730112 = r730111 * r730107;
double r730113 = r730108 - r730112;
double r730114 = b;
double r730115 = c;
double r730116 = r730114 * r730115;
double r730117 = r730113 + r730116;
double r730118 = r730100 * r730110;
double r730119 = i;
double r730120 = r730118 * r730119;
double r730121 = r730117 - r730120;
double r730122 = j;
double r730123 = 27.0;
double r730124 = r730122 * r730123;
double r730125 = k;
double r730126 = r730124 * r730125;
double r730127 = r730121 - r730126;
return r730127;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r730128 = x;
double r730129 = 18.0;
double r730130 = r730128 * r730129;
double r730131 = y;
double r730132 = r730130 * r730131;
double r730133 = z;
double r730134 = r730132 * r730133;
double r730135 = t;
double r730136 = r730134 * r730135;
double r730137 = a;
double r730138 = 4.0;
double r730139 = r730137 * r730138;
double r730140 = r730139 * r730135;
double r730141 = r730136 - r730140;
double r730142 = b;
double r730143 = c;
double r730144 = r730142 * r730143;
double r730145 = r730141 + r730144;
double r730146 = r730128 * r730138;
double r730147 = i;
double r730148 = r730146 * r730147;
double r730149 = r730145 - r730148;
double r730150 = -inf.0;
bool r730151 = r730149 <= r730150;
double r730152 = 5.331937979219845e+304;
bool r730153 = r730149 <= r730152;
double r730154 = !r730153;
bool r730155 = r730151 || r730154;
double r730156 = 0.0;
double r730157 = r730156 * r730135;
double r730158 = r730157 - r730140;
double r730159 = r730158 + r730144;
double r730160 = r730159 - r730148;
double r730161 = j;
double r730162 = 27.0;
double r730163 = k;
double r730164 = r730162 * r730163;
double r730165 = r730161 * r730164;
double r730166 = r730160 - r730165;
double r730167 = r730161 * r730162;
double r730168 = r730167 * r730163;
double r730169 = cbrt(r730168);
double r730170 = r730169 * r730169;
double r730171 = cbrt(r730167);
double r730172 = cbrt(r730163);
double r730173 = r730171 * r730172;
double r730174 = r730170 * r730173;
double r730175 = r730149 - r730174;
double r730176 = r730155 ? r730166 : r730175;
return r730176;
}




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.5 |
|---|---|
| Target | 1.6 |
| Herbie | 3.1 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0 or 5.331937979219845e+304 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 60.5
rmApplied associate-*l*60.5
Taylor expanded around 0 29.9
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 5.331937979219845e+304Initial program 0.4
rmApplied add-cube-cbrt0.6
rmApplied cbrt-prod0.6
Final simplification3.1
herbie shell --seed 2020024
(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)))