x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right)\begin{array}{l}
\mathbf{if}\;x \cdot \left(\frac{y}{z} - \frac{t}{1 - z}\right) = -\infty:\\
\;\;\;\;\frac{x \cdot \left(y \cdot \sqrt[3]{1 - z} - z \cdot \left(\left(t \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{\frac{1}{1 - z}}\right)\right) \cdot \sqrt[3]{\frac{1}{1 - z}}\right)\right)}{z \cdot \sqrt[3]{1 - z}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{y}{z} - t \cdot \frac{1}{1 - z}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r271950 = x;
double r271951 = y;
double r271952 = z;
double r271953 = r271951 / r271952;
double r271954 = t;
double r271955 = 1.0;
double r271956 = r271955 - r271952;
double r271957 = r271954 / r271956;
double r271958 = r271953 - r271957;
double r271959 = r271950 * r271958;
return r271959;
}
double f(double x, double y, double z, double t) {
double r271960 = x;
double r271961 = y;
double r271962 = z;
double r271963 = r271961 / r271962;
double r271964 = t;
double r271965 = 1.0;
double r271966 = r271965 - r271962;
double r271967 = r271964 / r271966;
double r271968 = r271963 - r271967;
double r271969 = r271960 * r271968;
double r271970 = -inf.0;
bool r271971 = r271969 <= r271970;
double r271972 = cbrt(r271966);
double r271973 = r271961 * r271972;
double r271974 = 1.0;
double r271975 = cbrt(r271974);
double r271976 = r271974 / r271966;
double r271977 = cbrt(r271976);
double r271978 = r271975 * r271977;
double r271979 = r271964 * r271978;
double r271980 = r271979 * r271977;
double r271981 = r271962 * r271980;
double r271982 = r271973 - r271981;
double r271983 = r271960 * r271982;
double r271984 = r271962 * r271972;
double r271985 = r271983 / r271984;
double r271986 = r271964 * r271976;
double r271987 = r271963 - r271986;
double r271988 = r271960 * r271987;
double r271989 = r271971 ? r271985 : r271988;
return r271989;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 4.5 |
|---|---|
| Target | 4.1 |
| Herbie | 2.9 |
if (* x (- (/ y z) (/ t (- 1.0 z)))) < -inf.0Initial program 64.0
rmApplied div-inv64.0
rmApplied add-cube-cbrt64.0
Applied associate-*r*64.0
rmApplied cbrt-div64.0
Applied associate-*r/64.0
Applied frac-sub64.0
Applied associate-*r/0.2
Simplified0.2
if -inf.0 < (* x (- (/ y z) (/ t (- 1.0 z)))) Initial program 3.0
rmApplied div-inv3.0
Final simplification2.9
herbie shell --seed 2019304
(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.62322630331204244e-196) (* x (- (/ y z) (* t (/ 1 (- 1 z))))) (if (< (* x (- (/ y z) (/ t (- 1 z)))) 1.41339449277023022e-211) (+ (/ (* y x) z) (- (/ (* t x) (- 1 z)))) (* x (- (/ y z) (* t (/ 1 (- 1 z)))))))
(* x (- (/ y z) (/ t (- 1 z)))))