\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}double f(double x, double y, double z, double t, double a, double b) {
double r416359 = x;
double r416360 = y;
double r416361 = z;
double r416362 = r416360 * r416361;
double r416363 = t;
double r416364 = r416362 / r416363;
double r416365 = r416359 + r416364;
double r416366 = a;
double r416367 = 1.0;
double r416368 = r416366 + r416367;
double r416369 = b;
double r416370 = r416360 * r416369;
double r416371 = r416370 / r416363;
double r416372 = r416368 + r416371;
double r416373 = r416365 / r416372;
return r416373;
}
double f(double x, double y, double z, double t, double a, double b) {
double r416374 = x;
double r416375 = y;
double r416376 = t;
double r416377 = z;
double r416378 = r416376 / r416377;
double r416379 = r416375 / r416378;
double r416380 = r416374 + r416379;
double r416381 = a;
double r416382 = 1.0;
double r416383 = r416381 + r416382;
double r416384 = b;
double r416385 = r416375 * r416384;
double r416386 = r416385 / r416376;
double r416387 = r416383 + r416386;
double r416388 = r416380 / r416387;
return r416388;
}




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.4 |
|---|---|
| Target | 13.4 |
| Herbie | 16.9 |
if y < 6.96560110865768e-39Initial program 12.8
rmApplied div-inv12.8
rmApplied div-inv12.8
Simplified12.8
if 6.96560110865768e-39 < y Initial program 26.2
rmApplied associate-/l*23.1
Final simplification16.9
herbie shell --seed 2019298
(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))))