\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 r38618488 = x;
double r38618489 = y;
double r38618490 = z;
double r38618491 = r38618489 * r38618490;
double r38618492 = r38618488 - r38618491;
double r38618493 = t;
double r38618494 = a;
double r38618495 = r38618494 * r38618490;
double r38618496 = r38618493 - r38618495;
double r38618497 = r38618492 / r38618496;
return r38618497;
}
double f(double x, double y, double z, double t, double a) {
double r38618498 = x;
double r38618499 = t;
double r38618500 = a;
double r38618501 = z;
double r38618502 = r38618500 * r38618501;
double r38618503 = r38618499 - r38618502;
double r38618504 = r38618498 / r38618503;
double r38618505 = y;
double r38618506 = cbrt(r38618503);
double r38618507 = r38618506 * r38618506;
double r38618508 = r38618505 / r38618507;
double r38618509 = r38618507 * r38618506;
double r38618510 = cbrt(r38618509);
double r38618511 = r38618501 / r38618510;
double r38618512 = r38618508 * r38618511;
double r38618513 = r38618504 - r38618512;
return r38618513;
}




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))))