\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -3.579487785954697432023486781062392489463 \cdot 10^{94}:\\
\;\;\;\;\left(-1 \cdot x\right) \cdot \sqrt{\frac{1}{3}}\\
\mathbf{elif}\;x \le 6.058132317483692417052640734859374750552 \cdot 10^{-184}:\\
\;\;\;\;\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z} \cdot \sqrt{\frac{1}{3}}\\
\mathbf{elif}\;x \le 4.463507529461488747590627312338750545799 \cdot 10^{-156}:\\
\;\;\;\;\frac{1}{\sqrt[3]{\sqrt{3}} \cdot \sqrt[3]{\sqrt{3}}} \cdot \frac{z}{\sqrt[3]{\sqrt{3}}}\\
\mathbf{elif}\;x \le 1.388151731591545501959511120790879854274 \cdot 10^{99}:\\
\;\;\;\;\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt{3}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\sqrt{3}}\\
\end{array}double f(double x, double y, double z) {
double r1032797 = x;
double r1032798 = r1032797 * r1032797;
double r1032799 = y;
double r1032800 = r1032799 * r1032799;
double r1032801 = r1032798 + r1032800;
double r1032802 = z;
double r1032803 = r1032802 * r1032802;
double r1032804 = r1032801 + r1032803;
double r1032805 = 3.0;
double r1032806 = r1032804 / r1032805;
double r1032807 = sqrt(r1032806);
return r1032807;
}
double f(double x, double y, double z) {
double r1032808 = x;
double r1032809 = -3.5794877859546974e+94;
bool r1032810 = r1032808 <= r1032809;
double r1032811 = -1.0;
double r1032812 = r1032811 * r1032808;
double r1032813 = 1.0;
double r1032814 = 3.0;
double r1032815 = r1032813 / r1032814;
double r1032816 = sqrt(r1032815);
double r1032817 = r1032812 * r1032816;
double r1032818 = 6.058132317483692e-184;
bool r1032819 = r1032808 <= r1032818;
double r1032820 = r1032808 * r1032808;
double r1032821 = y;
double r1032822 = r1032821 * r1032821;
double r1032823 = r1032820 + r1032822;
double r1032824 = z;
double r1032825 = r1032824 * r1032824;
double r1032826 = r1032823 + r1032825;
double r1032827 = sqrt(r1032826);
double r1032828 = r1032827 * r1032816;
double r1032829 = 4.463507529461489e-156;
bool r1032830 = r1032808 <= r1032829;
double r1032831 = sqrt(r1032814);
double r1032832 = cbrt(r1032831);
double r1032833 = r1032832 * r1032832;
double r1032834 = r1032813 / r1032833;
double r1032835 = r1032824 / r1032832;
double r1032836 = r1032834 * r1032835;
double r1032837 = 1.3881517315915455e+99;
bool r1032838 = r1032808 <= r1032837;
double r1032839 = r1032827 / r1032831;
double r1032840 = r1032808 / r1032831;
double r1032841 = r1032838 ? r1032839 : r1032840;
double r1032842 = r1032830 ? r1032836 : r1032841;
double r1032843 = r1032819 ? r1032828 : r1032842;
double r1032844 = r1032810 ? r1032817 : r1032843;
return r1032844;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 37.8 |
|---|---|
| Target | 25.7 |
| Herbie | 26.0 |
if x < -3.5794877859546974e+94Initial program 52.6
rmApplied div-inv52.6
Applied sqrt-prod52.7
Taylor expanded around -inf 19.5
if -3.5794877859546974e+94 < x < 6.058132317483692e-184Initial program 30.0
rmApplied div-inv30.0
Applied sqrt-prod30.1
if 6.058132317483692e-184 < x < 4.463507529461489e-156Initial program 32.0
rmApplied sqrt-div32.0
Taylor expanded around 0 46.3
rmApplied add-cube-cbrt46.4
Applied *-un-lft-identity46.4
Applied times-frac46.3
if 4.463507529461489e-156 < x < 1.3881517315915455e+99Initial program 27.3
rmApplied sqrt-div27.5
if 1.3881517315915455e+99 < x Initial program 54.4
rmApplied sqrt-div54.5
Taylor expanded around inf 18.7
Final simplification26.0
herbie shell --seed 2019353
(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)))