\frac{x - y \cdot z}{t - a \cdot z}x \cdot \frac{1}{t - a \cdot z} - \frac{y}{\frac{t}{z} - a}double f(double x, double y, double z, double t, double a) {
double r755342 = x;
double r755343 = y;
double r755344 = z;
double r755345 = r755343 * r755344;
double r755346 = r755342 - r755345;
double r755347 = t;
double r755348 = a;
double r755349 = r755348 * r755344;
double r755350 = r755347 - r755349;
double r755351 = r755346 / r755350;
return r755351;
}
double f(double x, double y, double z, double t, double a) {
double r755352 = x;
double r755353 = 1.0;
double r755354 = t;
double r755355 = a;
double r755356 = z;
double r755357 = r755355 * r755356;
double r755358 = r755354 - r755357;
double r755359 = r755353 / r755358;
double r755360 = r755352 * r755359;
double r755361 = y;
double r755362 = r755354 / r755356;
double r755363 = r755362 - r755355;
double r755364 = r755361 / r755363;
double r755365 = r755360 - r755364;
return r755365;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.6 |
|---|---|
| Target | 1.7 |
| Herbie | 3.1 |
Initial program 10.6
rmApplied div-sub10.6
rmApplied associate-/l*8.2
rmApplied div-sub8.2
Simplified3.1
rmApplied div-inv3.1
Final simplification3.1
herbie shell --seed 2020062
(FPCore (x y z t a)
:name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -32113435955957344) (- (/ 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))))