\frac{x \cdot y}{z}x \cdot \frac{y}{z}double f(double x, double y, double z) {
double r447064 = x;
double r447065 = y;
double r447066 = r447064 * r447065;
double r447067 = z;
double r447068 = r447066 / r447067;
return r447068;
}
double f(double x, double y, double z) {
double r447069 = x;
double r447070 = y;
double r447071 = z;
double r447072 = r447070 / r447071;
double r447073 = r447069 * r447072;
return r447073;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 5.8 |
| Herbie | 5.9 |
if (* x y) < -7.814875792411794e-205 or 2.3509053306716985e-193 < (* x y) < 1.376680785759135e+84Initial program 2.7
rmApplied *-un-lft-identity2.7
Applied times-frac8.5
Simplified8.5
rmApplied associate-*r/2.7
if -7.814875792411794e-205 < (* x y) < 2.3509053306716985e-193Initial program 9.8
rmApplied *-un-lft-identity9.8
Applied times-frac0.6
Simplified0.6
if 1.376680785759135e+84 < (* x y) Initial program 12.8
rmApplied associate-/l*5.2
rmApplied associate-/r/4.5
Final simplification5.9
herbie shell --seed 2019291
(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))