\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3.0}}\begin{array}{l}
\mathbf{if}\;x \le -1.9223608795668832 \cdot 10^{+146}:\\
\;\;\;\;\left(-x\right) \cdot \sqrt{0.3333333333333333}\\
\mathbf{elif}\;x \le 2.8767154662268737 \cdot 10^{+124}:\\
\;\;\;\;\sqrt{\frac{1}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}} \cdot \frac{\left(y \cdot y + x \cdot x\right) + z \cdot z}{\sqrt[3]{3.0}}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{0.3333333333333333} \cdot x\\
\end{array}double f(double x, double y, double z) {
double r41742576 = x;
double r41742577 = r41742576 * r41742576;
double r41742578 = y;
double r41742579 = r41742578 * r41742578;
double r41742580 = r41742577 + r41742579;
double r41742581 = z;
double r41742582 = r41742581 * r41742581;
double r41742583 = r41742580 + r41742582;
double r41742584 = 3.0;
double r41742585 = r41742583 / r41742584;
double r41742586 = sqrt(r41742585);
return r41742586;
}
double f(double x, double y, double z) {
double r41742587 = x;
double r41742588 = -1.9223608795668832e+146;
bool r41742589 = r41742587 <= r41742588;
double r41742590 = -r41742587;
double r41742591 = 0.3333333333333333;
double r41742592 = sqrt(r41742591);
double r41742593 = r41742590 * r41742592;
double r41742594 = 2.8767154662268737e+124;
bool r41742595 = r41742587 <= r41742594;
double r41742596 = 1.0;
double r41742597 = 3.0;
double r41742598 = cbrt(r41742597);
double r41742599 = r41742598 * r41742598;
double r41742600 = r41742596 / r41742599;
double r41742601 = y;
double r41742602 = r41742601 * r41742601;
double r41742603 = r41742587 * r41742587;
double r41742604 = r41742602 + r41742603;
double r41742605 = z;
double r41742606 = r41742605 * r41742605;
double r41742607 = r41742604 + r41742606;
double r41742608 = r41742607 / r41742598;
double r41742609 = r41742600 * r41742608;
double r41742610 = sqrt(r41742609);
double r41742611 = r41742592 * r41742587;
double r41742612 = r41742595 ? r41742610 : r41742611;
double r41742613 = r41742589 ? r41742593 : r41742612;
return r41742613;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 34.8 |
|---|---|
| Target | 23.7 |
| Herbie | 24.1 |
if x < -1.9223608795668832e+146Initial program 57.8
Taylor expanded around -inf 15.1
Simplified15.1
if -1.9223608795668832e+146 < x < 2.8767154662268737e+124Initial program 26.9
rmApplied add-cube-cbrt26.9
Applied *-un-lft-identity26.9
Applied times-frac27.0
if 2.8767154662268737e+124 < x Initial program 54.0
Taylor expanded around inf 17.5
Final simplification24.1
herbie shell --seed 2019162
(FPCore (x y z)
:name "Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1"
:herbie-target
(if (< z -6.396479394109776e+136) (/ (- z) (sqrt 3.0)) (if (< z 7.320293694404182e+117) (/ (sqrt (+ (+ (* z z) (* x x)) (* y y))) (sqrt 3.0)) (* (sqrt 0.3333333333333333) z)))
(sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3.0)))