x \cdot \frac{\frac{y}{z} \cdot t}{t}\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -1.009555688743657053093976996432682877192 \cdot 10^{278}:\\
\;\;\;\;y \cdot \frac{x}{z}\\
\mathbf{elif}\;\frac{y}{z} \le -1.900141742787772715345890115335440787699 \cdot 10^{-270}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;\frac{y}{z} \le 4.438182973596565301288302827093808047147 \cdot 10^{-272}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{y}{z} \le 3.561199608254915194562496763078682553454 \cdot 10^{97}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{z}}{\frac{1}{y}}\\
\end{array}double f(double x, double y, double z, double t) {
double r65793 = x;
double r65794 = y;
double r65795 = z;
double r65796 = r65794 / r65795;
double r65797 = t;
double r65798 = r65796 * r65797;
double r65799 = r65798 / r65797;
double r65800 = r65793 * r65799;
return r65800;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r65801 = y;
double r65802 = z;
double r65803 = r65801 / r65802;
double r65804 = -1.009555688743657e+278;
bool r65805 = r65803 <= r65804;
double r65806 = x;
double r65807 = r65806 / r65802;
double r65808 = r65801 * r65807;
double r65809 = -1.9001417427877727e-270;
bool r65810 = r65803 <= r65809;
double r65811 = r65802 / r65801;
double r65812 = r65806 / r65811;
double r65813 = 4.438182973596565e-272;
bool r65814 = r65803 <= r65813;
double r65815 = r65806 * r65801;
double r65816 = r65815 / r65802;
double r65817 = 3.561199608254915e+97;
bool r65818 = r65803 <= r65817;
double r65819 = 1.0;
double r65820 = r65819 / r65801;
double r65821 = r65807 / r65820;
double r65822 = r65818 ? r65812 : r65821;
double r65823 = r65814 ? r65816 : r65822;
double r65824 = r65810 ? r65812 : r65823;
double r65825 = r65805 ? r65808 : r65824;
return r65825;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t
Results
if (/ y z) < -1.009555688743657e+278Initial program 54.6
Simplified45.9
rmApplied div-inv45.9
Applied associate-*l*0.4
Simplified0.2
if -1.009555688743657e+278 < (/ y z) < -1.9001417427877727e-270 or 4.438182973596565e-272 < (/ y z) < 3.561199608254915e+97Initial program 8.2
Simplified0.2
rmApplied *-un-lft-identity0.2
Applied *-un-lft-identity0.2
Applied times-frac0.2
Applied associate-*l*0.2
Simplified8.7
rmApplied associate-/l*0.2
if -1.9001417427877727e-270 < (/ y z) < 4.438182973596565e-272Initial program 18.9
Simplified15.8
rmApplied *-un-lft-identity15.8
Applied *-un-lft-identity15.8
Applied times-frac15.8
Applied associate-*l*15.8
Simplified0.1
if 3.561199608254915e+97 < (/ y z) Initial program 26.4
Simplified12.8
rmApplied *-un-lft-identity12.8
Applied *-un-lft-identity12.8
Applied times-frac12.8
Applied associate-*l*12.8
Simplified4.1
rmApplied associate-/l*11.7
rmApplied div-inv11.8
Applied associate-/r*4.0
Final simplification0.7
herbie shell --seed 2019303
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
:precision binary64
(* x (/ (* (/ y z) t) t)))