\frac{x - y \cdot z}{t - a \cdot z}\frac{x}{t - a \cdot z} - \frac{y}{\sqrt[3]{t - a \cdot z} \cdot \sqrt[3]{t - a \cdot z}} \cdot \frac{z}{\sqrt[3]{\left(\sqrt[3]{t - a \cdot z} \cdot \sqrt[3]{t - a \cdot z}\right) \cdot \sqrt[3]{t - a \cdot z}}}double f(double x, double y, double z, double t, double a) {
double r32024310 = x;
double r32024311 = y;
double r32024312 = z;
double r32024313 = r32024311 * r32024312;
double r32024314 = r32024310 - r32024313;
double r32024315 = t;
double r32024316 = a;
double r32024317 = r32024316 * r32024312;
double r32024318 = r32024315 - r32024317;
double r32024319 = r32024314 / r32024318;
return r32024319;
}
double f(double x, double y, double z, double t, double a) {
double r32024320 = x;
double r32024321 = t;
double r32024322 = a;
double r32024323 = z;
double r32024324 = r32024322 * r32024323;
double r32024325 = r32024321 - r32024324;
double r32024326 = r32024320 / r32024325;
double r32024327 = y;
double r32024328 = cbrt(r32024325);
double r32024329 = r32024328 * r32024328;
double r32024330 = r32024327 / r32024329;
double r32024331 = r32024329 * r32024328;
double r32024332 = cbrt(r32024331);
double r32024333 = r32024323 / r32024332;
double r32024334 = r32024330 * r32024333;
double r32024335 = r32024326 - r32024334;
return r32024335;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.3 |
|---|---|
| Target | 1.8 |
| Herbie | 8.8 |
Initial program 10.3
rmApplied div-sub10.3
rmApplied add-cube-cbrt10.6
Applied times-frac8.8
rmApplied add-cbrt-cube8.8
Final simplification8.8
herbie shell --seed 2019162
(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))))