\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;z \le -2.081581403037953128436994676205872025341 \cdot 10^{85} \lor \neg \left(z \le 1.802538819047318531632562944860211808714 \cdot 10^{72}\right):\\
\;\;\;\;\frac{a}{y} - \left(\frac{t}{y} + \frac{x}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot y + z \cdot \left(t - a\right)\right) \cdot \frac{1}{y + z \cdot \left(b - y\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r879100 = x;
double r879101 = y;
double r879102 = r879100 * r879101;
double r879103 = z;
double r879104 = t;
double r879105 = a;
double r879106 = r879104 - r879105;
double r879107 = r879103 * r879106;
double r879108 = r879102 + r879107;
double r879109 = b;
double r879110 = r879109 - r879101;
double r879111 = r879103 * r879110;
double r879112 = r879101 + r879111;
double r879113 = r879108 / r879112;
return r879113;
}
double f(double x, double y, double z, double t, double a, double b) {
double r879114 = z;
double r879115 = -2.081581403037953e+85;
bool r879116 = r879114 <= r879115;
double r879117 = 1.8025388190473185e+72;
bool r879118 = r879114 <= r879117;
double r879119 = !r879118;
bool r879120 = r879116 || r879119;
double r879121 = a;
double r879122 = y;
double r879123 = r879121 / r879122;
double r879124 = t;
double r879125 = r879124 / r879122;
double r879126 = x;
double r879127 = r879126 / r879114;
double r879128 = r879125 + r879127;
double r879129 = r879123 - r879128;
double r879130 = r879126 * r879122;
double r879131 = r879124 - r879121;
double r879132 = r879114 * r879131;
double r879133 = r879130 + r879132;
double r879134 = 1.0;
double r879135 = b;
double r879136 = r879135 - r879122;
double r879137 = r879114 * r879136;
double r879138 = r879122 + r879137;
double r879139 = r879134 / r879138;
double r879140 = r879133 * r879139;
double r879141 = r879120 ? r879129 : r879140;
return r879141;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 23.4 |
|---|---|
| Target | 18.4 |
| Herbie | 18.2 |
if z < -2.081581403037953e+85 or 1.8025388190473185e+72 < z Initial program 45.1
rmApplied add-cube-cbrt45.3
Applied add-cube-cbrt45.4
Applied prod-diff45.4
Applied distribute-lft-in45.9
Simplified45.8
Simplified45.3
Taylor expanded around inf 30.9
if -2.081581403037953e+85 < z < 1.8025388190473185e+72Initial program 10.7
rmApplied div-inv10.8
Final simplification18.2
herbie shell --seed 2019353 +o rules:numerics
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:precision binary64
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))