\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\begin{array}{l}
\mathbf{if}\;x \le -3.99047635474855928770919369247857947665 \cdot 10^{124}:\\
\;\;\;\;\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 9.333719392464218207997872709553383250537 \cdot 10^{137}:\\
\;\;\;\;\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 r912653 = x;
double r912654 = r912653 * r912653;
double r912655 = y;
double r912656 = r912655 * r912655;
double r912657 = r912654 + r912656;
double r912658 = z;
double r912659 = r912658 * r912658;
double r912660 = r912657 + r912659;
double r912661 = 3.0;
double r912662 = r912660 / r912661;
double r912663 = sqrt(r912662);
return r912663;
}
double f(double x, double y, double z) {
double r912664 = x;
double r912665 = -3.9904763547485593e+124;
bool r912666 = r912664 <= r912665;
double r912667 = 1.0;
double r912668 = 3.0;
double r912669 = cbrt(r912668);
double r912670 = r912669 * r912669;
double r912671 = r912667 / r912670;
double r912672 = sqrt(r912671);
double r912673 = -1.0;
double r912674 = r912667 / r912669;
double r912675 = sqrt(r912674);
double r912676 = r912675 * r912664;
double r912677 = r912673 * r912676;
double r912678 = r912672 * r912677;
double r912679 = 9.333719392464218e+137;
bool r912680 = r912664 <= r912679;
double r912681 = r912664 * r912664;
double r912682 = y;
double r912683 = r912682 * r912682;
double r912684 = r912681 + r912683;
double r912685 = z;
double r912686 = r912685 * r912685;
double r912687 = r912684 + r912686;
double r912688 = r912687 / r912668;
double r912689 = sqrt(r912688);
double r912690 = 0.3333333333333333;
double r912691 = sqrt(r912690);
double r912692 = r912664 * r912691;
double r912693 = r912680 ? r912689 : r912692;
double r912694 = r912666 ? r912678 : r912693;
return r912694;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 39.0 |
|---|---|
| Target | 26.3 |
| Herbie | 26.3 |
if x < -3.9904763547485593e+124Initial program 58.5
rmApplied add-cube-cbrt58.5
Applied *-un-lft-identity58.5
Applied times-frac58.5
Applied sqrt-prod58.5
Taylor expanded around -inf 15.9
if -3.9904763547485593e+124 < x < 9.333719392464218e+137Initial program 30.4
if 9.333719392464218e+137 < x Initial program 60.6
Taylor expanded around inf 17.2
Final simplification26.3
herbie shell --seed 2020002 +o rules:numerics
(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)))