\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.35612836383285588 \cdot 10^{108}:\\
\;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\
\mathbf{elif}\;x \le 1.04793530695557172 \cdot 10^{77}:\\
\;\;\;\;\sqrt{\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt[3]{3}}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.333333333333333315}\\
\end{array}double f(double x, double y, double z) {
double r853480 = x;
double r853481 = r853480 * r853480;
double r853482 = y;
double r853483 = r853482 * r853482;
double r853484 = r853481 + r853483;
double r853485 = z;
double r853486 = r853485 * r853485;
double r853487 = r853484 + r853486;
double r853488 = 3.0;
double r853489 = r853487 / r853488;
double r853490 = sqrt(r853489);
return r853490;
}
double f(double x, double y, double z) {
double r853491 = x;
double r853492 = -1.356128363832856e+108;
bool r853493 = r853491 <= r853492;
double r853494 = -1.0;
double r853495 = 0.3333333333333333;
double r853496 = sqrt(r853495);
double r853497 = r853491 * r853496;
double r853498 = r853494 * r853497;
double r853499 = 1.0479353069555717e+77;
bool r853500 = r853491 <= r853499;
double r853501 = r853491 * r853491;
double r853502 = y;
double r853503 = r853502 * r853502;
double r853504 = r853501 + r853503;
double r853505 = z;
double r853506 = r853505 * r853505;
double r853507 = r853504 + r853506;
double r853508 = sqrt(r853507);
double r853509 = 3.0;
double r853510 = cbrt(r853509);
double r853511 = r853510 * r853510;
double r853512 = r853508 / r853511;
double r853513 = r853508 / r853510;
double r853514 = r853512 * r853513;
double r853515 = sqrt(r853514);
double r853516 = r853500 ? r853515 : r853497;
double r853517 = r853493 ? r853498 : r853516;
return r853517;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.4 |
|---|---|
| Target | 25.9 |
| Herbie | 26.4 |
if x < -1.356128363832856e+108Initial program 55.4
Taylor expanded around -inf 18.6
if -1.356128363832856e+108 < x < 1.0479353069555717e+77Initial program 29.9
rmApplied add-cube-cbrt29.9
Applied add-sqr-sqrt29.9
Applied times-frac30.0
if 1.0479353069555717e+77 < x Initial program 53.1
Taylor expanded around inf 20.7
Final simplification26.4
herbie shell --seed 2020046
(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)))