\frac{x \cdot y}{z}\left(\frac{\sqrt[3]{y}}{\sqrt[3]{z}} \cdot \left(x \cdot \frac{\sqrt[3]{y}}{\sqrt[3]{z}}\right)\right) \cdot \frac{\sqrt[3]{-y} \cdot \sqrt[3]{-1}}{\sqrt[3]{z}}(FPCore (x y z) :precision binary64 (/ (* x y) z))
(FPCore (x y z) :precision binary64 (* (* (/ (cbrt y) (cbrt z)) (* x (/ (cbrt y) (cbrt z)))) (/ (* (cbrt (- y)) (cbrt -1.0)) (cbrt z))))
double code(double x, double y, double z) {
return (x * y) / z;
}
double code(double x, double y, double z) {
return ((cbrt(y) / cbrt(z)) * (x * (cbrt(y) / cbrt(z)))) * ((cbrt(-y) * cbrt(-1.0)) / cbrt(z));
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.4 |
|---|---|
| Target | 6.0 |
| Herbie | 1.4 |
Initial program 6.4
rmApplied *-un-lft-identity_binary64_181516.4
Applied times-frac_binary64_181576.3
Simplified6.3
rmApplied add-cube-cbrt_binary64_181867.1
Applied add-cube-cbrt_binary64_181867.3
Applied times-frac_binary64_181577.3
Applied associate-*r*_binary64_180912.0
rmApplied times-frac_binary64_181572.0
Applied associate-*r*_binary64_180911.4
Taylor expanded around -inf 33.9
Simplified1.4
Final simplification1.4
herbie shell --seed 2020322
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -4.262230790519429e-138) (/ (* x y) z) (if (< z 1.7042130660650472e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))