\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;y \le -5.008523466085166042269104572011026767694 \cdot 10^{110}:\\
\;\;\;\;\left|\frac{1}{\sqrt{\sqrt{3}}} \cdot \frac{y}{\sqrt{\sqrt{3}}}\right|\\
\mathbf{elif}\;y \le -1.232494092266792303298507831851883710859 \cdot 10^{-182}:\\
\;\;\;\;\left|\frac{\sqrt{\mathsf{fma}\left(z, z, \mathsf{fma}\left(x, x, y \cdot y\right)\right)}}{\sqrt{3}}\right|\\
\mathbf{elif}\;y \le -1.792108602367511563107867303346475363755 \cdot 10^{-274}:\\
\;\;\;\;\left|\frac{-z}{\sqrt{3}}\right|\\
\mathbf{elif}\;y \le 7.254479271513616272173912934899302783245 \cdot 10^{-209}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(z, z, \mathsf{fma}\left(x, x, y \cdot y\right)\right)} \cdot \sqrt{\frac{1}{3}}\\
\mathbf{elif}\;y \le 6.697712028762041216512495239807927468844 \cdot 10^{-123}:\\
\;\;\;\;\left|\frac{-z}{\sqrt{3}}\right|\\
\mathbf{elif}\;y \le 1.380374117965492703314427996253896487757 \cdot 10^{79}:\\
\;\;\;\;\left|\frac{\sqrt{\mathsf{fma}\left(z, z, \mathsf{fma}\left(x, x, y \cdot y\right)\right)}}{\sqrt{3}}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{\frac{y}{\left|\sqrt[3]{3}\right|}}{\sqrt{\sqrt[3]{3}}}\right|\\
\end{array}double f(double x, double y, double z) {
double r537142 = x;
double r537143 = r537142 * r537142;
double r537144 = y;
double r537145 = r537144 * r537144;
double r537146 = r537143 + r537145;
double r537147 = z;
double r537148 = r537147 * r537147;
double r537149 = r537146 + r537148;
double r537150 = 3.0;
double r537151 = r537149 / r537150;
double r537152 = sqrt(r537151);
return r537152;
}
double f(double x, double y, double z) {
double r537153 = y;
double r537154 = -5.008523466085166e+110;
bool r537155 = r537153 <= r537154;
double r537156 = 1.0;
double r537157 = 3.0;
double r537158 = sqrt(r537157);
double r537159 = sqrt(r537158);
double r537160 = r537156 / r537159;
double r537161 = r537153 / r537159;
double r537162 = r537160 * r537161;
double r537163 = fabs(r537162);
double r537164 = -1.2324940922667923e-182;
bool r537165 = r537153 <= r537164;
double r537166 = z;
double r537167 = x;
double r537168 = r537153 * r537153;
double r537169 = fma(r537167, r537167, r537168);
double r537170 = fma(r537166, r537166, r537169);
double r537171 = sqrt(r537170);
double r537172 = r537171 / r537158;
double r537173 = fabs(r537172);
double r537174 = -1.7921086023675116e-274;
bool r537175 = r537153 <= r537174;
double r537176 = -r537166;
double r537177 = r537176 / r537158;
double r537178 = fabs(r537177);
double r537179 = 7.254479271513616e-209;
bool r537180 = r537153 <= r537179;
double r537181 = r537156 / r537157;
double r537182 = sqrt(r537181);
double r537183 = r537171 * r537182;
double r537184 = 6.697712028762041e-123;
bool r537185 = r537153 <= r537184;
double r537186 = 1.3803741179654927e+79;
bool r537187 = r537153 <= r537186;
double r537188 = cbrt(r537157);
double r537189 = fabs(r537188);
double r537190 = r537153 / r537189;
double r537191 = sqrt(r537188);
double r537192 = r537190 / r537191;
double r537193 = fabs(r537192);
double r537194 = r537187 ? r537173 : r537193;
double r537195 = r537185 ? r537178 : r537194;
double r537196 = r537180 ? r537183 : r537195;
double r537197 = r537175 ? r537178 : r537196;
double r537198 = r537165 ? r537173 : r537197;
double r537199 = r537155 ? r537163 : r537198;
return r537199;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 37.3 |
|---|---|
| Target | 24.9 |
| Herbie | 25.7 |
if y < -5.008523466085166e+110Initial program 56.0
Simplified56.0
rmApplied add-sqr-sqrt56.0
Applied add-sqr-sqrt56.0
Applied times-frac56.0
Applied rem-sqrt-square56.0
Taylor expanded around 0 18.6
rmApplied add-sqr-sqrt18.6
Applied sqrt-prod19.1
Applied *-un-lft-identity19.1
Applied times-frac18.6
if -5.008523466085166e+110 < y < -1.2324940922667923e-182 or 6.697712028762041e-123 < y < 1.3803741179654927e+79Initial program 27.2
Simplified27.2
rmApplied add-sqr-sqrt27.4
Applied add-sqr-sqrt27.4
Applied times-frac27.3
Applied rem-sqrt-square27.3
if -1.2324940922667923e-182 < y < -1.7921086023675116e-274 or 7.254479271513616e-209 < y < 6.697712028762041e-123Initial program 30.8
Simplified30.8
rmApplied add-sqr-sqrt31.0
Applied add-sqr-sqrt31.0
Applied times-frac30.9
Applied rem-sqrt-square30.9
Taylor expanded around -inf 31.0
Simplified31.0
if -1.7921086023675116e-274 < y < 7.254479271513616e-209Initial program 31.5
Simplified31.5
rmApplied div-inv31.5
Applied sqrt-prod31.6
if 1.3803741179654927e+79 < y Initial program 52.4
Simplified52.4
rmApplied add-sqr-sqrt52.4
Applied add-sqr-sqrt52.4
Applied times-frac52.4
Applied rem-sqrt-square52.4
Taylor expanded around 0 20.3
rmApplied add-cube-cbrt20.3
Applied sqrt-prod20.3
Applied associate-/r*20.3
Simplified20.3
Final simplification25.7
herbie shell --seed 2019208 +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.3964793941097758e136) (/ (- z) (sqrt 3)) (if (< z 7.3202936944041821e117) (/ (sqrt (+ (+ (* z z) (* x x)) (* y y))) (sqrt 3)) (* (sqrt 0.333333333333333315) z)))
(sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)))