\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;z \le -2.2291282360035104 \cdot 10^{133}:\\
\;\;\;\;-\frac{z}{\sqrt{3}}\\
\mathbf{elif}\;z \le 2.8539710068846394 \cdot 10^{65}:\\
\;\;\;\;\sqrt{\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\frac{3}{\sqrt{\mathsf{fma}\left(z, z, \mathsf{fma}\left(x, x, y \cdot y\right)\right)}}}}\\
\mathbf{else}:\\
\;\;\;\;z \cdot \sqrt{0.333333333333333315}\\
\end{array}double f(double x, double y, double z) {
double r1129310 = x;
double r1129311 = r1129310 * r1129310;
double r1129312 = y;
double r1129313 = r1129312 * r1129312;
double r1129314 = r1129311 + r1129313;
double r1129315 = z;
double r1129316 = r1129315 * r1129315;
double r1129317 = r1129314 + r1129316;
double r1129318 = 3.0;
double r1129319 = r1129317 / r1129318;
double r1129320 = sqrt(r1129319);
return r1129320;
}
double f(double x, double y, double z) {
double r1129321 = z;
double r1129322 = -2.2291282360035104e+133;
bool r1129323 = r1129321 <= r1129322;
double r1129324 = 3.0;
double r1129325 = sqrt(r1129324);
double r1129326 = r1129321 / r1129325;
double r1129327 = -r1129326;
double r1129328 = 2.8539710068846394e+65;
bool r1129329 = r1129321 <= r1129328;
double r1129330 = x;
double r1129331 = r1129330 * r1129330;
double r1129332 = y;
double r1129333 = r1129332 * r1129332;
double r1129334 = r1129331 + r1129333;
double r1129335 = r1129321 * r1129321;
double r1129336 = r1129334 + r1129335;
double r1129337 = sqrt(r1129336);
double r1129338 = fma(r1129330, r1129330, r1129333);
double r1129339 = fma(r1129321, r1129321, r1129338);
double r1129340 = sqrt(r1129339);
double r1129341 = r1129324 / r1129340;
double r1129342 = r1129337 / r1129341;
double r1129343 = sqrt(r1129342);
double r1129344 = 0.3333333333333333;
double r1129345 = sqrt(r1129344);
double r1129346 = r1129321 * r1129345;
double r1129347 = r1129329 ? r1129343 : r1129346;
double r1129348 = r1129323 ? r1129327 : r1129347;
return r1129348;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 38.1 |
|---|---|
| Target | 25.6 |
| Herbie | 25.8 |
if z < -2.2291282360035104e+133Initial program 59.8
rmApplied add-sqr-sqrt59.8
Applied associate-/r*59.8
Simplified59.8
Taylor expanded around -inf 17.4
Simplified17.4
if -2.2291282360035104e+133 < z < 2.8539710068846394e+65Initial program 29.2
rmApplied add-sqr-sqrt29.2
Applied associate-/l*29.2
Simplified29.2
if 2.8539710068846394e+65 < z Initial program 51.4
Taylor expanded around 0 20.8
Final simplification25.8
herbie shell --seed 2020042 +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)))