x + \frac{y \cdot \left(z - x\right)}{t}\begin{array}{l}
\mathbf{if}\;t \le -4.024110690636155670064376141757827793703 \cdot 10^{-54}:\\
\;\;\;\;x + y \cdot \left(\frac{z}{t} - \frac{x}{t}\right)\\
\mathbf{elif}\;t \le 4.482541642658298470975327978871003617787 \cdot 10^{-266}:\\
\;\;\;\;x + \frac{1}{\frac{t}{y \cdot \left(z - x\right)}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{t}} \cdot \left(\frac{\sqrt[3]{y}}{\sqrt[3]{t}} \cdot \frac{z - x}{\sqrt[3]{t}}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r312951 = x;
double r312952 = y;
double r312953 = z;
double r312954 = r312953 - r312951;
double r312955 = r312952 * r312954;
double r312956 = t;
double r312957 = r312955 / r312956;
double r312958 = r312951 + r312957;
return r312958;
}
double f(double x, double y, double z, double t) {
double r312959 = t;
double r312960 = -4.0241106906361557e-54;
bool r312961 = r312959 <= r312960;
double r312962 = x;
double r312963 = y;
double r312964 = z;
double r312965 = r312964 / r312959;
double r312966 = r312962 / r312959;
double r312967 = r312965 - r312966;
double r312968 = r312963 * r312967;
double r312969 = r312962 + r312968;
double r312970 = 4.4825416426582985e-266;
bool r312971 = r312959 <= r312970;
double r312972 = 1.0;
double r312973 = r312964 - r312962;
double r312974 = r312963 * r312973;
double r312975 = r312959 / r312974;
double r312976 = r312972 / r312975;
double r312977 = r312962 + r312976;
double r312978 = cbrt(r312963);
double r312979 = r312978 * r312978;
double r312980 = cbrt(r312959);
double r312981 = r312979 / r312980;
double r312982 = r312978 / r312980;
double r312983 = r312973 / r312980;
double r312984 = r312982 * r312983;
double r312985 = r312981 * r312984;
double r312986 = r312962 + r312985;
double r312987 = r312971 ? r312977 : r312986;
double r312988 = r312961 ? r312969 : r312987;
return r312988;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 2.2 |
| Herbie | 1.8 |
if t < -4.0241106906361557e-54Initial program 8.6
rmApplied add-cube-cbrt8.9
Applied times-frac0.9
Taylor expanded around 0 8.6
Simplified1.3
if -4.0241106906361557e-54 < t < 4.4825416426582985e-266Initial program 2.3
rmApplied clear-num2.4
if 4.4825416426582985e-266 < t Initial program 6.2
rmApplied add-cube-cbrt6.7
Applied times-frac2.8
rmApplied add-cube-cbrt2.9
Applied times-frac2.9
Applied associate-*l*2.0
Final simplification1.8
herbie shell --seed 2019323
(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)))