x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -1.114682128300157975163447253342211462313 \cdot 10^{-27}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{z}{a - t} - \frac{t}{a - t}, x\right)\\
\mathbf{elif}\;y \le 1.211877331305093968875689779186623802426 \cdot 10^{-80}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{z}{a - t} - \frac{t}{a - t}, x\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r27354065 = x;
double r27354066 = y;
double r27354067 = z;
double r27354068 = t;
double r27354069 = r27354067 - r27354068;
double r27354070 = r27354066 * r27354069;
double r27354071 = a;
double r27354072 = r27354071 - r27354068;
double r27354073 = r27354070 / r27354072;
double r27354074 = r27354065 + r27354073;
return r27354074;
}
double f(double x, double y, double z, double t, double a) {
double r27354075 = y;
double r27354076 = -1.114682128300158e-27;
bool r27354077 = r27354075 <= r27354076;
double r27354078 = z;
double r27354079 = a;
double r27354080 = t;
double r27354081 = r27354079 - r27354080;
double r27354082 = r27354078 / r27354081;
double r27354083 = r27354080 / r27354081;
double r27354084 = r27354082 - r27354083;
double r27354085 = x;
double r27354086 = fma(r27354075, r27354084, r27354085);
double r27354087 = 1.211877331305094e-80;
bool r27354088 = r27354075 <= r27354087;
double r27354089 = r27354078 - r27354080;
double r27354090 = r27354075 * r27354089;
double r27354091 = r27354090 / r27354081;
double r27354092 = r27354085 + r27354091;
double r27354093 = r27354088 ? r27354092 : r27354086;
double r27354094 = r27354077 ? r27354086 : r27354093;
return r27354094;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 10.8 |
|---|---|
| Target | 1.2 |
| Herbie | 0.4 |
if y < -1.114682128300158e-27 or 1.211877331305094e-80 < y Initial program 19.3
Simplified0.4
rmApplied div-sub0.4
if -1.114682128300158e-27 < y < 1.211877331305094e-80Initial program 0.4
Final simplification0.4
herbie shell --seed 2019192 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))