\frac{x \cdot y}{z}x \cdot \frac{y}{z}double f(double x, double y, double z) {
double r499618 = x;
double r499619 = y;
double r499620 = r499618 * r499619;
double r499621 = z;
double r499622 = r499620 / r499621;
return r499622;
}
double f(double x, double y, double z) {
double r499623 = x;
double r499624 = y;
double r499625 = z;
double r499626 = r499624 / r499625;
double r499627 = r499623 * r499626;
return r499627;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.9 |
|---|---|
| Target | 6.3 |
| Herbie | 6.6 |
if (* x y) < -4.091021436327941e+243Initial program 36.6
rmApplied associate-/l*0.3
if -4.091021436327941e+243 < (* x y) < -1.8190585865820965e-194 or 7.3024493326939e-200 < (* x y) < 3.0601772089715925e+243Initial program 0.2
if -1.8190585865820965e-194 < (* x y) < 7.3024493326939e-200 or 3.0601772089715925e+243 < (* x y) Initial program 13.4
rmApplied *-un-lft-identity13.4
Applied times-frac0.5
Simplified0.5
Final simplification6.6
herbie shell --seed 1978988140
(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))