x + \frac{y \cdot \left(z - x\right)}{t}x + \left(y \cdot \frac{\sqrt[3]{z - x} \cdot \sqrt[3]{z - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right) \cdot \frac{\sqrt[3]{z - x}}{\sqrt[3]{t}}double f(double x, double y, double z, double t) {
double r325957 = x;
double r325958 = y;
double r325959 = z;
double r325960 = r325959 - r325957;
double r325961 = r325958 * r325960;
double r325962 = t;
double r325963 = r325961 / r325962;
double r325964 = r325957 + r325963;
return r325964;
}
double f(double x, double y, double z, double t) {
double r325965 = x;
double r325966 = y;
double r325967 = z;
double r325968 = r325967 - r325965;
double r325969 = cbrt(r325968);
double r325970 = r325969 * r325969;
double r325971 = t;
double r325972 = cbrt(r325971);
double r325973 = r325972 * r325972;
double r325974 = r325970 / r325973;
double r325975 = r325966 * r325974;
double r325976 = r325969 / r325972;
double r325977 = r325975 * r325976;
double r325978 = r325965 + r325977;
return r325978;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.8 |
|---|---|
| Target | 2.1 |
| Herbie | 1.7 |
Initial program 6.8
rmApplied *-un-lft-identity6.8
Applied times-frac6.2
Simplified6.2
rmApplied add-cube-cbrt6.7
Applied add-cube-cbrt6.8
Applied times-frac6.8
Applied associate-*r*1.7
Final simplification1.7
herbie shell --seed 2019303
(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)))