\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -3.248707102049524282663682277335964122111 \cdot 10^{187} \lor \neg \left(x \cdot y \le 1.164981797442287361051324591328157653864 \cdot 10^{58}\right):\\
\;\;\;\;0.5 \cdot \frac{x}{\frac{a}{y}} - 4.5 \cdot \frac{t}{\frac{a}{z}}\\
\mathbf{else}:\\
\;\;\;\;\left(0.5 \cdot \left(x \cdot y\right)\right) \cdot \frac{1}{a} - 4.5 \cdot \frac{t \cdot z}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r1221065 = x;
double r1221066 = y;
double r1221067 = r1221065 * r1221066;
double r1221068 = z;
double r1221069 = 9.0;
double r1221070 = r1221068 * r1221069;
double r1221071 = t;
double r1221072 = r1221070 * r1221071;
double r1221073 = r1221067 - r1221072;
double r1221074 = a;
double r1221075 = 2.0;
double r1221076 = r1221074 * r1221075;
double r1221077 = r1221073 / r1221076;
return r1221077;
}
double f(double x, double y, double z, double t, double a) {
double r1221078 = x;
double r1221079 = y;
double r1221080 = r1221078 * r1221079;
double r1221081 = -3.2487071020495243e+187;
bool r1221082 = r1221080 <= r1221081;
double r1221083 = 1.1649817974422874e+58;
bool r1221084 = r1221080 <= r1221083;
double r1221085 = !r1221084;
bool r1221086 = r1221082 || r1221085;
double r1221087 = 0.5;
double r1221088 = a;
double r1221089 = r1221088 / r1221079;
double r1221090 = r1221078 / r1221089;
double r1221091 = r1221087 * r1221090;
double r1221092 = 4.5;
double r1221093 = t;
double r1221094 = z;
double r1221095 = r1221088 / r1221094;
double r1221096 = r1221093 / r1221095;
double r1221097 = r1221092 * r1221096;
double r1221098 = r1221091 - r1221097;
double r1221099 = r1221087 * r1221080;
double r1221100 = 1.0;
double r1221101 = r1221100 / r1221088;
double r1221102 = r1221099 * r1221101;
double r1221103 = r1221093 * r1221094;
double r1221104 = r1221103 / r1221088;
double r1221105 = r1221092 * r1221104;
double r1221106 = r1221102 - r1221105;
double r1221107 = r1221086 ? r1221098 : r1221106;
return r1221107;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.9 |
|---|---|
| Target | 5.8 |
| Herbie | 4.0 |
if (* x y) < -3.2487071020495243e+187 or 1.1649817974422874e+58 < (* x y) Initial program 20.3
Taylor expanded around 0 20.2
rmApplied associate-/l*17.4
rmApplied associate-/l*3.7
if -3.2487071020495243e+187 < (* x y) < 1.1649817974422874e+58Initial program 4.2
Taylor expanded around 0 4.1
rmApplied div-inv4.1
Applied associate-*r*4.1
Final simplification4.0
herbie shell --seed 2019303
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:precision binary64
:herbie-target
(if (< a -2.090464557976709e86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.14403070783397609e99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9) t)) (* a 2)))