x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -4.539793361071769873969043675808442911102 \cdot 10^{214}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -2.530604856090351627042526853504735687815 \cdot 10^{-166}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;\frac{y}{z} \le 6.053074699504574675208589942494399087398 \cdot 10^{-63}:\\
\;\;\;\;\frac{y}{\frac{z}{x}}\\
\mathbf{elif}\;\frac{y}{z} \le 6.289758256242324172285873340578120865516 \cdot 10^{161}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{y \cdot x}{z}\\
\end{array}double f(double x, double y, double z, double t) {
double r528177 = x;
double r528178 = y;
double r528179 = z;
double r528180 = r528178 / r528179;
double r528181 = t;
double r528182 = r528180 * r528181;
double r528183 = r528182 / r528181;
double r528184 = r528177 * r528183;
return r528184;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r528185 = y;
double r528186 = z;
double r528187 = r528185 / r528186;
double r528188 = -4.53979336107177e+214;
bool r528189 = r528187 <= r528188;
double r528190 = x;
double r528191 = r528190 / r528186;
double r528192 = r528185 * r528191;
double r528193 = -2.5306048560903516e-166;
bool r528194 = r528187 <= r528193;
double r528195 = r528187 * r528190;
double r528196 = 6.053074699504575e-63;
bool r528197 = r528187 <= r528196;
double r528198 = r528186 / r528190;
double r528199 = r528185 / r528198;
double r528200 = 6.289758256242324e+161;
bool r528201 = r528187 <= r528200;
double r528202 = r528185 * r528190;
double r528203 = r528202 / r528186;
double r528204 = r528201 ? r528195 : r528203;
double r528205 = r528197 ? r528199 : r528204;
double r528206 = r528194 ? r528195 : r528205;
double r528207 = r528189 ? r528192 : r528206;
return r528207;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 14.5 |
|---|---|
| Target | 1.4 |
| Herbie | 1.2 |
if (/ y z) < -4.53979336107177e+214Initial program 42.7
Simplified0.6
rmApplied *-un-lft-identity0.6
Applied times-frac0.4
Simplified0.4
if -4.53979336107177e+214 < (/ y z) < -2.5306048560903516e-166 or 6.053074699504575e-63 < (/ y z) < 6.289758256242324e+161Initial program 7.3
Simplified11.4
rmApplied associate-/l*10.3
rmApplied associate-/r/0.2
if -2.5306048560903516e-166 < (/ y z) < 6.053074699504575e-63Initial program 14.9
Simplified2.5
rmApplied associate-/l*2.2
if 6.289758256242324e+161 < (/ y z) Initial program 34.1
Simplified2.3
Final simplification1.2
herbie shell --seed 2019305
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:precision binary64
:herbie-target
(if (< (/ (* (/ y z) t) t) -1.20672205123045005e245) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) -5.90752223693390633e-275) (* x (/ y z)) (if (< (/ (* (/ y z) t) t) 5.65895442315341522e-65) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) 2.0087180502407133e217) (* x (/ y z)) (/ (* y x) z)))))
(* x (/ (* (/ y z) t) t)))