\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}:\\
\;\;\;\;\frac{x}{\sqrt{\sqrt[3]{3}} \cdot \left|\sqrt[3]{3}\right|}\\
\end{array}double f(double x, double y, double z) {
double r934718 = x;
double r934719 = r934718 * r934718;
double r934720 = y;
double r934721 = r934720 * r934720;
double r934722 = r934719 + r934721;
double r934723 = z;
double r934724 = r934723 * r934723;
double r934725 = r934722 + r934724;
double r934726 = 3.0;
double r934727 = r934725 / r934726;
double r934728 = sqrt(r934727);
return r934728;
}
double f(double x, double y, double z) {
double r934729 = x;
double r934730 = -1.052922090158919e+85;
bool r934731 = r934729 <= r934730;
double r934732 = 1.0;
double r934733 = 3.0;
double r934734 = cbrt(r934733);
double r934735 = r934734 * r934734;
double r934736 = r934732 / r934735;
double r934737 = sqrt(r934736);
double r934738 = -1.0;
double r934739 = r934732 / r934734;
double r934740 = sqrt(r934739);
double r934741 = r934740 * r934729;
double r934742 = r934738 * r934741;
double r934743 = r934737 * r934742;
double r934744 = 2.8317233913665317e+132;
bool r934745 = r934729 <= r934744;
double r934746 = r934729 * r934729;
double r934747 = y;
double r934748 = r934747 * r934747;
double r934749 = r934746 + r934748;
double r934750 = z;
double r934751 = r934750 * r934750;
double r934752 = r934749 + r934751;
double r934753 = r934752 / r934733;
double r934754 = sqrt(r934753);
double r934755 = sqrt(r934734);
double r934756 = fabs(r934734);
double r934757 = r934755 * r934756;
double r934758 = r934729 / r934757;
double r934759 = r934745 ? r934754 : r934758;
double r934760 = r934731 ? r934743 : r934759;
return r934760;
}




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
rmApplied add-cube-cbrt59.7
Applied *-un-lft-identity59.7
Applied times-frac59.8
Applied sqrt-prod59.8
Taylor expanded around inf 14.1
rmApplied sqrt-div14.4
Applied associate-*l/14.3
Applied sqrt-div14.3
Applied frac-times14.2
Simplified14.2
Simplified14.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)))