\frac{x \cdot y}{z}x \cdot \frac{y}{z}double f(double x, double y, double z) {
double r425690 = x;
double r425691 = y;
double r425692 = r425690 * r425691;
double r425693 = z;
double r425694 = r425692 / r425693;
return r425694;
}
double f(double x, double y, double z) {
double r425695 = x;
double r425696 = y;
double r425697 = z;
double r425698 = r425696 / r425697;
double r425699 = r425695 * r425698;
return r425699;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 6.0 |
| Herbie | 6.5 |
if (* x y) < -5.357495374115059e+281Initial program 52.5
rmApplied associate-/l*0.3
if -5.357495374115059e+281 < (* x y) < -5.499425698847349e-297 or 3.914580834875209e-253 < (* x y) < 1.404435848755823e+159Initial program 0.2
if -5.499425698847349e-297 < (* x y) < 3.914580834875209e-253Initial program 16.0
rmApplied *-un-lft-identity16.0
Applied times-frac0.2
Simplified0.2
if 1.404435848755823e+159 < (* x y) Initial program 19.0
rmApplied associate-/l*2.0
rmApplied associate-/r/2.2
Final simplification6.5
herbie shell --seed 2019294
(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.70421306606504721e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))