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 r431312 = x;
double r431313 = y;
double r431314 = z;
double r431315 = r431313 / r431314;
double r431316 = t;
double r431317 = 1.0;
double r431318 = r431317 - r431314;
double r431319 = r431316 / r431318;
double r431320 = r431315 - r431319;
double r431321 = r431312 * r431320;
return r431321;
}
double f(double x, double y, double z, double t) {
double r431322 = x;
double r431323 = y;
double r431324 = cbrt(r431323);
double r431325 = z;
double r431326 = cbrt(r431325);
double r431327 = r431324 / r431326;
double r431328 = r431322 * r431327;
double r431329 = r431328 * r431327;
double r431330 = r431329 * r431327;
double r431331 = t;
double r431332 = 1.0;
double r431333 = r431332 - r431325;
double r431334 = r431331 / r431333;
double r431335 = -r431334;
double r431336 = r431322 * r431335;
double r431337 = r431330 + r431336;
return r431337;
}




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