\frac{x - y \cdot z}{t - a \cdot z}\frac{x - y \cdot z}{t - z \cdot a}double f(double x, double y, double z, double t, double a) {
double r32476533 = x;
double r32476534 = y;
double r32476535 = z;
double r32476536 = r32476534 * r32476535;
double r32476537 = r32476533 - r32476536;
double r32476538 = t;
double r32476539 = a;
double r32476540 = r32476539 * r32476535;
double r32476541 = r32476538 - r32476540;
double r32476542 = r32476537 / r32476541;
return r32476542;
}
double f(double x, double y, double z, double t, double a) {
double r32476543 = x;
double r32476544 = y;
double r32476545 = z;
double r32476546 = r32476544 * r32476545;
double r32476547 = r32476543 - r32476546;
double r32476548 = t;
double r32476549 = a;
double r32476550 = r32476545 * r32476549;
double r32476551 = r32476548 - r32476550;
double r32476552 = r32476547 / r32476551;
return r32476552;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.4 |
|---|---|
| Target | 1.7 |
| Herbie | 10.4 |
Initial program 10.4
rmApplied clear-num10.8
rmApplied *-un-lft-identity10.8
Applied *-un-lft-identity10.8
Applied times-frac10.8
Applied add-cube-cbrt10.8
Applied times-frac10.8
Simplified10.8
Simplified10.4
Final simplification10.4
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:herbie-target
(if (< z -32113435955957344.0) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))