x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right)\left(\left(x \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}}\right) \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}} + x \cdot \left(-\frac{t}{1 - z}\right)double f(double x, double y, double z, double t) {
double r349258 = x;
double r349259 = y;
double r349260 = z;
double r349261 = r349259 / r349260;
double r349262 = t;
double r349263 = 1.0;
double r349264 = r349263 - r349260;
double r349265 = r349262 / r349264;
double r349266 = r349261 - r349265;
double r349267 = r349258 * r349266;
return r349267;
}
double f(double x, double y, double z, double t) {
double r349268 = x;
double r349269 = y;
double r349270 = cbrt(r349269);
double r349271 = z;
double r349272 = cbrt(r349271);
double r349273 = r349270 / r349272;
double r349274 = r349268 * r349273;
double r349275 = r349274 * r349273;
double r349276 = r349275 * r349273;
double r349277 = t;
double r349278 = 1.0;
double r349279 = r349278 - r349271;
double r349280 = r349277 / r349279;
double r349281 = -r349280;
double r349282 = r349268 * r349281;
double r349283 = r349276 + r349282;
return r349283;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.8 |
|---|---|
| Target | 4.4 |
| Herbie | 1.4 |
Initial program 4.8
rmApplied sub-neg4.8
Applied distribute-lft-in4.8
rmApplied add-cube-cbrt5.3
Applied add-cube-cbrt5.4
Applied times-frac5.4
Applied associate-*r*1.8
rmApplied times-frac1.8
Applied associate-*r*1.4
Final simplification1.4
herbie shell --seed 2019356 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, C"
:precision binary64
:herbie-target
(if (< (* x (- (/ y z) (/ t (- 1 z)))) -7.623226303312042e-196) (* x (- (/ y z) (* t (/ 1 (- 1 z))))) (if (< (* x (- (/ y z) (/ t (- 1 z)))) 1.4133944927702302e-211) (+ (/ (* y x) z) (- (/ (* t x) (- 1 z)))) (* x (- (/ y z) (* t (/ 1 (- 1 z)))))))
(* x (- (/ y z) (/ t (- 1 z)))))