\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}double f(double x, double y, double z, double t, double a, double b) {
double r483207 = x;
double r483208 = y;
double r483209 = z;
double r483210 = r483208 * r483209;
double r483211 = t;
double r483212 = r483210 / r483211;
double r483213 = r483207 + r483212;
double r483214 = a;
double r483215 = 1.0;
double r483216 = r483214 + r483215;
double r483217 = b;
double r483218 = r483208 * r483217;
double r483219 = r483218 / r483211;
double r483220 = r483216 + r483219;
double r483221 = r483213 / r483220;
return r483221;
}
double f(double x, double y, double z, double t, double a, double b) {
double r483222 = x;
double r483223 = y;
double r483224 = z;
double r483225 = r483223 * r483224;
double r483226 = t;
double r483227 = r483225 / r483226;
double r483228 = r483222 + r483227;
double r483229 = a;
double r483230 = 1.0;
double r483231 = r483229 + r483230;
double r483232 = b;
double r483233 = r483223 * r483232;
double r483234 = r483233 / r483226;
double r483235 = r483231 + r483234;
double r483236 = r483228 / r483235;
return r483236;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 16.6 |
|---|---|
| Target | 12.9 |
| Herbie | 16.6 |
if t < -2.2817596076120453e-54 or 1.055181792592207e-16 < t Initial program 11.6
rmApplied add-cube-cbrt11.7
Applied associate-/r*11.7
rmApplied *-un-lft-identity11.7
Applied *-un-lft-identity11.7
Applied times-frac11.7
Simplified11.7
Simplified8.9
rmApplied *-un-lft-identity8.9
Applied times-frac4.7
Simplified4.7
if -2.2817596076120453e-54 < t < 1.055181792592207e-16Initial program 23.0
rmApplied div-inv23.1
Final simplification16.6
herbie shell --seed 2019291
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b))))) (if (< t 3.0369671037372459e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))