x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right)\begin{array}{l}
\mathbf{if}\;\frac{y}{z} - \frac{t}{1 - z} = -\infty:\\
\;\;\;\;\frac{x \cdot \left(\left(1 - z\right) \cdot y - t \cdot z\right)}{\left(1 - z\right) \cdot z}\\
\mathbf{elif}\;\frac{y}{z} - \frac{t}{1 - z} \le 1.986045605745200854539506088256694706869 \cdot 10^{273}:\\
\;\;\;\;\left(\frac{y}{z} - \frac{t}{1 - z}\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot \left(\left(1 - z\right) \cdot y - t \cdot z\right)}{\left(1 - z\right) \cdot z}\\
\end{array}double f(double x, double y, double z, double t) {
double r18193662 = x;
double r18193663 = y;
double r18193664 = z;
double r18193665 = r18193663 / r18193664;
double r18193666 = t;
double r18193667 = 1.0;
double r18193668 = r18193667 - r18193664;
double r18193669 = r18193666 / r18193668;
double r18193670 = r18193665 - r18193669;
double r18193671 = r18193662 * r18193670;
return r18193671;
}
double f(double x, double y, double z, double t) {
double r18193672 = y;
double r18193673 = z;
double r18193674 = r18193672 / r18193673;
double r18193675 = t;
double r18193676 = 1.0;
double r18193677 = r18193676 - r18193673;
double r18193678 = r18193675 / r18193677;
double r18193679 = r18193674 - r18193678;
double r18193680 = -inf.0;
bool r18193681 = r18193679 <= r18193680;
double r18193682 = x;
double r18193683 = r18193677 * r18193672;
double r18193684 = r18193675 * r18193673;
double r18193685 = r18193683 - r18193684;
double r18193686 = r18193682 * r18193685;
double r18193687 = r18193677 * r18193673;
double r18193688 = r18193686 / r18193687;
double r18193689 = 1.9860456057452009e+273;
bool r18193690 = r18193679 <= r18193689;
double r18193691 = r18193679 * r18193682;
double r18193692 = r18193690 ? r18193691 : r18193688;
double r18193693 = r18193681 ? r18193688 : r18193692;
return r18193693;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.8 |
|---|---|
| Target | 4.5 |
| Herbie | 1.3 |
if (- (/ y z) (/ t (- 1.0 z))) < -inf.0 or 1.9860456057452009e+273 < (- (/ y z) (/ t (- 1.0 z))) Initial program 49.4
rmApplied frac-sub50.1
Applied associate-*r/1.1
if -inf.0 < (- (/ y z) (/ t (- 1.0 z))) < 1.9860456057452009e+273Initial program 1.4
Final simplification1.3
herbie shell --seed 2019169
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, C"
:herbie-target
(if (< (* x (- (/ y z) (/ t (- 1.0 z)))) -7.623226303312042e-196) (* x (- (/ y z) (* t (/ 1.0 (- 1.0 z))))) (if (< (* x (- (/ y z) (/ t (- 1.0 z)))) 1.4133944927702302e-211) (+ (/ (* y x) z) (- (/ (* t x) (- 1.0 z)))) (* x (- (/ y z) (* t (/ 1.0 (- 1.0 z)))))))
(* x (- (/ y z) (/ t (- 1.0 z)))))