\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}}{\sqrt[3]{t - z} \cdot \sqrt[3]{t - z}} \cdot \frac{\frac{\sqrt[3]{x}}{\sqrt[3]{y - z}}}{\sqrt[3]{t - z}}double f(double x, double y, double z, double t) {
double r758596 = x;
double r758597 = y;
double r758598 = z;
double r758599 = r758597 - r758598;
double r758600 = t;
double r758601 = r758600 - r758598;
double r758602 = r758599 * r758601;
double r758603 = r758596 / r758602;
return r758603;
}
double f(double x, double y, double z, double t) {
double r758604 = x;
double r758605 = cbrt(r758604);
double r758606 = r758605 * r758605;
double r758607 = y;
double r758608 = z;
double r758609 = r758607 - r758608;
double r758610 = cbrt(r758609);
double r758611 = r758610 * r758610;
double r758612 = r758606 / r758611;
double r758613 = t;
double r758614 = r758613 - r758608;
double r758615 = cbrt(r758614);
double r758616 = r758615 * r758615;
double r758617 = r758612 / r758616;
double r758618 = r758605 / r758610;
double r758619 = r758618 / r758615;
double r758620 = r758617 * r758619;
return r758620;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 8.1 |
| Herbie | 1.3 |
Initial program 7.3
rmApplied associate-/r*2.1
rmApplied add-cube-cbrt2.7
Applied add-cube-cbrt3.0
Applied add-cube-cbrt3.1
Applied times-frac3.1
Applied times-frac1.3
Final simplification1.3
herbie shell --seed 2020062
(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))))