x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t} \le -5.11466826064621464 \cdot 10^{-284} \lor \neg \left(x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t} \le 0.0\right):\\
\;\;\;\;\left(\left(z - t\right) \cdot \frac{1}{a - t}\right) \cdot \left(y - x\right) + x\\
\mathbf{else}:\\
\;\;\;\;y\\
\end{array}double code(double x, double y, double z, double t, double a) {
return (x + (((y - x) * (z - t)) / (a - t)));
}
double code(double x, double y, double z, double t, double a) {
double VAR;
if ((((x + (((y - x) * (z - t)) / (a - t))) <= -5.1146682606462146e-284) || !((x + (((y - x) * (z - t)) / (a - t))) <= 0.0))) {
VAR = ((((z - t) * (1.0 / (a - t))) * (y - x)) + x);
} else {
VAR = y;
}
return VAR;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 9.5 |
| Herbie | 9.7 |
if (+ x (/ (* (- y x) (- z t)) (- a t))) < -5.1146682606462146e-284 or 0.0 < (+ x (/ (* (- y x) (- z t)) (- a t))) Initial program 20.7
Simplified10.5
rmApplied div-inv10.6
rmApplied add-cube-cbrt11.3
Applied associate-*r*11.3
rmApplied fma-udef11.3
Simplified7.1
if -5.1146682606462146e-284 < (+ x (/ (* (- y x) (- z t)) (- a t))) < 0.0Initial program 59.5
Simplified59.6
Taylor expanded around 0 36.5
Final simplification9.7
herbie shell --seed 2020100 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))