\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 r695392 = x;
double r695393 = y;
double r695394 = r695392 * r695393;
double r695395 = z;
double r695396 = r695394 / r695395;
return r695396;
}
double f(double x, double y, double z) {
double r695397 = x;
double r695398 = cbrt(r695397);
double r695399 = r695398 * r695398;
double r695400 = z;
double r695401 = cbrt(r695400);
double r695402 = r695401 * r695401;
double r695403 = y;
double r695404 = cbrt(r695403);
double r695405 = r695404 * r695404;
double r695406 = r695402 / r695405;
double r695407 = r695399 / r695406;
double r695408 = r695401 / r695404;
double r695409 = r695398 / r695408;
double r695410 = r695407 * r695409;
return r695410;
}




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
(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))