\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;a \cdot 2 \le -1.009474070510834454191666288237777213198 \cdot 10^{203}:\\
\;\;\;\;0.5 \cdot \left(\frac{x}{a} \cdot y\right) - 4.5 \cdot \frac{t \cdot z}{a}\\
\mathbf{elif}\;a \cdot 2 \le -112410025309132171858390548480:\\
\;\;\;\;0.5 \cdot \frac{x}{\frac{a}{y}} - \left(4.5 \cdot \frac{t}{\sqrt[3]{a} \cdot \sqrt[3]{a}}\right) \cdot \frac{z}{\sqrt[3]{a}}\\
\mathbf{elif}\;a \cdot 2 \le 5.942825833029072965236157261173754109009 \cdot 10^{-93}:\\
\;\;\;\;\frac{\mathsf{fma}\left(x, y, -\left(9 \cdot t\right) \cdot z\right)}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{x}{\frac{a}{y}} - \left(4.5 \cdot t\right) \cdot \frac{z}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r526112 = x;
double r526113 = y;
double r526114 = r526112 * r526113;
double r526115 = z;
double r526116 = 9.0;
double r526117 = r526115 * r526116;
double r526118 = t;
double r526119 = r526117 * r526118;
double r526120 = r526114 - r526119;
double r526121 = a;
double r526122 = 2.0;
double r526123 = r526121 * r526122;
double r526124 = r526120 / r526123;
return r526124;
}
double f(double x, double y, double z, double t, double a) {
double r526125 = a;
double r526126 = 2.0;
double r526127 = r526125 * r526126;
double r526128 = -1.0094740705108345e+203;
bool r526129 = r526127 <= r526128;
double r526130 = 0.5;
double r526131 = x;
double r526132 = r526131 / r526125;
double r526133 = y;
double r526134 = r526132 * r526133;
double r526135 = r526130 * r526134;
double r526136 = 4.5;
double r526137 = t;
double r526138 = z;
double r526139 = r526137 * r526138;
double r526140 = r526139 / r526125;
double r526141 = r526136 * r526140;
double r526142 = r526135 - r526141;
double r526143 = -1.1241002530913217e+29;
bool r526144 = r526127 <= r526143;
double r526145 = r526125 / r526133;
double r526146 = r526131 / r526145;
double r526147 = r526130 * r526146;
double r526148 = cbrt(r526125);
double r526149 = r526148 * r526148;
double r526150 = r526137 / r526149;
double r526151 = r526136 * r526150;
double r526152 = r526138 / r526148;
double r526153 = r526151 * r526152;
double r526154 = r526147 - r526153;
double r526155 = 5.942825833029073e-93;
bool r526156 = r526127 <= r526155;
double r526157 = 9.0;
double r526158 = r526157 * r526137;
double r526159 = r526158 * r526138;
double r526160 = -r526159;
double r526161 = fma(r526131, r526133, r526160);
double r526162 = r526161 / r526127;
double r526163 = r526136 * r526137;
double r526164 = r526138 / r526125;
double r526165 = r526163 * r526164;
double r526166 = r526147 - r526165;
double r526167 = r526156 ? r526162 : r526166;
double r526168 = r526144 ? r526154 : r526167;
double r526169 = r526129 ? r526142 : r526168;
return r526169;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 8.1 |
|---|---|
| Target | 5.8 |
| Herbie | 4.9 |
if (* a 2.0) < -1.0094740705108345e+203Initial program 14.9
Taylor expanded around 0 14.7
rmApplied associate-/l*11.8
rmApplied associate-/r/11.4
if -1.0094740705108345e+203 < (* a 2.0) < -1.1241002530913217e+29Initial program 11.6
Taylor expanded around 0 11.5
rmApplied associate-/l*8.6
rmApplied add-cube-cbrt8.9
Applied times-frac4.0
Applied associate-*r*4.0
if -1.1241002530913217e+29 < (* a 2.0) < 5.942825833029073e-93Initial program 1.8
rmApplied fma-neg1.8
rmApplied pow11.8
Applied pow11.8
Applied pow11.8
Applied pow-prod-down1.8
Applied pow-prod-down1.8
Simplified1.7
if 5.942825833029073e-93 < (* a 2.0) Initial program 9.7
Taylor expanded around 0 9.6
rmApplied associate-/l*8.1
rmApplied *-un-lft-identity8.1
Applied times-frac5.8
Applied associate-*r*5.9
Simplified5.9
Final simplification4.9
herbie shell --seed 2019304 +o rules:numerics
(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)))