\frac{\frac{1}{x}}{y \cdot \left(1 + z \cdot z\right)}\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{y} \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{1}}{x}} \cdot \sqrt[3]{\frac{\sqrt[3]{1}}{x}}}{\sqrt[3]{1 + z \cdot z} \cdot \sqrt[3]{1 + z \cdot z}}\right) \cdot \frac{\sqrt[3]{\frac{\sqrt[3]{1}}{x}}}{\sqrt[3]{1 + z \cdot z}}double f(double x, double y, double z) {
double r1637 = 1.0;
double r1638 = x;
double r1639 = r1637 / r1638;
double r1640 = y;
double r1641 = z;
double r1642 = r1641 * r1641;
double r1643 = r1637 + r1642;
double r1644 = r1640 * r1643;
double r1645 = r1639 / r1644;
return r1645;
}
double f(double x, double y, double z) {
double r1646 = 1.0;
double r1647 = cbrt(r1646);
double r1648 = r1647 * r1647;
double r1649 = y;
double r1650 = r1648 / r1649;
double r1651 = x;
double r1652 = r1647 / r1651;
double r1653 = cbrt(r1652);
double r1654 = r1653 * r1653;
double r1655 = z;
double r1656 = r1655 * r1655;
double r1657 = r1646 + r1656;
double r1658 = cbrt(r1657);
double r1659 = r1658 * r1658;
double r1660 = r1654 / r1659;
double r1661 = r1650 * r1660;
double r1662 = r1653 / r1658;
double r1663 = r1661 * r1662;
return r1663;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.5 |
|---|---|
| Target | 5.7 |
| Herbie | 5.8 |
Initial program 6.5
rmApplied *-un-lft-identity6.5
Applied add-cube-cbrt6.5
Applied times-frac6.5
Applied times-frac6.5
Simplified6.5
rmApplied add-cube-cbrt6.7
Applied add-cube-cbrt7.1
Applied times-frac7.1
Applied associate-*r*5.8
Final simplification5.8
herbie shell --seed 2020025
(FPCore (x y z)
:name "Statistics.Distribution.CauchyLorentz:$cdensity from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(if (< (* y (+ 1 (* z z))) #f) (/ (/ 1 y) (* (+ 1 (* z z)) x)) (if (< (* y (+ 1 (* z z))) 8.680743250567252e+305) (/ (/ 1 x) (* (+ 1 (* z z)) y)) (/ (/ 1 y) (* (+ 1 (* z z)) x))))
(/ (/ 1 x) (* y (+ 1 (* z z)))))