x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -2.8729605916325777 \cdot 10^{+267}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -2.7507759442519827 \cdot 10^{-276}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 1.437974108594 \cdot 10^{-312}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{elif}\;\frac{y}{z} \le 2.1335813366195736 \cdot 10^{+166}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{z} \cdot \left(x \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r19401506 = x;
double r19401507 = y;
double r19401508 = z;
double r19401509 = r19401507 / r19401508;
double r19401510 = t;
double r19401511 = r19401509 * r19401510;
double r19401512 = r19401511 / r19401510;
double r19401513 = r19401506 * r19401512;
return r19401513;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r19401514 = y;
double r19401515 = z;
double r19401516 = r19401514 / r19401515;
double r19401517 = -2.8729605916325777e+267;
bool r19401518 = r19401516 <= r19401517;
double r19401519 = x;
double r19401520 = r19401519 * r19401514;
double r19401521 = r19401520 / r19401515;
double r19401522 = -2.7507759442519827e-276;
bool r19401523 = r19401516 <= r19401522;
double r19401524 = r19401516 * r19401519;
double r19401525 = 1.437974108594e-312;
bool r19401526 = r19401516 <= r19401525;
double r19401527 = 1.0;
double r19401528 = r19401515 / r19401520;
double r19401529 = r19401527 / r19401528;
double r19401530 = 2.1335813366195736e+166;
bool r19401531 = r19401516 <= r19401530;
double r19401532 = r19401527 / r19401515;
double r19401533 = r19401532 * r19401520;
double r19401534 = r19401531 ? r19401524 : r19401533;
double r19401535 = r19401526 ? r19401529 : r19401534;
double r19401536 = r19401523 ? r19401524 : r19401535;
double r19401537 = r19401518 ? r19401521 : r19401536;
return r19401537;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 15.1 |
|---|---|
| Target | 1.5 |
| Herbie | 0.4 |
if (/ y z) < -2.8729605916325777e+267Initial program 52.6
Simplified0.3
Taylor expanded around 0 0.4
if -2.8729605916325777e+267 < (/ y z) < -2.7507759442519827e-276 or 1.437974108594e-312 < (/ y z) < 2.1335813366195736e+166Initial program 9.2
Simplified8.3
Taylor expanded around 0 8.3
rmApplied *-un-lft-identity8.3
Applied times-frac0.2
Simplified0.2
if -2.7507759442519827e-276 < (/ y z) < 1.437974108594e-312Initial program 20.4
Simplified0.1
Taylor expanded around 0 0.1
rmApplied clear-num0.5
if 2.1335813366195736e+166 < (/ y z) Initial program 37.3
Simplified1.1
Taylor expanded around 0 1.9
rmApplied div-inv1.9
Final simplification0.4
herbie shell --seed 2019158
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:herbie-target
(if (< (/ (* (/ y z) t) t) -1.20672205123045e+245) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) -5.907522236933906e-275) (* x (/ y z)) (if (< (/ (* (/ y z) t) t) 5.658954423153415e-65) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) 2.0087180502407133e+217) (* x (/ y z)) (/ (* y x) z)))))
(* x (/ (* (/ y z) t) t)))