\frac{x - y \cdot z}{t - a \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -4.665105640857500107938904410076474960078 \cdot 10^{-4} \lor \neg \left(z \le 56659057657764167215480832\right):\\
\;\;\;\;\left(\sqrt[3]{\frac{x}{t - a \cdot z}} \cdot \sqrt[3]{\frac{x}{t - a \cdot z}}\right) \cdot \sqrt[3]{\frac{x}{t - a \cdot z}} - \frac{y}{\frac{t}{z} - a}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{t - a \cdot z} - \left(y \cdot z\right) \cdot \frac{1}{t - a \cdot z}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r584209 = x;
double r584210 = y;
double r584211 = z;
double r584212 = r584210 * r584211;
double r584213 = r584209 - r584212;
double r584214 = t;
double r584215 = a;
double r584216 = r584215 * r584211;
double r584217 = r584214 - r584216;
double r584218 = r584213 / r584217;
return r584218;
}
double f(double x, double y, double z, double t, double a) {
double r584219 = z;
double r584220 = -0.00046651056408575;
bool r584221 = r584219 <= r584220;
double r584222 = 5.665905765776417e+25;
bool r584223 = r584219 <= r584222;
double r584224 = !r584223;
bool r584225 = r584221 || r584224;
double r584226 = x;
double r584227 = t;
double r584228 = a;
double r584229 = r584228 * r584219;
double r584230 = r584227 - r584229;
double r584231 = r584226 / r584230;
double r584232 = cbrt(r584231);
double r584233 = r584232 * r584232;
double r584234 = r584233 * r584232;
double r584235 = y;
double r584236 = r584227 / r584219;
double r584237 = r584236 - r584228;
double r584238 = r584235 / r584237;
double r584239 = r584234 - r584238;
double r584240 = r584235 * r584219;
double r584241 = 1.0;
double r584242 = r584241 / r584230;
double r584243 = r584240 * r584242;
double r584244 = r584231 - r584243;
double r584245 = r584225 ? r584239 : r584244;
return r584245;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.8 |
|---|---|
| Target | 1.6 |
| Herbie | 1.6 |
if z < -0.00046651056408575 or 5.665905765776417e+25 < z Initial program 22.0
rmApplied div-sub22.0
Simplified13.9
rmApplied pow113.9
Applied pow113.9
Applied pow-prod-down13.9
Simplified2.6
rmApplied add-cube-cbrt2.9
if -0.00046651056408575 < z < 5.665905765776417e+25Initial program 0.3
rmApplied div-sub0.3
Simplified2.8
rmApplied div-inv2.9
Applied associate-*r*0.3
Final simplification1.6
herbie shell --seed 2019306
(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.51395223729782958e-86) (* (- x (* y z)) (/ 1 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))
(/ (- x (* y z)) (- t (* a z))))