x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right)x \cdot \left(\frac{y}{z} - t \cdot \frac{1}{1 - z}\right)double f(double x, double y, double z, double t) {
double r481584 = x;
double r481585 = y;
double r481586 = z;
double r481587 = r481585 / r481586;
double r481588 = t;
double r481589 = 1.0;
double r481590 = r481589 - r481586;
double r481591 = r481588 / r481590;
double r481592 = r481587 - r481591;
double r481593 = r481584 * r481592;
return r481593;
}
double f(double x, double y, double z, double t) {
double r481594 = x;
double r481595 = y;
double r481596 = z;
double r481597 = r481595 / r481596;
double r481598 = t;
double r481599 = 1.0;
double r481600 = 1.0;
double r481601 = r481600 - r481596;
double r481602 = r481599 / r481601;
double r481603 = r481598 * r481602;
double r481604 = r481597 - r481603;
double r481605 = r481594 * r481604;
return r481605;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.8 |
|---|---|
| Target | 4.4 |
| Herbie | 4.8 |
Initial program 4.8
rmApplied div-inv4.8
Final simplification4.8
herbie shell --seed 2020047 +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)))))