\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}\begin{array}{l}
\mathbf{if}\;x \le -6.208442960829875 \cdot 10^{+137}:\\
\;\;\;\;-x\\
\mathbf{elif}\;x \le -1.9111814054112648 \cdot 10^{-98}:\\
\;\;\;\;\sqrt{z \cdot z + \left(y \cdot y + x \cdot x\right)}\\
\mathbf{elif}\;x \le -8.598460374864875 \cdot 10^{-202}:\\
\;\;\;\;z\\
\mathbf{elif}\;x \le 9.794009169674087 \cdot 10^{+109}:\\
\;\;\;\;\sqrt{z \cdot z + \left(y \cdot y + x \cdot x\right)}\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}double f(double x, double y, double z) {
double r43275773 = x;
double r43275774 = r43275773 * r43275773;
double r43275775 = y;
double r43275776 = r43275775 * r43275775;
double r43275777 = r43275774 + r43275776;
double r43275778 = z;
double r43275779 = r43275778 * r43275778;
double r43275780 = r43275777 + r43275779;
double r43275781 = sqrt(r43275780);
return r43275781;
}
double f(double x, double y, double z) {
double r43275782 = x;
double r43275783 = -6.208442960829875e+137;
bool r43275784 = r43275782 <= r43275783;
double r43275785 = -r43275782;
double r43275786 = -1.9111814054112648e-98;
bool r43275787 = r43275782 <= r43275786;
double r43275788 = z;
double r43275789 = r43275788 * r43275788;
double r43275790 = y;
double r43275791 = r43275790 * r43275790;
double r43275792 = r43275782 * r43275782;
double r43275793 = r43275791 + r43275792;
double r43275794 = r43275789 + r43275793;
double r43275795 = sqrt(r43275794);
double r43275796 = -8.598460374864875e-202;
bool r43275797 = r43275782 <= r43275796;
double r43275798 = 9.794009169674087e+109;
bool r43275799 = r43275782 <= r43275798;
double r43275800 = r43275799 ? r43275795 : r43275782;
double r43275801 = r43275797 ? r43275788 : r43275800;
double r43275802 = r43275787 ? r43275795 : r43275801;
double r43275803 = r43275784 ? r43275785 : r43275802;
return r43275803;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 34.9 |
|---|---|
| Target | 23.3 |
| Herbie | 25.4 |
if x < -6.208442960829875e+137Initial program 56.2
Taylor expanded around -inf 15.0
Simplified15.0
if -6.208442960829875e+137 < x < -1.9111814054112648e-98 or -8.598460374864875e-202 < x < 9.794009169674087e+109Initial program 27.0
if -1.9111814054112648e-98 < x < -8.598460374864875e-202Initial program 28.1
Taylor expanded around 0 46.6
if 9.794009169674087e+109 < x Initial program 52.0
Taylor expanded around inf 16.5
Final simplification25.4
herbie shell --seed 2019158
(FPCore (x y z)
:name "FRP.Yampa.Vector3:vector3Rho from Yampa-0.10.2"
:herbie-target
(if (< z -6.396479394109776e+136) (- z) (if (< z 7.320293694404182e+117) (sqrt (+ (+ (* z z) (* x x)) (* y y))) z))
(sqrt (+ (+ (* x x) (* y y)) (* z z))))