\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -1.052922090158918936796058329983412299556 \cdot 10^{85}:\\
\;\;\;\;\sqrt{\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}} \cdot \left(-1 \cdot \left(\sqrt{\frac{1}{\sqrt[3]{3}}} \cdot x\right)\right)\\
\mathbf{elif}\;x \le 2.831723391366531742542950799194105898801 \cdot 10^{132}:\\
\;\;\;\;\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.3333333333333333148296162562473909929395}\\
\end{array}double f(double x, double y, double z) {
double r827780 = x;
double r827781 = r827780 * r827780;
double r827782 = y;
double r827783 = r827782 * r827782;
double r827784 = r827781 + r827783;
double r827785 = z;
double r827786 = r827785 * r827785;
double r827787 = r827784 + r827786;
double r827788 = 3.0;
double r827789 = r827787 / r827788;
double r827790 = sqrt(r827789);
return r827790;
}
double f(double x, double y, double z) {
double r827791 = x;
double r827792 = -1.052922090158919e+85;
bool r827793 = r827791 <= r827792;
double r827794 = 1.0;
double r827795 = 3.0;
double r827796 = cbrt(r827795);
double r827797 = r827796 * r827796;
double r827798 = r827794 / r827797;
double r827799 = sqrt(r827798);
double r827800 = -1.0;
double r827801 = r827794 / r827796;
double r827802 = sqrt(r827801);
double r827803 = r827802 * r827791;
double r827804 = r827800 * r827803;
double r827805 = r827799 * r827804;
double r827806 = 2.8317233913665317e+132;
bool r827807 = r827791 <= r827806;
double r827808 = r827791 * r827791;
double r827809 = y;
double r827810 = r827809 * r827809;
double r827811 = r827808 + r827810;
double r827812 = z;
double r827813 = r827812 * r827812;
double r827814 = r827811 + r827813;
double r827815 = r827814 / r827795;
double r827816 = sqrt(r827815);
double r827817 = 0.3333333333333333;
double r827818 = sqrt(r827817);
double r827819 = r827791 * r827818;
double r827820 = r827807 ? r827816 : r827819;
double r827821 = r827793 ? r827805 : r827820;
return r827821;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.1 |
|---|---|
| Target | 26.0 |
| Herbie | 25.7 |
if x < -1.052922090158919e+85Initial program 53.4
rmApplied add-cube-cbrt53.4
Applied *-un-lft-identity53.4
Applied times-frac53.4
Applied sqrt-prod53.4
Taylor expanded around -inf 20.3
if -1.052922090158919e+85 < x < 2.8317233913665317e+132Initial program 29.5
if 2.8317233913665317e+132 < x Initial program 59.7
Taylor expanded around inf 14.2
Final simplification25.7
herbie shell --seed 2020001
(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)))