x + \frac{\left(y - z\right) \cdot t}{a - z}\begin{array}{l}
\mathbf{if}\;t \le -6.012545261316454786172528157872615913891 \cdot 10^{-96} \lor \neg \left(t \le 2.588908446285731015618837526142587793708 \cdot 10^{-201}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a - z} - \frac{z}{a - z}, t, x\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\left(\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}\right) \cdot \left(\sqrt[3]{y - z} \cdot t\right)}{a - z}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r404201 = x;
double r404202 = y;
double r404203 = z;
double r404204 = r404202 - r404203;
double r404205 = t;
double r404206 = r404204 * r404205;
double r404207 = a;
double r404208 = r404207 - r404203;
double r404209 = r404206 / r404208;
double r404210 = r404201 + r404209;
return r404210;
}
double f(double x, double y, double z, double t, double a) {
double r404211 = t;
double r404212 = -6.012545261316455e-96;
bool r404213 = r404211 <= r404212;
double r404214 = 2.588908446285731e-201;
bool r404215 = r404211 <= r404214;
double r404216 = !r404215;
bool r404217 = r404213 || r404216;
double r404218 = y;
double r404219 = a;
double r404220 = z;
double r404221 = r404219 - r404220;
double r404222 = r404218 / r404221;
double r404223 = r404220 / r404221;
double r404224 = r404222 - r404223;
double r404225 = x;
double r404226 = fma(r404224, r404211, r404225);
double r404227 = r404218 - r404220;
double r404228 = cbrt(r404227);
double r404229 = r404228 * r404228;
double r404230 = r404228 * r404211;
double r404231 = r404229 * r404230;
double r404232 = r404231 / r404221;
double r404233 = r404225 + r404232;
double r404234 = r404217 ? r404226 : r404233;
return r404234;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 10.4 |
|---|---|
| Target | 0.6 |
| Herbie | 0.8 |
if t < -6.012545261316455e-96 or 2.588908446285731e-201 < t Initial program 14.3
Simplified0.9
rmApplied div-sub0.9
if -6.012545261316455e-96 < t < 2.588908446285731e-201Initial program 0.4
rmApplied add-cube-cbrt0.6
Applied associate-*l*0.6
Final simplification0.8
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(if (< t -1.0682974490174067e-39) (+ x (* (/ (- y z) (- a z)) t)) (if (< t 3.9110949887586375e-141) (+ x (/ (* (- y z) t) (- a z))) (+ x (* (/ (- y z) (- a z)) t))))
(+ x (/ (* (- y z) t) (- a z))))