\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.35612836383285588 \cdot 10^{108}:\\
\;\;\;\;-x \cdot \sqrt{0.333333333333333315}\\
\mathbf{elif}\;x \le 1.04793530695557172 \cdot 10^{77}:\\
\;\;\;\;\sqrt{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z} \cdot \frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{3}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.333333333333333315}\\
\end{array}double f(double x, double y, double z) {
double r1041867 = x;
double r1041868 = r1041867 * r1041867;
double r1041869 = y;
double r1041870 = r1041869 * r1041869;
double r1041871 = r1041868 + r1041870;
double r1041872 = z;
double r1041873 = r1041872 * r1041872;
double r1041874 = r1041871 + r1041873;
double r1041875 = 3.0;
double r1041876 = r1041874 / r1041875;
double r1041877 = sqrt(r1041876);
return r1041877;
}
double f(double x, double y, double z) {
double r1041878 = x;
double r1041879 = -1.356128363832856e+108;
bool r1041880 = r1041878 <= r1041879;
double r1041881 = 0.3333333333333333;
double r1041882 = sqrt(r1041881);
double r1041883 = r1041878 * r1041882;
double r1041884 = -r1041883;
double r1041885 = 1.0479353069555717e+77;
bool r1041886 = r1041878 <= r1041885;
double r1041887 = r1041878 * r1041878;
double r1041888 = y;
double r1041889 = r1041888 * r1041888;
double r1041890 = r1041887 + r1041889;
double r1041891 = z;
double r1041892 = r1041891 * r1041891;
double r1041893 = r1041890 + r1041892;
double r1041894 = sqrt(r1041893);
double r1041895 = 3.0;
double r1041896 = r1041894 / r1041895;
double r1041897 = r1041894 * r1041896;
double r1041898 = sqrt(r1041897);
double r1041899 = r1041886 ? r1041898 : r1041883;
double r1041900 = r1041880 ? r1041884 : r1041899;
return r1041900;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.4 |
|---|---|
| Target | 25.9 |
| Herbie | 26.4 |
if x < -1.356128363832856e+108Initial program 55.4
Taylor expanded around -inf 18.6
Simplified18.6
if -1.356128363832856e+108 < x < 1.0479353069555717e+77Initial program 29.9
rmApplied *-un-lft-identity29.9
Applied add-sqr-sqrt29.9
Applied times-frac29.9
Simplified29.9
if 1.0479353069555717e+77 < x Initial program 53.1
Taylor expanded around inf 20.7
Final simplification26.4
herbie shell --seed 2020046
(FPCore (x y z)
:name "Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1"
:precision binary64
:herbie-target
(if (< z -6.396479394109776e+136) (/ (- z) (sqrt 3)) (if (< z 7.320293694404182e+117) (/ (sqrt (+ (+ (* z z) (* x x)) (* y y))) (sqrt 3)) (* (sqrt 0.3333333333333333) z)))
(sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)))