\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.5602497723888015 \cdot 10^{48}:\\
\;\;\;\;\left(-1 \cdot x\right) \cdot \sqrt{\frac{1}{3}}\\
\mathbf{elif}\;x \le 2.816119708780296 \cdot 10^{121}:\\
\;\;\;\;\sqrt{\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt{3}} \cdot \frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt{3}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\sqrt{3}}\\
\end{array}double f(double x, double y, double z) {
double r839994 = x;
double r839995 = r839994 * r839994;
double r839996 = y;
double r839997 = r839996 * r839996;
double r839998 = r839995 + r839997;
double r839999 = z;
double r840000 = r839999 * r839999;
double r840001 = r839998 + r840000;
double r840002 = 3.0;
double r840003 = r840001 / r840002;
double r840004 = sqrt(r840003);
return r840004;
}
double f(double x, double y, double z) {
double r840005 = x;
double r840006 = -1.5602497723888015e+48;
bool r840007 = r840005 <= r840006;
double r840008 = -1.0;
double r840009 = r840008 * r840005;
double r840010 = 1.0;
double r840011 = 3.0;
double r840012 = r840010 / r840011;
double r840013 = sqrt(r840012);
double r840014 = r840009 * r840013;
double r840015 = 2.816119708780296e+121;
bool r840016 = r840005 <= r840015;
double r840017 = r840005 * r840005;
double r840018 = y;
double r840019 = r840018 * r840018;
double r840020 = r840017 + r840019;
double r840021 = z;
double r840022 = r840021 * r840021;
double r840023 = r840020 + r840022;
double r840024 = sqrt(r840023);
double r840025 = sqrt(r840011);
double r840026 = r840024 / r840025;
double r840027 = r840026 * r840026;
double r840028 = sqrt(r840027);
double r840029 = r840005 / r840025;
double r840030 = r840016 ? r840028 : r840029;
double r840031 = r840007 ? r840014 : r840030;
return r840031;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.0 |
|---|---|
| Target | 25.9 |
| Herbie | 25.9 |
if x < -1.5602497723888015e+48Initial program 50.5
rmApplied div-inv50.5
Applied sqrt-prod50.5
Taylor expanded around -inf 21.4
if -1.5602497723888015e+48 < x < 2.816119708780296e+121Initial program 29.6
rmApplied add-sqr-sqrt29.8
Applied add-sqr-sqrt29.8
Applied times-frac29.7
if 2.816119708780296e+121 < x Initial program 57.0
rmApplied add-sqr-sqrt57.0
Applied add-sqr-sqrt57.0
Applied times-frac57.0
Taylor expanded around inf 15.9
Final simplification25.9
herbie shell --seed 2020024
(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)))