x + \frac{y \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;y \le -3.411193258922676914246366629914191895999 \cdot 10^{-203}:\\
\;\;\;\;y \cdot \frac{z - t}{a - t} + x\\
\mathbf{elif}\;y \le 3.141542066260724965673573068949770532037 \cdot 10^{-88}:\\
\;\;\;\;1 \cdot \frac{\left(z - t\right) \cdot y}{a - t} + x\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{a - t} \cdot \left(z - t\right) + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r680116 = x;
double r680117 = y;
double r680118 = z;
double r680119 = t;
double r680120 = r680118 - r680119;
double r680121 = r680117 * r680120;
double r680122 = a;
double r680123 = r680122 - r680119;
double r680124 = r680121 / r680123;
double r680125 = r680116 + r680124;
return r680125;
}
double f(double x, double y, double z, double t, double a) {
double r680126 = y;
double r680127 = -3.411193258922677e-203;
bool r680128 = r680126 <= r680127;
double r680129 = z;
double r680130 = t;
double r680131 = r680129 - r680130;
double r680132 = a;
double r680133 = r680132 - r680130;
double r680134 = r680131 / r680133;
double r680135 = r680126 * r680134;
double r680136 = x;
double r680137 = r680135 + r680136;
double r680138 = 3.141542066260725e-88;
bool r680139 = r680126 <= r680138;
double r680140 = 1.0;
double r680141 = r680131 * r680126;
double r680142 = r680141 / r680133;
double r680143 = r680140 * r680142;
double r680144 = r680143 + r680136;
double r680145 = r680126 / r680133;
double r680146 = r680145 * r680131;
double r680147 = r680146 + r680136;
double r680148 = r680139 ? r680144 : r680147;
double r680149 = r680128 ? r680137 : r680148;
return r680149;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 10.1 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
if y < -3.411193258922677e-203Initial program 12.1
Simplified2.7
rmApplied fma-udef2.7
rmApplied div-inv2.7
Applied associate-*l*1.0
Simplified0.9
if -3.411193258922677e-203 < y < 3.141542066260725e-88Initial program 0.4
Simplified4.0
rmApplied fma-udef4.0
rmApplied *-un-lft-identity4.0
Applied associate-*l*4.0
Simplified0.4
if 3.141542066260725e-88 < y Initial program 16.3
Simplified2.5
rmApplied fma-udef2.5
Final simplification1.2
herbie shell --seed 2019362 +o rules:numerics
(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))))