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 r311843 = x;
double r311844 = y;
double r311845 = z;
double r311846 = r311845 - r311843;
double r311847 = r311844 * r311846;
double r311848 = t;
double r311849 = r311847 / r311848;
double r311850 = r311843 + r311849;
return r311850;
}
double f(double x, double y, double z, double t) {
double r311851 = t;
double r311852 = -4.0241106906361557e-54;
bool r311853 = r311851 <= r311852;
double r311854 = x;
double r311855 = y;
double r311856 = z;
double r311857 = r311856 / r311851;
double r311858 = r311854 / r311851;
double r311859 = r311857 - r311858;
double r311860 = r311855 * r311859;
double r311861 = r311854 + r311860;
double r311862 = 4.4825416426582985e-266;
bool r311863 = r311851 <= r311862;
double r311864 = 1.0;
double r311865 = r311856 - r311854;
double r311866 = r311855 * r311865;
double r311867 = r311851 / r311866;
double r311868 = r311864 / r311867;
double r311869 = r311854 + r311868;
double r311870 = cbrt(r311855);
double r311871 = r311870 * r311870;
double r311872 = cbrt(r311851);
double r311873 = r311871 / r311872;
double r311874 = r311870 / r311872;
double r311875 = r311865 / r311872;
double r311876 = r311874 * r311875;
double r311877 = r311873 * r311876;
double r311878 = r311854 + r311877;
double r311879 = r311863 ? r311869 : r311878;
double r311880 = r311853 ? r311861 : r311879;
return r311880;
}




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)))