\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}\;x \le -9.65545760621799240184121524041608806323 \cdot 10^{111}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(\left(y \cdot z\right) \cdot t\right) - \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{elif}\;x \le 3.101862889713283380041023072579951440529 \cdot 10^{79}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot \left(y \cdot 18\right)\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) - j \cdot \left(27 \cdot k\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 r457101 = x;
double r457102 = 18.0;
double r457103 = r457101 * r457102;
double r457104 = y;
double r457105 = r457103 * r457104;
double r457106 = z;
double r457107 = r457105 * r457106;
double r457108 = t;
double r457109 = r457107 * r457108;
double r457110 = a;
double r457111 = 4.0;
double r457112 = r457110 * r457111;
double r457113 = r457112 * r457108;
double r457114 = r457109 - r457113;
double r457115 = b;
double r457116 = c;
double r457117 = r457115 * r457116;
double r457118 = r457114 + r457117;
double r457119 = r457101 * r457111;
double r457120 = i;
double r457121 = r457119 * r457120;
double r457122 = r457118 - r457121;
double r457123 = j;
double r457124 = 27.0;
double r457125 = r457123 * r457124;
double r457126 = k;
double r457127 = r457125 * r457126;
double r457128 = r457122 - r457127;
return r457128;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r457129 = x;
double r457130 = -9.655457606217992e+111;
bool r457131 = r457129 <= r457130;
double r457132 = 18.0;
double r457133 = r457129 * r457132;
double r457134 = y;
double r457135 = z;
double r457136 = r457134 * r457135;
double r457137 = t;
double r457138 = r457136 * r457137;
double r457139 = r457133 * r457138;
double r457140 = a;
double r457141 = 4.0;
double r457142 = r457140 * r457141;
double r457143 = r457142 * r457137;
double r457144 = r457139 - r457143;
double r457145 = b;
double r457146 = c;
double r457147 = r457145 * r457146;
double r457148 = r457144 + r457147;
double r457149 = r457129 * r457141;
double r457150 = i;
double r457151 = r457149 * r457150;
double r457152 = r457148 - r457151;
double r457153 = 27.0;
double r457154 = k;
double r457155 = j;
double r457156 = r457154 * r457155;
double r457157 = r457153 * r457156;
double r457158 = r457152 - r457157;
double r457159 = 3.1018628897132834e+79;
bool r457160 = r457129 <= r457159;
double r457161 = r457134 * r457132;
double r457162 = r457129 * r457161;
double r457163 = r457162 * r457135;
double r457164 = r457163 * r457137;
double r457165 = r457164 - r457143;
double r457166 = r457165 + r457147;
double r457167 = r457166 - r457151;
double r457168 = r457153 * r457154;
double r457169 = r457155 * r457168;
double r457170 = r457167 - r457169;
double r457171 = r457135 * r457137;
double r457172 = r457134 * r457171;
double r457173 = r457133 * r457172;
double r457174 = r457173 - r457143;
double r457175 = r457174 + r457147;
double r457176 = r457175 - r457151;
double r457177 = r457176 - r457169;
double r457178 = r457160 ? r457170 : r457177;
double r457179 = r457131 ? r457158 : r457178;
return r457179;
}




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.4 |
| Herbie | 2.7 |
if x < -9.655457606217992e+111Initial program 17.0
rmApplied associate-*l*17.1
rmApplied associate-*l*10.0
rmApplied associate-*l*1.6
rmApplied pow11.6
Applied pow11.6
Applied pow-prod-down1.6
Applied pow11.6
Applied pow-prod-down1.6
Simplified1.4
if -9.655457606217992e+111 < x < 3.1018628897132834e+79Initial program 2.8
rmApplied associate-*l*2.8
rmApplied associate-*l*2.9
Simplified2.9
if 3.1018628897132834e+79 < x Initial program 15.6
rmApplied associate-*l*15.8
rmApplied associate-*l*8.6
rmApplied associate-*l*1.5
rmApplied associate-*l*2.1
Final simplification2.7
herbie shell --seed 2019326 +o rules:numerics
(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)))