Average Error: 38.6 → 26.2
Time: 4.4s
Precision: binary64
\[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -6.8496576220412298 \cdot 10^{120}:\\ \;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\ \mathbf{elif}\;x \le -1.8650005235847141 \cdot 10^{-181}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\ \mathbf{elif}\;x \le -7.00346309091153748 \cdot 10^{-197}:\\ \;\;\;\;\frac{z}{\sqrt{3}}\\ \mathbf{elif}\;x \le 1.62772734015914258 \cdot 10^{95}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \sqrt{0.333333333333333315}\\ \end{array}\]
\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}
\begin{array}{l}
\mathbf{if}\;x \le -6.8496576220412298 \cdot 10^{120}:\\
\;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\

\mathbf{elif}\;x \le -1.8650005235847141 \cdot 10^{-181}:\\
\;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\

\mathbf{elif}\;x \le -7.00346309091153748 \cdot 10^{-197}:\\
\;\;\;\;\frac{z}{\sqrt{3}}\\

\mathbf{elif}\;x \le 1.62772734015914258 \cdot 10^{95}:\\
\;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\

\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.333333333333333315}\\

\end{array}
double code(double x, double y, double z) {
	return ((double) sqrt(((double) (((double) (((double) (((double) (x * x)) + ((double) (y * y)))) + ((double) (z * z)))) / 3.0))));
}
double code(double x, double y, double z) {
	double VAR;
	if ((x <= -6.84965762204123e+120)) {
		VAR = ((double) (-1.0 * ((double) (x * ((double) sqrt(0.3333333333333333))))));
	} else {
		double VAR_1;
		if ((x <= -1.865000523584714e-181)) {
			VAR_1 = ((double) sqrt(((double) (0.3333333333333333 * ((double) (((double) (((double) (x * x)) + ((double) (y * y)))) + ((double) (z * z))))))));
		} else {
			double VAR_2;
			if ((x <= -7.003463090911537e-197)) {
				VAR_2 = ((double) (z / ((double) sqrt(3.0))));
			} else {
				double VAR_3;
				if ((x <= 1.6277273401591426e+95)) {
					VAR_3 = ((double) sqrt(((double) (0.3333333333333333 * ((double) (((double) (((double) (x * x)) + ((double) (y * y)))) + ((double) (z * z))))))));
				} else {
					VAR_3 = ((double) (x * ((double) sqrt(0.3333333333333333))));
				}
				VAR_2 = VAR_3;
			}
			VAR_1 = VAR_2;
		}
		VAR = VAR_1;
	}
	return VAR;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original38.6
Target26.3
Herbie26.2
\[\begin{array}{l} \mathbf{if}\;z \lt -6.3964793941097758 \cdot 10^{136}:\\ \;\;\;\;\frac{-z}{\sqrt{3}}\\ \mathbf{elif}\;z \lt 7.3202936944041821 \cdot 10^{117}:\\ \;\;\;\;\frac{\sqrt{\left(z \cdot z + x \cdot x\right) + y \cdot y}}{\sqrt{3}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{0.333333333333333315} \cdot z\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if x < -6.8496576220412298e120

    1. Initial program 57.7

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around -inf 16.5

      \[\leadsto \color{blue}{-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)}\]

    if -6.8496576220412298e120 < x < -1.8650005235847141e-181 or -7.00346309091153748e-197 < x < 1.62772734015914258e95

    1. Initial program 29.9

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around 0 30.0

      \[\leadsto \sqrt{\color{blue}{0.333333333333333315 \cdot {x}^{2} + \left(0.333333333333333315 \cdot {y}^{2} + 0.333333333333333315 \cdot {z}^{2}\right)}}\]
    3. Simplified30.0

      \[\leadsto \sqrt{\color{blue}{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}}\]

    if -1.8650005235847141e-181 < x < -7.00346309091153748e-197

    1. Initial program 31.3

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Using strategy rm
    3. Applied sqrt-div31.4

      \[\leadsto \color{blue}{\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt{3}}}\]
    4. Taylor expanded around 0 50.1

      \[\leadsto \frac{\color{blue}{z}}{\sqrt{3}}\]

    if 1.62772734015914258e95 < x

    1. Initial program 55.0

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around inf 18.9

      \[\leadsto \color{blue}{x \cdot \sqrt{0.333333333333333315}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification26.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -6.8496576220412298 \cdot 10^{120}:\\ \;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\ \mathbf{elif}\;x \le -1.8650005235847141 \cdot 10^{-181}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\ \mathbf{elif}\;x \le -7.00346309091153748 \cdot 10^{-197}:\\ \;\;\;\;\frac{z}{\sqrt{3}}\\ \mathbf{elif}\;x \le 1.62772734015914258 \cdot 10^{95}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right)}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \sqrt{0.333333333333333315}\\ \end{array}\]

Reproduce

herbie shell --seed 2020174 
(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) (/ (neg 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)))