\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -2.129992465558795124685168747083463536285 \cdot 10^{-8} \lor \neg \left(z \le 1.105778529535857557068218568937650049807 \cdot 10^{-83}\right):\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{x + 1} - \frac{\sqrt[3]{{\left(\frac{x}{t \cdot z - x}\right)}^{3}}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{x + 1}{x + \frac{\mathsf{fma}\left(y, z, -x\right)}{t \cdot z - x}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r479265 = x;
double r479266 = y;
double r479267 = z;
double r479268 = r479266 * r479267;
double r479269 = r479268 - r479265;
double r479270 = t;
double r479271 = r479270 * r479267;
double r479272 = r479271 - r479265;
double r479273 = r479269 / r479272;
double r479274 = r479265 + r479273;
double r479275 = 1.0;
double r479276 = r479265 + r479275;
double r479277 = r479274 / r479276;
return r479277;
}
double f(double x, double y, double z, double t) {
double r479278 = z;
double r479279 = -2.129992465558795e-08;
bool r479280 = r479278 <= r479279;
double r479281 = 1.1057785295358576e-83;
bool r479282 = r479278 <= r479281;
double r479283 = !r479282;
bool r479284 = r479280 || r479283;
double r479285 = y;
double r479286 = t;
double r479287 = r479286 * r479278;
double r479288 = x;
double r479289 = r479287 - r479288;
double r479290 = r479285 / r479289;
double r479291 = fma(r479290, r479278, r479288);
double r479292 = 1.0;
double r479293 = r479288 + r479292;
double r479294 = r479291 / r479293;
double r479295 = r479288 / r479289;
double r479296 = 3.0;
double r479297 = pow(r479295, r479296);
double r479298 = cbrt(r479297);
double r479299 = r479298 / r479293;
double r479300 = r479294 - r479299;
double r479301 = 1.0;
double r479302 = -r479288;
double r479303 = fma(r479285, r479278, r479302);
double r479304 = r479303 / r479289;
double r479305 = r479288 + r479304;
double r479306 = r479293 / r479305;
double r479307 = r479301 / r479306;
double r479308 = r479284 ? r479300 : r479307;
return r479308;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 7.0 |
|---|---|
| Target | 0.3 |
| Herbie | 2.6 |
if z < -2.129992465558795e-08 or 1.1057785295358576e-83 < z Initial program 12.6
rmApplied div-sub12.6
Applied associate-+r-12.6
Applied div-sub12.6
Simplified4.4
rmApplied add-cbrt-cube6.4
Applied add-cbrt-cube30.6
Applied cbrt-undiv30.6
Simplified4.6
if -2.129992465558795e-08 < z < 1.1057785295358576e-83Initial program 0.1
rmApplied div-inv0.1
rmApplied clear-num0.2
Simplified0.1
Final simplification2.6
herbie shell --seed 2019305 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))