x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;t \le -1.587122080323390289480100433348702966458 \cdot 10^{58}:\\
\;\;\;\;y \cdot \frac{z - x}{t} + x\\
\mathbf{elif}\;t \le 6.204649366460223122009107028759053602807 \cdot 10^{83}:\\
\;\;\;\;x + \frac{\left(z - x\right) \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}\right) \cdot \left(\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{z - x}\right) \cdot \frac{\sqrt[3]{y}}{t}\right) + x\\
\end{array}double f(double x, double y, double z, double t) {
double r206076 = x;
double r206077 = y;
double r206078 = z;
double r206079 = r206078 - r206076;
double r206080 = r206077 * r206079;
double r206081 = t;
double r206082 = r206080 / r206081;
double r206083 = r206076 + r206082;
return r206083;
}
double f(double x, double y, double z, double t) {
double r206084 = t;
double r206085 = -1.5871220803233903e+58;
bool r206086 = r206084 <= r206085;
double r206087 = y;
double r206088 = z;
double r206089 = x;
double r206090 = r206088 - r206089;
double r206091 = r206090 / r206084;
double r206092 = r206087 * r206091;
double r206093 = r206092 + r206089;
double r206094 = 6.204649366460223e+83;
bool r206095 = r206084 <= r206094;
double r206096 = r206090 * r206087;
double r206097 = r206096 / r206084;
double r206098 = r206089 + r206097;
double r206099 = cbrt(r206090);
double r206100 = r206099 * r206099;
double r206101 = cbrt(r206087);
double r206102 = r206101 * r206101;
double r206103 = r206102 * r206099;
double r206104 = r206101 / r206084;
double r206105 = r206103 * r206104;
double r206106 = r206100 * r206105;
double r206107 = r206106 + r206089;
double r206108 = r206095 ? r206098 : r206107;
double r206109 = r206086 ? r206093 : r206108;
return r206109;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.5 |
|---|---|
| Target | 2.0 |
| Herbie | 1.6 |
if t < -1.5871220803233903e+58Initial program 11.1
Simplified1.2
rmApplied fma-udef1.2
Simplified1.2
rmApplied add-cube-cbrt1.5
Applied associate-*l*1.5
Taylor expanded around 0 11.1
Simplified1.2
if -1.5871220803233903e+58 < t < 6.204649366460223e+83Initial program 2.0
Simplified2.6
rmApplied fma-udef2.6
Simplified2.6
rmApplied pow12.6
Applied pow12.6
Applied pow-prod-down2.6
Simplified2.0
if 6.204649366460223e+83 < t Initial program 11.1
Simplified1.4
rmApplied fma-udef1.4
Simplified1.4
rmApplied add-cube-cbrt1.7
Applied associate-*l*1.7
rmApplied *-un-lft-identity1.7
Applied add-cube-cbrt1.8
Applied times-frac1.8
Applied associate-*r*1.2
Simplified1.2
Final simplification1.6
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x y z t)
:name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"
:precision binary64
:herbie-target
(- x (+ (* x (/ y t)) (* (- z) (/ y t))))
(+ x (/ (* y (- z x)) t)))