\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 r702512 = x;
double r702513 = y;
double r702514 = r702512 * r702513;
double r702515 = z;
double r702516 = r702514 / r702515;
return r702516;
}
double f(double x, double y, double z) {
double r702517 = x;
double r702518 = cbrt(r702517);
double r702519 = r702518 * r702518;
double r702520 = z;
double r702521 = cbrt(r702520);
double r702522 = r702521 * r702521;
double r702523 = y;
double r702524 = cbrt(r702523);
double r702525 = r702524 * r702524;
double r702526 = r702522 / r702525;
double r702527 = r702519 / r702526;
double r702528 = r702521 / r702524;
double r702529 = r702518 / r702528;
double r702530 = r702527 * r702529;
return r702530;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.5 |
|---|---|
| Target | 6.0 |
| Herbie | 2.1 |
Initial program 6.5
rmApplied associate-/l*6.0
rmApplied add-cube-cbrt6.8
Applied add-cube-cbrt7.0
Applied times-frac7.0
Applied add-cube-cbrt7.1
Applied times-frac2.1
Final simplification2.1
herbie shell --seed 2020047 +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))