x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -5.422773879432081316361824486038416445882 \cdot 10^{151}:\\
\;\;\;\;\frac{1}{\frac{z}{y \cdot x}}\\
\mathbf{elif}\;\frac{y}{z} \le -5.10484190542812669037692225063426301177 \cdot 10^{-201}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 2.774265247967482801945189091940352026471 \cdot 10^{-185}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\mathbf{elif}\;\frac{y}{z} \le 2.981277762077973021880053045655171198882 \cdot 10^{261}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\end{array}double f(double x, double y, double z, double t) {
double r3345854 = x;
double r3345855 = y;
double r3345856 = z;
double r3345857 = r3345855 / r3345856;
double r3345858 = t;
double r3345859 = r3345857 * r3345858;
double r3345860 = r3345859 / r3345858;
double r3345861 = r3345854 * r3345860;
return r3345861;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r3345862 = y;
double r3345863 = z;
double r3345864 = r3345862 / r3345863;
double r3345865 = -5.422773879432081e+151;
bool r3345866 = r3345864 <= r3345865;
double r3345867 = 1.0;
double r3345868 = x;
double r3345869 = r3345862 * r3345868;
double r3345870 = r3345863 / r3345869;
double r3345871 = r3345867 / r3345870;
double r3345872 = -5.104841905428127e-201;
bool r3345873 = r3345864 <= r3345872;
double r3345874 = r3345868 * r3345864;
double r3345875 = 2.7742652479674828e-185;
bool r3345876 = r3345864 <= r3345875;
double r3345877 = r3345868 / r3345863;
double r3345878 = r3345877 * r3345862;
double r3345879 = 2.981277762077973e+261;
bool r3345880 = r3345864 <= r3345879;
double r3345881 = r3345880 ? r3345874 : r3345878;
double r3345882 = r3345876 ? r3345878 : r3345881;
double r3345883 = r3345873 ? r3345874 : r3345882;
double r3345884 = r3345866 ? r3345871 : r3345883;
return r3345884;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -5.422773879432081e+151Initial program 36.5
Simplified2.3
rmApplied clear-num2.4
if -5.422773879432081e+151 < (/ y z) < -5.104841905428127e-201 or 2.7742652479674828e-185 < (/ y z) < 2.981277762077973e+261Initial program 8.2
Simplified10.1
rmApplied *-un-lft-identity10.1
Applied times-frac0.2
Simplified0.2
if -5.104841905428127e-201 < (/ y z) < 2.7742652479674828e-185 or 2.981277762077973e+261 < (/ y z) Initial program 21.4
Simplified0.4
rmApplied div-inv0.4
rmApplied pow10.4
Applied pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Applied pow-prod-down0.4
Simplified0.6
Final simplification0.5
herbie shell --seed 2019192 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
(* x (/ (* (/ y z) t) t)))