\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\frac{\sqrt[3]{x} \cdot \left(\left(\sqrt{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{x} \cdot \sqrt[3]{x}}}\right) \cdot \sqrt[3]{\sqrt[3]{x}}\right)}{y - z} \cdot \frac{\sqrt[3]{x}}{t - z}double f(double x, double y, double z, double t) {
double r977401 = x;
double r977402 = y;
double r977403 = z;
double r977404 = r977402 - r977403;
double r977405 = t;
double r977406 = r977405 - r977403;
double r977407 = r977404 * r977406;
double r977408 = r977401 / r977407;
return r977408;
}
double f(double x, double y, double z, double t) {
double r977409 = x;
double r977410 = cbrt(r977409);
double r977411 = r977410 * r977410;
double r977412 = cbrt(r977411);
double r977413 = sqrt(r977412);
double r977414 = r977413 * r977413;
double r977415 = cbrt(r977410);
double r977416 = r977414 * r977415;
double r977417 = r977410 * r977416;
double r977418 = y;
double r977419 = z;
double r977420 = r977418 - r977419;
double r977421 = r977417 / r977420;
double r977422 = t;
double r977423 = r977422 - r977419;
double r977424 = r977410 / r977423;
double r977425 = r977421 * r977424;
return r977425;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 8.1 |
| Herbie | 1.9 |
Initial program 7.4
rmApplied add-cube-cbrt7.9
Applied times-frac1.8
rmApplied add-cube-cbrt1.8
Applied cbrt-prod1.9
rmApplied add-sqr-sqrt1.9
Final simplification1.9
herbie shell --seed 2020056
(FPCore (x y z t)
:name "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, B"
:precision binary64
:herbie-target
(if (< (/ x (* (- y z) (- t z))) 0.0) (/ (/ x (- y z)) (- t z)) (* x (/ 1 (* (- y z) (- t z)))))
(/ x (* (- y z) (- t z))))