\frac{x + y \cdot \left(z - x\right)}{z}\begin{array}{l}
\mathbf{if}\;z \le -6.042091540010478640221144318013957849902 \cdot 10^{-28}:\\
\;\;\;\;\left(y + \frac{x}{z}\right) - \frac{y}{z} \cdot x\\
\mathbf{elif}\;z \le 3.580267717967572005052386658208804661473 \cdot 10^{-87}:\\
\;\;\;\;\left(y + \frac{x}{z}\right) - \frac{1}{\frac{z}{y \cdot x}}\\
\mathbf{else}:\\
\;\;\;\;\left(y + \frac{x}{z}\right) - \frac{y}{z} \cdot x\\
\end{array}double f(double x, double y, double z) {
double r38990365 = x;
double r38990366 = y;
double r38990367 = z;
double r38990368 = r38990367 - r38990365;
double r38990369 = r38990366 * r38990368;
double r38990370 = r38990365 + r38990369;
double r38990371 = r38990370 / r38990367;
return r38990371;
}
double f(double x, double y, double z) {
double r38990372 = z;
double r38990373 = -6.042091540010479e-28;
bool r38990374 = r38990372 <= r38990373;
double r38990375 = y;
double r38990376 = x;
double r38990377 = r38990376 / r38990372;
double r38990378 = r38990375 + r38990377;
double r38990379 = r38990375 / r38990372;
double r38990380 = r38990379 * r38990376;
double r38990381 = r38990378 - r38990380;
double r38990382 = 3.580267717967572e-87;
bool r38990383 = r38990372 <= r38990382;
double r38990384 = 1.0;
double r38990385 = r38990375 * r38990376;
double r38990386 = r38990372 / r38990385;
double r38990387 = r38990384 / r38990386;
double r38990388 = r38990378 - r38990387;
double r38990389 = r38990383 ? r38990388 : r38990381;
double r38990390 = r38990374 ? r38990381 : r38990389;
return r38990390;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.5 |
|---|---|
| Target | 0.0 |
| Herbie | 0.2 |
if z < -6.042091540010479e-28 or 3.580267717967572e-87 < z Initial program 15.0
Taylor expanded around 0 4.9
rmApplied *-un-lft-identity4.9
Applied times-frac0.3
Simplified0.3
if -6.042091540010479e-28 < z < 3.580267717967572e-87Initial program 0.1
Taylor expanded around 0 0.1
rmApplied clear-num0.1
Final simplification0.2
herbie shell --seed 2019179
(FPCore (x y z)
:name "Diagrams.Backend.Rasterific:rasterificRadialGradient from diagrams-rasterific-1.3.1.3"
:herbie-target
(- (+ y (/ x z)) (/ y (/ z x)))
(/ (+ x (* y (- z x))) z))