x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;t \le -1.03708978223895714 \cdot 10^{-271} \lor \neg \left(t \le 8.49657610056407139 \cdot 10^{-71}\right):\\
\;\;\;\;x + y \cdot \left(z \cdot \frac{1}{a - t} - \frac{t}{a - t}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot z + y \cdot \left(-t\right)}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r768024 = x;
double r768025 = y;
double r768026 = z;
double r768027 = t;
double r768028 = r768026 - r768027;
double r768029 = r768025 * r768028;
double r768030 = a;
double r768031 = r768030 - r768027;
double r768032 = r768029 / r768031;
double r768033 = r768024 + r768032;
return r768033;
}
double f(double x, double y, double z, double t, double a) {
double r768034 = t;
double r768035 = -1.0370897822389571e-271;
bool r768036 = r768034 <= r768035;
double r768037 = 8.496576100564071e-71;
bool r768038 = r768034 <= r768037;
double r768039 = !r768038;
bool r768040 = r768036 || r768039;
double r768041 = x;
double r768042 = y;
double r768043 = z;
double r768044 = 1.0;
double r768045 = a;
double r768046 = r768045 - r768034;
double r768047 = r768044 / r768046;
double r768048 = r768043 * r768047;
double r768049 = r768034 / r768046;
double r768050 = r768048 - r768049;
double r768051 = r768042 * r768050;
double r768052 = r768041 + r768051;
double r768053 = r768042 * r768043;
double r768054 = -r768034;
double r768055 = r768042 * r768054;
double r768056 = r768053 + r768055;
double r768057 = r768056 / r768046;
double r768058 = r768041 + r768057;
double r768059 = r768040 ? r768052 : r768058;
return r768059;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.9 |
|---|---|
| Target | 1.3 |
| Herbie | 1.5 |
if t < -1.0370897822389571e-271 or 8.496576100564071e-71 < t Initial program 12.7
rmApplied *-un-lft-identity12.7
Applied times-frac0.9
Simplified0.9
rmApplied div-sub0.8
rmApplied div-inv0.9
if -1.0370897822389571e-271 < t < 8.496576100564071e-71Initial program 3.8
rmApplied sub-neg3.8
Applied distribute-lft-in3.8
Final simplification1.5
herbie shell --seed 2020056
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTicks from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(+ x (/ y (/ (- a t) (- z t))))
(+ x (/ (* y (- z t)) (- a t))))