\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.89558649116172909 \cdot 10^{137}:\\
\;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\
\mathbf{elif}\;x \le 7.7927334266850862 \cdot 10^{150}:\\
\;\;\;\;\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\sqrt{3}}\\
\end{array}double f(double x, double y, double z) {
double r958966 = x;
double r958967 = r958966 * r958966;
double r958968 = y;
double r958969 = r958968 * r958968;
double r958970 = r958967 + r958969;
double r958971 = z;
double r958972 = r958971 * r958971;
double r958973 = r958970 + r958972;
double r958974 = 3.0;
double r958975 = r958973 / r958974;
double r958976 = sqrt(r958975);
return r958976;
}
double f(double x, double y, double z) {
double r958977 = x;
double r958978 = -1.895586491161729e+137;
bool r958979 = r958977 <= r958978;
double r958980 = -1.0;
double r958981 = 0.3333333333333333;
double r958982 = sqrt(r958981);
double r958983 = r958977 * r958982;
double r958984 = r958980 * r958983;
double r958985 = 7.792733426685086e+150;
bool r958986 = r958977 <= r958985;
double r958987 = r958977 * r958977;
double r958988 = y;
double r958989 = r958988 * r958988;
double r958990 = r958987 + r958989;
double r958991 = z;
double r958992 = r958991 * r958991;
double r958993 = r958990 + r958992;
double r958994 = 3.0;
double r958995 = r958993 / r958994;
double r958996 = sqrt(r958995);
double r958997 = sqrt(r958994);
double r958998 = r958977 / r958997;
double r958999 = r958986 ? r958996 : r958998;
double r959000 = r958979 ? r958984 : r958999;
return r959000;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.1 |
|---|---|
| Target | 25.6 |
| Herbie | 25.9 |
if x < -1.895586491161729e+137Initial program 60.9
Taylor expanded around -inf 16.0
if -1.895586491161729e+137 < x < 7.792733426685086e+150Initial program 29.5
if 7.792733426685086e+150 < x Initial program 63.3
rmApplied add-sqr-sqrt63.3
Applied *-un-lft-identity63.3
Applied times-frac63.4
Applied sqrt-prod63.4
Taylor expanded around inf 15.2
Final simplification25.9
herbie shell --seed 2020027
(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)))