Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5

Percentage Accurate: 69.9% → 96.0%
Time: 13.2s
Alternatives: 9
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))
double code(double x, double y, double z) {
	return 2.0 * sqrt((((x * y) + (x * z)) + (y * z)));
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = 2.0d0 * sqrt((((x * y) + (x * z)) + (y * z)))
end function
public static double code(double x, double y, double z) {
	return 2.0 * Math.sqrt((((x * y) + (x * z)) + (y * z)));
}
def code(x, y, z):
	return 2.0 * math.sqrt((((x * y) + (x * z)) + (y * z)))
function code(x, y, z)
	return Float64(2.0 * sqrt(Float64(Float64(Float64(x * y) + Float64(x * z)) + Float64(y * z))))
end
function tmp = code(x, y, z)
	tmp = 2.0 * sqrt((((x * y) + (x * z)) + (y * z)));
end
code[x_, y_, z_] := N[(2.0 * N[Sqrt[N[(N[(N[(x * y), $MachinePrecision] + N[(x * z), $MachinePrecision]), $MachinePrecision] + N[(y * z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 9 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 69.9% accurate, 1.0× speedup?

\[\begin{array}{l} \\ 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))
double code(double x, double y, double z) {
	return 2.0 * sqrt((((x * y) + (x * z)) + (y * z)));
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = 2.0d0 * sqrt((((x * y) + (x * z)) + (y * z)))
end function
public static double code(double x, double y, double z) {
	return 2.0 * Math.sqrt((((x * y) + (x * z)) + (y * z)));
}
def code(x, y, z):
	return 2.0 * math.sqrt((((x * y) + (x * z)) + (y * z)))
function code(x, y, z)
	return Float64(2.0 * sqrt(Float64(Float64(Float64(x * y) + Float64(x * z)) + Float64(y * z))))
end
function tmp = code(x, y, z)
	tmp = 2.0 * sqrt((((x * y) + (x * z)) + (y * z)));
end
code[x_, y_, z_] := N[(2.0 * N[Sqrt[N[(N[(N[(x * y), $MachinePrecision] + N[(x * z), $MachinePrecision]), $MachinePrecision] + N[(y * z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z}
\end{array}

Alternative 1: 96.0% accurate, 0.3× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq -8.5 \cdot 10^{+84}:\\ \;\;\;\;2 \cdot \left(y \cdot \left(0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right) - \sqrt{\frac{x + z}{y}}\right)\right)\\ \mathbf{elif}\;y \leq -2 \cdot 10^{-272}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y -8.5e+84)
   (*
    2.0
    (* y (- (* 0.5 (* x (sqrt (/ z (pow y 3.0))))) (sqrt (/ (+ x z) y)))))
   (if (<= y -2e-272)
     (* 2.0 (sqrt (* x (+ y z))))
     (* 2.0 (* (sqrt (fma x (/ y z) (+ y x))) (sqrt z))))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= -8.5e+84) {
		tmp = 2.0 * (y * ((0.5 * (x * sqrt((z / pow(y, 3.0))))) - sqrt(((x + z) / y))));
	} else if (y <= -2e-272) {
		tmp = 2.0 * sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * (sqrt(fma(x, (y / z), (y + x))) * sqrt(z));
	}
	return tmp;
}
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= -8.5e+84)
		tmp = Float64(2.0 * Float64(y * Float64(Float64(0.5 * Float64(x * sqrt(Float64(z / (y ^ 3.0))))) - sqrt(Float64(Float64(x + z) / y)))));
	elseif (y <= -2e-272)
		tmp = Float64(2.0 * sqrt(Float64(x * Float64(y + z))));
	else
		tmp = Float64(2.0 * Float64(sqrt(fma(x, Float64(y / z), Float64(y + x))) * sqrt(z)));
	end
	return tmp
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, -8.5e+84], N[(2.0 * N[(y * N[(N[(0.5 * N[(x * N[Sqrt[N[(z / N[Power[y, 3.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[Sqrt[N[(N[(x + z), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y, -2e-272], N[(2.0 * N[Sqrt[N[(x * N[(y + z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Sqrt[N[(x * N[(y / z), $MachinePrecision] + N[(y + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sqrt[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq -8.5 \cdot 10^{+84}:\\
\;\;\;\;2 \cdot \left(y \cdot \left(0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right) - \sqrt{\frac{x + z}{y}}\right)\right)\\

\mathbf{elif}\;y \leq -2 \cdot 10^{-272}:\\
\;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if y < -8.5000000000000008e84

    1. Initial program 52.5%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+52.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative52.5%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in52.5%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified52.5%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in y around inf 0.9%

      \[\leadsto 2 \cdot \color{blue}{\left(y \cdot \left(\sqrt{\frac{x + z}{y}} + 0.5 \cdot \left(\left(x \cdot z\right) \cdot \sqrt{\frac{1}{{y}^{3} \cdot \left(x + z\right)}}\right)\right)\right)} \]
    6. Step-by-step derivation
      1. +-commutative0.9%

        \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{\color{blue}{z + x}}{y}} + 0.5 \cdot \left(\left(x \cdot z\right) \cdot \sqrt{\frac{1}{{y}^{3} \cdot \left(x + z\right)}}\right)\right)\right) \]
      2. *-commutative0.9%

        \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{z + x}{y}} + 0.5 \cdot \left(\color{blue}{\left(z \cdot x\right)} \cdot \sqrt{\frac{1}{{y}^{3} \cdot \left(x + z\right)}}\right)\right)\right) \]
      3. +-commutative0.9%

        \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{z + x}{y}} + 0.5 \cdot \left(\left(z \cdot x\right) \cdot \sqrt{\frac{1}{{y}^{3} \cdot \color{blue}{\left(z + x\right)}}}\right)\right)\right) \]
    7. Simplified0.9%

      \[\leadsto 2 \cdot \color{blue}{\left(y \cdot \left(\sqrt{\frac{z + x}{y}} + 0.5 \cdot \left(\left(z \cdot x\right) \cdot \sqrt{\frac{1}{{y}^{3} \cdot \left(z + x\right)}}\right)\right)\right)} \]
    8. Taylor expanded in z around inf 0.9%

      \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{z + x}{y}} + 0.5 \cdot \color{blue}{\left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right)}\right)\right) \]
    9. Taylor expanded in y around -inf 0.0%

      \[\leadsto 2 \cdot \left(y \cdot \left(\color{blue}{\sqrt{\frac{x + z}{y}} \cdot {\left(\sqrt{-1}\right)}^{2}} + 0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right)\right)\right) \]
    10. Step-by-step derivation
      1. unpow20.0%

        \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{x + z}{y}} \cdot \color{blue}{\left(\sqrt{-1} \cdot \sqrt{-1}\right)} + 0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right)\right)\right) \]
      2. rem-square-sqrt84.0%

        \[\leadsto 2 \cdot \left(y \cdot \left(\sqrt{\frac{x + z}{y}} \cdot \color{blue}{-1} + 0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right)\right)\right) \]
    11. Simplified84.0%

      \[\leadsto 2 \cdot \left(y \cdot \left(\color{blue}{\sqrt{\frac{x + z}{y}} \cdot -1} + 0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right)\right)\right) \]

    if -8.5000000000000008e84 < y < -1.99999999999999986e-272

    1. Initial program 75.9%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+75.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative75.9%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in75.9%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified75.9%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 60.9%

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

    if -1.99999999999999986e-272 < y

    1. Initial program 71.7%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in71.8%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified71.8%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. distribute-rgt-in71.7%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      2. associate-+r+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + y \cdot z\right) + x \cdot z}} \]
      3. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\left(\color{blue}{y \cdot x} + y \cdot z\right) + x \cdot z} \]
      4. distribute-lft-in71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot \left(x + z\right)} + x \cdot z} \]
      5. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x + z\right) \cdot y} + x \cdot z} \]
      6. add-sqr-sqrt68.6%

        \[\leadsto 2 \cdot \sqrt{\left(x + z\right) \cdot \color{blue}{\left(\sqrt{y} \cdot \sqrt{y}\right)} + x \cdot z} \]
      7. associate-*r*68.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(\left(x + z\right) \cdot \sqrt{y}\right) \cdot \sqrt{y}} + x \cdot z} \]
      8. fma-define68.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\mathsf{fma}\left(\left(x + z\right) \cdot \sqrt{y}, \sqrt{y}, x \cdot z\right)}} \]
    6. Applied egg-rr68.6%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\mathsf{fma}\left(\left(x + z\right) \cdot \sqrt{y}, \sqrt{y}, x \cdot z\right)}} \]
    7. Taylor expanded in z around inf 61.2%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot \left(x + \left(y + \frac{x \cdot y}{z}\right)\right)}} \]
    8. Step-by-step derivation
      1. associate-+r+61.2%

        \[\leadsto 2 \cdot \sqrt{z \cdot \color{blue}{\left(\left(x + y\right) + \frac{x \cdot y}{z}\right)}} \]
      2. associate-/l*58.3%

        \[\leadsto 2 \cdot \sqrt{z \cdot \left(\left(x + y\right) + \color{blue}{x \cdot \frac{y}{z}}\right)} \]
    9. Simplified58.3%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot \left(\left(x + y\right) + x \cdot \frac{y}{z}\right)}} \]
    10. Step-by-step derivation
      1. *-commutative58.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(\left(x + y\right) + x \cdot \frac{y}{z}\right) \cdot z}} \]
      2. sqrt-prod57.7%

        \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{\left(x + y\right) + x \cdot \frac{y}{z}} \cdot \sqrt{z}\right)} \]
      3. +-commutative57.7%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \frac{y}{z} + \left(x + y\right)}} \cdot \sqrt{z}\right) \]
      4. fma-define57.7%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{\mathsf{fma}\left(x, \frac{y}{z}, x + y\right)}} \cdot \sqrt{z}\right) \]
    11. Applied egg-rr57.7%

      \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, x + y\right)} \cdot \sqrt{z}\right)} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification64.1%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq -8.5 \cdot 10^{+84}:\\ \;\;\;\;2 \cdot \left(y \cdot \left(0.5 \cdot \left(x \cdot \sqrt{\frac{z}{{y}^{3}}}\right) - \sqrt{\frac{x + z}{y}}\right)\right)\\ \mathbf{elif}\;y \leq -2 \cdot 10^{-272}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 85.3% accurate, 0.4× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq -2 \cdot 10^{-272}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y -2e-272)
   (* 2.0 (sqrt (* x (+ y z))))
   (* 2.0 (* (sqrt (fma x (/ y z) (+ y x))) (sqrt z)))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= -2e-272) {
		tmp = 2.0 * sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * (sqrt(fma(x, (y / z), (y + x))) * sqrt(z));
	}
	return tmp;
}
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= -2e-272)
		tmp = Float64(2.0 * sqrt(Float64(x * Float64(y + z))));
	else
		tmp = Float64(2.0 * Float64(sqrt(fma(x, Float64(y / z), Float64(y + x))) * sqrt(z)));
	end
	return tmp
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, -2e-272], N[(2.0 * N[Sqrt[N[(x * N[(y + z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Sqrt[N[(x * N[(y / z), $MachinePrecision] + N[(y + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sqrt[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq -2 \cdot 10^{-272}:\\
\;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < -1.99999999999999986e-272

    1. Initial program 65.4%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+65.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative65.4%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in65.4%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified65.4%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 47.3%

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

    if -1.99999999999999986e-272 < y

    1. Initial program 71.7%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in71.8%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified71.8%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. distribute-rgt-in71.7%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      2. associate-+r+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + y \cdot z\right) + x \cdot z}} \]
      3. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\left(\color{blue}{y \cdot x} + y \cdot z\right) + x \cdot z} \]
      4. distribute-lft-in71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot \left(x + z\right)} + x \cdot z} \]
      5. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x + z\right) \cdot y} + x \cdot z} \]
      6. add-sqr-sqrt68.6%

        \[\leadsto 2 \cdot \sqrt{\left(x + z\right) \cdot \color{blue}{\left(\sqrt{y} \cdot \sqrt{y}\right)} + x \cdot z} \]
      7. associate-*r*68.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(\left(x + z\right) \cdot \sqrt{y}\right) \cdot \sqrt{y}} + x \cdot z} \]
      8. fma-define68.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\mathsf{fma}\left(\left(x + z\right) \cdot \sqrt{y}, \sqrt{y}, x \cdot z\right)}} \]
    6. Applied egg-rr68.6%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\mathsf{fma}\left(\left(x + z\right) \cdot \sqrt{y}, \sqrt{y}, x \cdot z\right)}} \]
    7. Taylor expanded in z around inf 61.2%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot \left(x + \left(y + \frac{x \cdot y}{z}\right)\right)}} \]
    8. Step-by-step derivation
      1. associate-+r+61.2%

        \[\leadsto 2 \cdot \sqrt{z \cdot \color{blue}{\left(\left(x + y\right) + \frac{x \cdot y}{z}\right)}} \]
      2. associate-/l*58.3%

        \[\leadsto 2 \cdot \sqrt{z \cdot \left(\left(x + y\right) + \color{blue}{x \cdot \frac{y}{z}}\right)} \]
    9. Simplified58.3%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot \left(\left(x + y\right) + x \cdot \frac{y}{z}\right)}} \]
    10. Step-by-step derivation
      1. *-commutative58.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(\left(x + y\right) + x \cdot \frac{y}{z}\right) \cdot z}} \]
      2. sqrt-prod57.7%

        \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{\left(x + y\right) + x \cdot \frac{y}{z}} \cdot \sqrt{z}\right)} \]
      3. +-commutative57.7%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \frac{y}{z} + \left(x + y\right)}} \cdot \sqrt{z}\right) \]
      4. fma-define57.7%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{\mathsf{fma}\left(x, \frac{y}{z}, x + y\right)}} \cdot \sqrt{z}\right) \]
    11. Applied egg-rr57.7%

      \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, x + y\right)} \cdot \sqrt{z}\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification52.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq -2 \cdot 10^{-272}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{\mathsf{fma}\left(x, \frac{y}{z}, y + x\right)} \cdot \sqrt{z}\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 83.9% accurate, 0.5× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq 1.65 \cdot 10^{+18}:\\ \;\;\;\;2 \cdot \sqrt{\mathsf{fma}\left(x, z, y \cdot \left(x + z\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{z + x \cdot \left(1 + \frac{z}{y}\right)} \cdot \sqrt{y}\right)\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y 1.65e+18)
   (* 2.0 (sqrt (fma x z (* y (+ x z)))))
   (* 2.0 (* (sqrt (+ z (* x (+ 1.0 (/ z y))))) (sqrt y)))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= 1.65e+18) {
		tmp = 2.0 * sqrt(fma(x, z, (y * (x + z))));
	} else {
		tmp = 2.0 * (sqrt((z + (x * (1.0 + (z / y))))) * sqrt(y));
	}
	return tmp;
}
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= 1.65e+18)
		tmp = Float64(2.0 * sqrt(fma(x, z, Float64(y * Float64(x + z)))));
	else
		tmp = Float64(2.0 * Float64(sqrt(Float64(z + Float64(x * Float64(1.0 + Float64(z / y))))) * sqrt(y)));
	end
	return tmp
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, 1.65e+18], N[(2.0 * N[Sqrt[N[(x * z + N[(y * N[(x + z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Sqrt[N[(z + N[(x * N[(1.0 + N[(z / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sqrt[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq 1.65 \cdot 10^{+18}:\\
\;\;\;\;2 \cdot \sqrt{\mathsf{fma}\left(x, z, y \cdot \left(x + z\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\sqrt{z + x \cdot \left(1 + \frac{z}{y}\right)} \cdot \sqrt{y}\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < 1.65e18

    1. Initial program 71.7%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x + \left(z \cdot y + z \cdot x\right)}} \]
      8. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{y \cdot z} + z \cdot x\right)} \]
      9. *-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(y \cdot z + \color{blue}{x \cdot z}\right)} \]
      10. associate-+l+71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(y \cdot x + y \cdot z\right) + x \cdot z}} \]
      11. +-commutative71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot z + \left(y \cdot x + y \cdot z\right)}} \]
      12. fma-define71.7%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\mathsf{fma}\left(x, z, y \cdot x + y \cdot z\right)}} \]
      13. distribute-lft-out71.7%

        \[\leadsto 2 \cdot \sqrt{\mathsf{fma}\left(x, z, \color{blue}{y \cdot \left(x + z\right)}\right)} \]
    3. Simplified71.7%

      \[\leadsto \color{blue}{2 \cdot \sqrt{\mathsf{fma}\left(x, z, y \cdot \left(x + z\right)\right)}} \]
    4. Add Preprocessing

    if 1.65e18 < y

    1. Initial program 58.6%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+58.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative58.6%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in58.7%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified58.7%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 50.2%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot \left(y + \left(z + \frac{y \cdot z}{x}\right)\right)}} \]
    6. Step-by-step derivation
      1. associate-/l*50.3%

        \[\leadsto 2 \cdot \sqrt{x \cdot \left(y + \left(z + \color{blue}{y \cdot \frac{z}{x}}\right)\right)} \]
    7. Simplified50.3%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot \left(y + \left(z + y \cdot \frac{z}{x}\right)\right)}} \]
    8. Taylor expanded in y around inf 55.4%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot \left(x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}\right)}} \]
    9. Step-by-step derivation
      1. *-commutative55.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}\right) \cdot y}} \]
      2. sqrt-prod69.8%

        \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}} \cdot \sqrt{y}\right)} \]
      3. +-commutative69.8%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{\frac{x \cdot z}{y} + x \cdot \left(1 + \frac{z}{x}\right)}} \cdot \sqrt{y}\right) \]
      4. associate-/l*73.0%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \frac{z}{y}} + x \cdot \left(1 + \frac{z}{x}\right)} \cdot \sqrt{y}\right) \]
      5. distribute-lft-out73.0%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \left(\frac{z}{y} + \left(1 + \frac{z}{x}\right)\right)}} \cdot \sqrt{y}\right) \]
    10. Applied egg-rr73.0%

      \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{x \cdot \left(\frac{z}{y} + \left(1 + \frac{z}{x}\right)\right)} \cdot \sqrt{y}\right)} \]
    11. Taylor expanded in x around 0 91.2%

      \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{z + x \cdot \left(1 + \frac{z}{y}\right)}} \cdot \sqrt{y}\right) \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 4: 83.9% accurate, 0.5× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq 2.8 \cdot 10^{-290}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + \left(z + y \cdot \frac{z}{x}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \left(\sqrt{z} \cdot \sqrt{y}\right)\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y 2.8e-290)
   (* 2.0 (sqrt (* x (+ y (+ z (* y (/ z x)))))))
   (* 2.0 (* (sqrt z) (sqrt y)))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= 2.8e-290) {
		tmp = 2.0 * sqrt((x * (y + (z + (y * (z / x))))));
	} else {
		tmp = 2.0 * (sqrt(z) * sqrt(y));
	}
	return tmp;
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (y <= 2.8d-290) then
        tmp = 2.0d0 * sqrt((x * (y + (z + (y * (z / x))))))
    else
        tmp = 2.0d0 * (sqrt(z) * sqrt(y))
    end if
    code = tmp
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	double tmp;
	if (y <= 2.8e-290) {
		tmp = 2.0 * Math.sqrt((x * (y + (z + (y * (z / x))))));
	} else {
		tmp = 2.0 * (Math.sqrt(z) * Math.sqrt(y));
	}
	return tmp;
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	tmp = 0
	if y <= 2.8e-290:
		tmp = 2.0 * math.sqrt((x * (y + (z + (y * (z / x))))))
	else:
		tmp = 2.0 * (math.sqrt(z) * math.sqrt(y))
	return tmp
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= 2.8e-290)
		tmp = Float64(2.0 * sqrt(Float64(x * Float64(y + Float64(z + Float64(y * Float64(z / x)))))));
	else
		tmp = Float64(2.0 * Float64(sqrt(z) * sqrt(y)));
	end
	return tmp
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (y <= 2.8e-290)
		tmp = 2.0 * sqrt((x * (y + (z + (y * (z / x))))));
	else
		tmp = 2.0 * (sqrt(z) * sqrt(y));
	end
	tmp_2 = tmp;
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, 2.8e-290], N[(2.0 * N[Sqrt[N[(x * N[(y + N[(z + N[(y * N[(z / x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Sqrt[z], $MachinePrecision] * N[Sqrt[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq 2.8 \cdot 10^{-290}:\\
\;\;\;\;2 \cdot \sqrt{x \cdot \left(y + \left(z + y \cdot \frac{z}{x}\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\sqrt{z} \cdot \sqrt{y}\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < 2.79999999999999997e-290

    1. Initial program 66.6%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+66.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative66.6%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in66.6%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified66.6%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 61.6%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot \left(y + \left(z + \frac{y \cdot z}{x}\right)\right)}} \]
    6. Step-by-step derivation
      1. associate-/l*59.5%

        \[\leadsto 2 \cdot \sqrt{x \cdot \left(y + \left(z + \color{blue}{y \cdot \frac{z}{x}}\right)\right)} \]
    7. Simplified59.5%

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

    if 2.79999999999999997e-290 < y

    1. Initial program 71.0%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+71.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative71.0%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in71.0%

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

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 63.4%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot \left(y + \left(z + \frac{y \cdot z}{x}\right)\right)}} \]
    6. Step-by-step derivation
      1. associate-/l*60.3%

        \[\leadsto 2 \cdot \sqrt{x \cdot \left(y + \left(z + \color{blue}{y \cdot \frac{z}{x}}\right)\right)} \]
    7. Simplified60.3%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot \left(y + \left(z + y \cdot \frac{z}{x}\right)\right)}} \]
    8. Taylor expanded in y around inf 55.0%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot \left(x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}\right)}} \]
    9. Step-by-step derivation
      1. *-commutative55.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}\right) \cdot y}} \]
      2. sqrt-prod62.9%

        \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{x \cdot \left(1 + \frac{z}{x}\right) + \frac{x \cdot z}{y}} \cdot \sqrt{y}\right)} \]
      3. +-commutative62.9%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{\frac{x \cdot z}{y} + x \cdot \left(1 + \frac{z}{x}\right)}} \cdot \sqrt{y}\right) \]
      4. associate-/l*65.5%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \frac{z}{y}} + x \cdot \left(1 + \frac{z}{x}\right)} \cdot \sqrt{y}\right) \]
      5. distribute-lft-out65.5%

        \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{x \cdot \left(\frac{z}{y} + \left(1 + \frac{z}{x}\right)\right)}} \cdot \sqrt{y}\right) \]
    10. Applied egg-rr65.5%

      \[\leadsto 2 \cdot \color{blue}{\left(\sqrt{x \cdot \left(\frac{z}{y} + \left(1 + \frac{z}{x}\right)\right)} \cdot \sqrt{y}\right)} \]
    11. Taylor expanded in x around 0 34.8%

      \[\leadsto 2 \cdot \left(\sqrt{\color{blue}{z}} \cdot \sqrt{y}\right) \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 5: 70.0% accurate, 1.0× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq -2 \cdot 10^{-285}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \sqrt{z \cdot \left(y + x\right)}\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y -2e-285) (* 2.0 (sqrt (* x (+ y z)))) (* 2.0 (sqrt (* z (+ y x))))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= -2e-285) {
		tmp = 2.0 * sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * sqrt((z * (y + x)));
	}
	return tmp;
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (y <= (-2d-285)) then
        tmp = 2.0d0 * sqrt((x * (y + z)))
    else
        tmp = 2.0d0 * sqrt((z * (y + x)))
    end if
    code = tmp
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	double tmp;
	if (y <= -2e-285) {
		tmp = 2.0 * Math.sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * Math.sqrt((z * (y + x)));
	}
	return tmp;
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	tmp = 0
	if y <= -2e-285:
		tmp = 2.0 * math.sqrt((x * (y + z)))
	else:
		tmp = 2.0 * math.sqrt((z * (y + x)))
	return tmp
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= -2e-285)
		tmp = Float64(2.0 * sqrt(Float64(x * Float64(y + z))));
	else
		tmp = Float64(2.0 * sqrt(Float64(z * Float64(y + x))));
	end
	return tmp
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (y <= -2e-285)
		tmp = 2.0 * sqrt((x * (y + z)));
	else
		tmp = 2.0 * sqrt((z * (y + x)));
	end
	tmp_2 = tmp;
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, -2e-285], N[(2.0 * N[Sqrt[N[(x * N[(y + z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[Sqrt[N[(z * N[(y + x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq -2 \cdot 10^{-285}:\\
\;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \sqrt{z \cdot \left(y + x\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < -2.00000000000000015e-285

    1. Initial program 66.5%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+66.5%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative66.5%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in66.5%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified66.5%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 48.2%

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

    if -2.00000000000000015e-285 < y

    1. Initial program 70.9%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+70.9%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative70.9%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in70.9%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified70.9%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in z around inf 50.5%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{z \cdot \left(x + y\right)}} \]
    6. Step-by-step derivation
      1. +-commutative50.5%

        \[\leadsto 2 \cdot \sqrt{z \cdot \color{blue}{\left(y + x\right)}} \]
    7. Simplified50.5%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{z \cdot \left(y + x\right)}} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 6: 69.1% accurate, 1.0× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq 4.3 \cdot 10^{-293}:\\ \;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \sqrt{y \cdot z}\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y 4.3e-293) (* 2.0 (sqrt (* x (+ y z)))) (* 2.0 (sqrt (* y z)))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= 4.3e-293) {
		tmp = 2.0 * sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * sqrt((y * z));
	}
	return tmp;
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (y <= 4.3d-293) then
        tmp = 2.0d0 * sqrt((x * (y + z)))
    else
        tmp = 2.0d0 * sqrt((y * z))
    end if
    code = tmp
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	double tmp;
	if (y <= 4.3e-293) {
		tmp = 2.0 * Math.sqrt((x * (y + z)));
	} else {
		tmp = 2.0 * Math.sqrt((y * z));
	}
	return tmp;
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	tmp = 0
	if y <= 4.3e-293:
		tmp = 2.0 * math.sqrt((x * (y + z)))
	else:
		tmp = 2.0 * math.sqrt((y * z))
	return tmp
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= 4.3e-293)
		tmp = Float64(2.0 * sqrt(Float64(x * Float64(y + z))));
	else
		tmp = Float64(2.0 * sqrt(Float64(y * z)));
	end
	return tmp
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (y <= 4.3e-293)
		tmp = 2.0 * sqrt((x * (y + z)));
	else
		tmp = 2.0 * sqrt((y * z));
	end
	tmp_2 = tmp;
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, 4.3e-293], N[(2.0 * N[Sqrt[N[(x * N[(y + z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[Sqrt[N[(y * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq 4.3 \cdot 10^{-293}:\\
\;\;\;\;2 \cdot \sqrt{x \cdot \left(y + z\right)}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \sqrt{y \cdot z}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < 4.2999999999999998e-293

    1. Initial program 66.3%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+66.3%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative66.3%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in66.3%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified66.3%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around inf 48.7%

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

    if 4.2999999999999998e-293 < y

    1. Initial program 71.2%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+71.2%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative71.2%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in71.3%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified71.3%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around 0 25.6%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{y \cdot z}} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 7: 70.0% accurate, 1.0× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ 2 \cdot \sqrt{y \cdot x + z \cdot \left(y + x\right)} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z) :precision binary64 (* 2.0 (sqrt (+ (* y x) (* z (+ y x))))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	return 2.0 * sqrt(((y * x) + (z * (y + x))));
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = 2.0d0 * sqrt(((y * x) + (z * (y + x))))
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	return 2.0 * Math.sqrt(((y * x) + (z * (y + x))));
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	return 2.0 * math.sqrt(((y * x) + (z * (y + x))))
x, y, z = sort([x, y, z])
function code(x, y, z)
	return Float64(2.0 * sqrt(Float64(Float64(y * x) + Float64(z * Float64(y + x)))))
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp = code(x, y, z)
	tmp = 2.0 * sqrt(((y * x) + (z * (y + x))));
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := N[(2.0 * N[Sqrt[N[(N[(y * x), $MachinePrecision] + N[(z * N[(y + x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
2 \cdot \sqrt{y \cdot x + z \cdot \left(y + x\right)}
\end{array}
Derivation
  1. Initial program 68.8%

    \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
  2. Step-by-step derivation
    1. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
    2. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
    3. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
    4. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
    5. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
    6. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
    7. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
    8. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
    9. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
    10. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
    11. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
    12. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
    13. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
    14. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
    15. distribute-rgt-in68.8%

      \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
  3. Simplified68.8%

    \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
  4. Add Preprocessing
  5. Final simplification68.8%

    \[\leadsto 2 \cdot \sqrt{y \cdot x + z \cdot \left(y + x\right)} \]
  6. Add Preprocessing

Alternative 8: 68.0% accurate, 1.0× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ \begin{array}{l} \mathbf{if}\;y \leq -2 \cdot 10^{-310}:\\ \;\;\;\;2 \cdot \sqrt{y \cdot x}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot \sqrt{y \cdot z}\\ \end{array} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z)
 :precision binary64
 (if (<= y -2e-310) (* 2.0 (sqrt (* y x))) (* 2.0 (sqrt (* y z)))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	double tmp;
	if (y <= -2e-310) {
		tmp = 2.0 * sqrt((y * x));
	} else {
		tmp = 2.0 * sqrt((y * z));
	}
	return tmp;
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (y <= (-2d-310)) then
        tmp = 2.0d0 * sqrt((y * x))
    else
        tmp = 2.0d0 * sqrt((y * z))
    end if
    code = tmp
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	double tmp;
	if (y <= -2e-310) {
		tmp = 2.0 * Math.sqrt((y * x));
	} else {
		tmp = 2.0 * Math.sqrt((y * z));
	}
	return tmp;
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	tmp = 0
	if y <= -2e-310:
		tmp = 2.0 * math.sqrt((y * x))
	else:
		tmp = 2.0 * math.sqrt((y * z))
	return tmp
x, y, z = sort([x, y, z])
function code(x, y, z)
	tmp = 0.0
	if (y <= -2e-310)
		tmp = Float64(2.0 * sqrt(Float64(y * x)));
	else
		tmp = Float64(2.0 * sqrt(Float64(y * z)));
	end
	return tmp
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (y <= -2e-310)
		tmp = 2.0 * sqrt((y * x));
	else
		tmp = 2.0 * sqrt((y * z));
	end
	tmp_2 = tmp;
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := If[LessEqual[y, -2e-310], N[(2.0 * N[Sqrt[N[(y * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[Sqrt[N[(y * z), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
\begin{array}{l}
\mathbf{if}\;y \leq -2 \cdot 10^{-310}:\\
\;\;\;\;2 \cdot \sqrt{y \cdot x}\\

\mathbf{else}:\\
\;\;\;\;2 \cdot \sqrt{y \cdot z}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < -1.999999999999994e-310

    1. Initial program 66.0%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+66.0%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative66.0%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in66.0%

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

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in z around 0 29.6%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{x \cdot y}} \]
    6. Step-by-step derivation
      1. *-commutative29.6%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x}} \]
    7. Simplified29.6%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{y \cdot x}} \]

    if -1.999999999999994e-310 < y

    1. Initial program 71.4%

      \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
    2. Step-by-step derivation
      1. associate-+l+71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      2. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
      3. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
      4. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
      5. +-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
      6. +-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
      7. associate-+l+71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
      8. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
      9. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
      10. +-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
      11. +-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
      12. *-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
      13. associate-+l+71.4%

        \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
      14. +-commutative71.4%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
      15. distribute-rgt-in71.4%

        \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
    3. Simplified71.4%

      \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in x around 0 25.0%

      \[\leadsto 2 \cdot \color{blue}{\sqrt{y \cdot z}} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 9: 35.1% accurate, 1.1× speedup?

\[\begin{array}{l} [x, y, z] = \mathsf{sort}([x, y, z])\\ \\ 2 \cdot \sqrt{y \cdot x} \end{array} \]
NOTE: x, y, and z should be sorted in increasing order before calling this function.
(FPCore (x y z) :precision binary64 (* 2.0 (sqrt (* y x))))
assert(x < y && y < z);
double code(double x, double y, double z) {
	return 2.0 * sqrt((y * x));
}
NOTE: x, y, and z should be sorted in increasing order before calling this function.
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = 2.0d0 * sqrt((y * x))
end function
assert x < y && y < z;
public static double code(double x, double y, double z) {
	return 2.0 * Math.sqrt((y * x));
}
[x, y, z] = sort([x, y, z])
def code(x, y, z):
	return 2.0 * math.sqrt((y * x))
x, y, z = sort([x, y, z])
function code(x, y, z)
	return Float64(2.0 * sqrt(Float64(y * x)))
end
x, y, z = num2cell(sort([x, y, z])){:}
function tmp = code(x, y, z)
	tmp = 2.0 * sqrt((y * x));
end
NOTE: x, y, and z should be sorted in increasing order before calling this function.
code[x_, y_, z_] := N[(2.0 * N[Sqrt[N[(y * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
[x, y, z] = \mathsf{sort}([x, y, z])\\
\\
2 \cdot \sqrt{y \cdot x}
\end{array}
Derivation
  1. Initial program 68.8%

    \[2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + y \cdot z} \]
  2. Step-by-step derivation
    1. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
    2. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x} + \left(x \cdot z + y \cdot z\right)} \]
    3. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(\color{blue}{z \cdot x} + y \cdot z\right)} \]
    4. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \left(z \cdot x + \color{blue}{z \cdot y}\right)} \]
    5. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{y \cdot x + \color{blue}{\left(z \cdot y + z \cdot x\right)}} \]
    6. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(z \cdot y + z \cdot x\right) + y \cdot x}} \]
    7. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{z \cdot y + \left(z \cdot x + y \cdot x\right)}} \]
    8. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(\color{blue}{x \cdot z} + y \cdot x\right)} \]
    9. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{z \cdot y + \left(x \cdot z + \color{blue}{x \cdot y}\right)} \]
    10. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot z + x \cdot y\right) + z \cdot y}} \]
    11. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{\left(x \cdot y + x \cdot z\right)} + z \cdot y} \]
    12. *-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{\left(x \cdot y + x \cdot z\right) + \color{blue}{y \cdot z}} \]
    13. associate-+l+68.8%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{x \cdot y + \left(x \cdot z + y \cdot z\right)}} \]
    14. +-commutative68.8%

      \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{\left(y \cdot z + x \cdot z\right)}} \]
    15. distribute-rgt-in68.8%

      \[\leadsto 2 \cdot \sqrt{x \cdot y + \color{blue}{z \cdot \left(y + x\right)}} \]
  3. Simplified68.8%

    \[\leadsto \color{blue}{2 \cdot \sqrt{x \cdot y + z \cdot \left(y + x\right)}} \]
  4. Add Preprocessing
  5. Taylor expanded in z around 0 26.0%

    \[\leadsto 2 \cdot \color{blue}{\sqrt{x \cdot y}} \]
  6. Step-by-step derivation
    1. *-commutative26.0%

      \[\leadsto 2 \cdot \sqrt{\color{blue}{y \cdot x}} \]
  7. Simplified26.0%

    \[\leadsto 2 \cdot \color{blue}{\sqrt{y \cdot x}} \]
  8. Add Preprocessing

Developer target: 83.0% accurate, 0.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.25 \cdot \left(\left({y}^{-0.75} \cdot \left({z}^{-0.75} \cdot x\right)\right) \cdot \left(y + z\right)\right) + {z}^{0.25} \cdot {y}^{0.25}\\ \mathbf{if}\;z < 7.636950090573675 \cdot 10^{+176}:\\ \;\;\;\;2 \cdot \sqrt{\left(x + y\right) \cdot z + x \cdot y}\\ \mathbf{else}:\\ \;\;\;\;\left(t\_0 \cdot t\_0\right) \cdot 2\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (let* ((t_0
         (+
          (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z)))
          (* (pow z 0.25) (pow y 0.25)))))
   (if (< z 7.636950090573675e+176)
     (* 2.0 (sqrt (+ (* (+ x y) z) (* x y))))
     (* (* t_0 t_0) 2.0))))
double code(double x, double y, double z) {
	double t_0 = (0.25 * ((pow(y, -0.75) * (pow(z, -0.75) * x)) * (y + z))) + (pow(z, 0.25) * pow(y, 0.25));
	double tmp;
	if (z < 7.636950090573675e+176) {
		tmp = 2.0 * sqrt((((x + y) * z) + (x * y)));
	} else {
		tmp = (t_0 * t_0) * 2.0;
	}
	return tmp;
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: t_0
    real(8) :: tmp
    t_0 = (0.25d0 * (((y ** (-0.75d0)) * ((z ** (-0.75d0)) * x)) * (y + z))) + ((z ** 0.25d0) * (y ** 0.25d0))
    if (z < 7.636950090573675d+176) then
        tmp = 2.0d0 * sqrt((((x + y) * z) + (x * y)))
    else
        tmp = (t_0 * t_0) * 2.0d0
    end if
    code = tmp
end function
public static double code(double x, double y, double z) {
	double t_0 = (0.25 * ((Math.pow(y, -0.75) * (Math.pow(z, -0.75) * x)) * (y + z))) + (Math.pow(z, 0.25) * Math.pow(y, 0.25));
	double tmp;
	if (z < 7.636950090573675e+176) {
		tmp = 2.0 * Math.sqrt((((x + y) * z) + (x * y)));
	} else {
		tmp = (t_0 * t_0) * 2.0;
	}
	return tmp;
}
def code(x, y, z):
	t_0 = (0.25 * ((math.pow(y, -0.75) * (math.pow(z, -0.75) * x)) * (y + z))) + (math.pow(z, 0.25) * math.pow(y, 0.25))
	tmp = 0
	if z < 7.636950090573675e+176:
		tmp = 2.0 * math.sqrt((((x + y) * z) + (x * y)))
	else:
		tmp = (t_0 * t_0) * 2.0
	return tmp
function code(x, y, z)
	t_0 = Float64(Float64(0.25 * Float64(Float64((y ^ -0.75) * Float64((z ^ -0.75) * x)) * Float64(y + z))) + Float64((z ^ 0.25) * (y ^ 0.25)))
	tmp = 0.0
	if (z < 7.636950090573675e+176)
		tmp = Float64(2.0 * sqrt(Float64(Float64(Float64(x + y) * z) + Float64(x * y))));
	else
		tmp = Float64(Float64(t_0 * t_0) * 2.0);
	end
	return tmp
end
function tmp_2 = code(x, y, z)
	t_0 = (0.25 * (((y ^ -0.75) * ((z ^ -0.75) * x)) * (y + z))) + ((z ^ 0.25) * (y ^ 0.25));
	tmp = 0.0;
	if (z < 7.636950090573675e+176)
		tmp = 2.0 * sqrt((((x + y) * z) + (x * y)));
	else
		tmp = (t_0 * t_0) * 2.0;
	end
	tmp_2 = tmp;
end
code[x_, y_, z_] := Block[{t$95$0 = N[(N[(0.25 * N[(N[(N[Power[y, -0.75], $MachinePrecision] * N[(N[Power[z, -0.75], $MachinePrecision] * x), $MachinePrecision]), $MachinePrecision] * N[(y + z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[z, 0.25], $MachinePrecision] * N[Power[y, 0.25], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Less[z, 7.636950090573675e+176], N[(2.0 * N[Sqrt[N[(N[(N[(x + y), $MachinePrecision] * z), $MachinePrecision] + N[(x * y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(t$95$0 * t$95$0), $MachinePrecision] * 2.0), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 0.25 \cdot \left(\left({y}^{-0.75} \cdot \left({z}^{-0.75} \cdot x\right)\right) \cdot \left(y + z\right)\right) + {z}^{0.25} \cdot {y}^{0.25}\\
\mathbf{if}\;z < 7.636950090573675 \cdot 10^{+176}:\\
\;\;\;\;2 \cdot \sqrt{\left(x + y\right) \cdot z + x \cdot y}\\

\mathbf{else}:\\
\;\;\;\;\left(t\_0 \cdot t\_0\right) \cdot 2\\


\end{array}
\end{array}

Reproduce

?
herbie shell --seed 2024108 
(FPCore (x y z)
  :name "Diagrams.TwoD.Apollonian:descartes from diagrams-contrib-1.3.0.5"
  :precision binary64

  :alt
  (if (< z 7.636950090573675e+176) (* 2.0 (sqrt (+ (* (+ x y) z) (* x y)))) (* (* (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25))) (+ (* 0.25 (* (* (pow y -0.75) (* (pow z -0.75) x)) (+ y z))) (* (pow z 0.25) (pow y 0.25)))) 2.0))

  (* 2.0 (sqrt (+ (+ (* x y) (* x z)) (* y z)))))