\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(j \cdot 27\right) \cdot k \le -4.540980572012251526114420073985087439812 \cdot 10^{-316} \lor \neg \left(\left(j \cdot 27\right) \cdot k \le 2161642607386816256\right) \land \left(j \cdot 27\right) \cdot k \le 1.732330144710722980399686902944367574721 \cdot 10^{167}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(\left(t \cdot x\right) \cdot \left(z \cdot y\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{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) - \sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\left(j \cdot 27\right) \cdot k}\\
\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 r471024 = x;
double r471025 = 18.0;
double r471026 = r471024 * r471025;
double r471027 = y;
double r471028 = r471026 * r471027;
double r471029 = z;
double r471030 = r471028 * r471029;
double r471031 = t;
double r471032 = r471030 * r471031;
double r471033 = a;
double r471034 = 4.0;
double r471035 = r471033 * r471034;
double r471036 = r471035 * r471031;
double r471037 = r471032 - r471036;
double r471038 = b;
double r471039 = c;
double r471040 = r471038 * r471039;
double r471041 = r471037 + r471040;
double r471042 = r471024 * r471034;
double r471043 = i;
double r471044 = r471042 * r471043;
double r471045 = r471041 - r471044;
double r471046 = j;
double r471047 = 27.0;
double r471048 = r471046 * r471047;
double r471049 = k;
double r471050 = r471048 * r471049;
double r471051 = r471045 - r471050;
return r471051;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r471052 = j;
double r471053 = 27.0;
double r471054 = r471052 * r471053;
double r471055 = k;
double r471056 = r471054 * r471055;
double r471057 = -4.5409805720123e-316;
bool r471058 = r471056 <= r471057;
double r471059 = 2.1616426073868163e+18;
bool r471060 = r471056 <= r471059;
double r471061 = !r471060;
double r471062 = 1.732330144710723e+167;
bool r471063 = r471056 <= r471062;
bool r471064 = r471061 && r471063;
bool r471065 = r471058 || r471064;
double r471066 = 18.0;
double r471067 = t;
double r471068 = x;
double r471069 = r471067 * r471068;
double r471070 = z;
double r471071 = y;
double r471072 = r471070 * r471071;
double r471073 = r471069 * r471072;
double r471074 = r471066 * r471073;
double r471075 = a;
double r471076 = 4.0;
double r471077 = r471075 * r471076;
double r471078 = r471077 * r471067;
double r471079 = r471074 - r471078;
double r471080 = b;
double r471081 = c;
double r471082 = r471080 * r471081;
double r471083 = r471079 + r471082;
double r471084 = r471068 * r471076;
double r471085 = i;
double r471086 = r471084 * r471085;
double r471087 = r471083 - r471086;
double r471088 = r471087 - r471056;
double r471089 = r471068 * r471066;
double r471090 = r471089 * r471071;
double r471091 = r471090 * r471070;
double r471092 = r471091 * r471067;
double r471093 = r471092 - r471078;
double r471094 = r471093 + r471082;
double r471095 = r471094 - r471086;
double r471096 = sqrt(r471056);
double r471097 = r471096 * r471096;
double r471098 = r471095 - r471097;
double r471099 = r471065 ? r471088 : r471098;
return r471099;
}




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.8 |
|---|---|
| Target | 1.6 |
| Herbie | 6.3 |
if (* (* j 27.0) k) < -4.5409805720123e-316 or 2.1616426073868163e+18 < (* (* j 27.0) k) < 1.732330144710723e+167Initial program 5.9
rmApplied pow15.9
Applied pow15.9
Applied pow15.9
Applied pow15.9
Applied pow15.9
Applied pow-prod-down5.9
Applied pow-prod-down5.9
Applied pow-prod-down5.9
Applied pow-prod-down5.9
Simplified6.1
rmApplied associate-*r*6.3
if -4.5409805720123e-316 < (* (* j 27.0) k) < 2.1616426073868163e+18 or 1.732330144710723e+167 < (* (* j 27.0) k) Initial program 5.6
rmApplied add-sqr-sqrt6.2
Final simplification6.3
herbie shell --seed 2019325
(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)))