\frac{x \cdot y}{z}\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}} \cdot \frac{\sqrt[3]{x}}{\frac{\sqrt[3]{z}}{\sqrt[3]{y}}}double f(double x, double y, double z) {
double r441579 = x;
double r441580 = y;
double r441581 = r441579 * r441580;
double r441582 = z;
double r441583 = r441581 / r441582;
return r441583;
}
double f(double x, double y, double z) {
double r441584 = x;
double r441585 = cbrt(r441584);
double r441586 = r441585 * r441585;
double r441587 = z;
double r441588 = cbrt(r441587);
double r441589 = r441588 * r441588;
double r441590 = y;
double r441591 = cbrt(r441590);
double r441592 = r441591 * r441591;
double r441593 = r441589 / r441592;
double r441594 = r441586 / r441593;
double r441595 = r441588 / r441591;
double r441596 = r441585 / r441595;
double r441597 = r441594 * r441596;
return r441597;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 6.3 |
| Herbie | 2.2 |
Initial program 6.2
rmApplied associate-/l*6.4
rmApplied add-cube-cbrt7.2
Applied add-cube-cbrt7.4
Applied times-frac7.4
Applied add-cube-cbrt7.5
Applied times-frac2.2
Final simplification2.2
herbie shell --seed 2019347 +o rules:numerics
(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))