x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -6.414154112854105407013291321620742388699 \cdot 10^{-121} \lor \neg \left(y \le 4.594501379393755892248903622673783295757 \cdot 10^{-163}\right):\\
\;\;\;\;x + \frac{y}{\left(a - t\right) \cdot \frac{1}{z - t}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r685082 = x;
double r685083 = y;
double r685084 = z;
double r685085 = t;
double r685086 = r685084 - r685085;
double r685087 = r685083 * r685086;
double r685088 = a;
double r685089 = r685088 - r685085;
double r685090 = r685087 / r685089;
double r685091 = r685082 + r685090;
return r685091;
}
double f(double x, double y, double z, double t, double a) {
double r685092 = y;
double r685093 = -6.414154112854105e-121;
bool r685094 = r685092 <= r685093;
double r685095 = 4.594501379393756e-163;
bool r685096 = r685092 <= r685095;
double r685097 = !r685096;
bool r685098 = r685094 || r685097;
double r685099 = x;
double r685100 = a;
double r685101 = t;
double r685102 = r685100 - r685101;
double r685103 = 1.0;
double r685104 = z;
double r685105 = r685104 - r685101;
double r685106 = r685103 / r685105;
double r685107 = r685102 * r685106;
double r685108 = r685092 / r685107;
double r685109 = r685099 + r685108;
double r685110 = r685092 * r685105;
double r685111 = r685110 / r685102;
double r685112 = r685099 + r685111;
double r685113 = r685098 ? r685109 : r685112;
return r685113;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 11.5 |
|---|---|
| Target | 1.4 |
| Herbie | 0.7 |
if y < -6.414154112854105e-121 or 4.594501379393756e-163 < y Initial program 16.0
rmApplied associate-/l*0.8
rmApplied div-inv0.9
if -6.414154112854105e-121 < y < 4.594501379393756e-163Initial program 0.3
Final simplification0.7
herbie shell --seed 2019353
(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))))