\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.11966401356535409 \cdot 10^{154}:\\
\;\;\;\;\sqrt{\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}} \cdot \left(-1 \cdot \left(\sqrt{\frac{1}{\sqrt[3]{3}}} \cdot x\right)\right)\\
\mathbf{elif}\;x \le 2.5319878970433065 \cdot 10^{144}:\\
\;\;\;\;\frac{\mathsf{hypot}\left(\sqrt{x \cdot x + y \cdot y}, z\right)}{\sqrt{3}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.333333333333333315}\\
\end{array}double f(double x, double y, double z) {
double r960207 = x;
double r960208 = r960207 * r960207;
double r960209 = y;
double r960210 = r960209 * r960209;
double r960211 = r960208 + r960210;
double r960212 = z;
double r960213 = r960212 * r960212;
double r960214 = r960211 + r960213;
double r960215 = 3.0;
double r960216 = r960214 / r960215;
double r960217 = sqrt(r960216);
return r960217;
}
double f(double x, double y, double z) {
double r960218 = x;
double r960219 = -1.1196640135653541e+154;
bool r960220 = r960218 <= r960219;
double r960221 = 1.0;
double r960222 = 3.0;
double r960223 = cbrt(r960222);
double r960224 = r960223 * r960223;
double r960225 = r960221 / r960224;
double r960226 = sqrt(r960225);
double r960227 = -1.0;
double r960228 = r960221 / r960223;
double r960229 = sqrt(r960228);
double r960230 = r960229 * r960218;
double r960231 = r960227 * r960230;
double r960232 = r960226 * r960231;
double r960233 = 2.5319878970433065e+144;
bool r960234 = r960218 <= r960233;
double r960235 = r960218 * r960218;
double r960236 = y;
double r960237 = r960236 * r960236;
double r960238 = r960235 + r960237;
double r960239 = sqrt(r960238);
double r960240 = z;
double r960241 = hypot(r960239, r960240);
double r960242 = sqrt(r960222);
double r960243 = r960241 / r960242;
double r960244 = 0.3333333333333333;
double r960245 = sqrt(r960244);
double r960246 = r960218 * r960245;
double r960247 = r960234 ? r960243 : r960246;
double r960248 = r960220 ? r960232 : r960247;
return r960248;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.1 |
|---|---|
| Target | 26.0 |
| Herbie | 16.5 |
if x < -1.1196640135653541e+154Initial program 63.9
rmApplied add-cube-cbrt63.9
Applied *-un-lft-identity63.9
Applied times-frac63.9
Applied sqrt-prod63.9
Taylor expanded around -inf 14.2
if -1.1196640135653541e+154 < x < 2.5319878970433065e+144Initial program 29.3
rmApplied sqrt-div29.4
rmApplied add-sqr-sqrt29.4
Applied hypot-def17.2
if 2.5319878970433065e+144 < x Initial program 62.1
Taylor expanded around inf 14.9
Final simplification16.5
herbie shell --seed 2020018 +o rules:numerics
(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)))