?

Average Error: 39.1 → 23.4
Time: 12.1s
Precision: binary64
Cost: 14556

?

\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
\[\begin{array}{l} t_0 := 0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ t_1 := 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ t_2 := im \cdot \sqrt{\frac{-1}{re}}\\ \mathbf{if}\;im \leq -5 \cdot 10^{+26}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq -2.25 \cdot 10^{-159}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -5.9 \cdot 10^{-202}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq -4 \cdot 10^{-312}:\\ \;\;\;\;0.5 \cdot \left(-t_2\right)\\ \mathbf{elif}\;im \leq 4.6 \cdot 10^{-234}:\\ \;\;\;\;0.5 \cdot t_2\\ \mathbf{elif}\;im \leq 2.6 \cdot 10^{-127}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq 3.5 \cdot 10^{+18}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \end{array} \]
(FPCore (re im)
 :precision binary64
 (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
(FPCore (re im)
 :precision binary64
 (let* ((t_0 (* 0.5 (sqrt (* 2.0 (+ (- im) re)))))
        (t_1 (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
        (t_2 (* im (sqrt (/ -1.0 re)))))
   (if (<= im -5e+26)
     t_0
     (if (<= im -2.25e-159)
       t_1
       (if (<= im -5.9e-202)
         t_0
         (if (<= im -4e-312)
           (* 0.5 (- t_2))
           (if (<= im 4.6e-234)
             (* 0.5 t_2)
             (if (<= im 2.6e-127)
               (* 0.5 (* 2.0 (sqrt re)))
               (if (<= im 3.5e+18)
                 t_1
                 (* 0.5 (sqrt (* 2.0 (+ re im)))))))))))))
double code(double re, double im) {
	return 0.5 * sqrt((2.0 * (sqrt(((re * re) + (im * im))) + re)));
}
double code(double re, double im) {
	double t_0 = 0.5 * sqrt((2.0 * (-im + re)));
	double t_1 = 0.5 * sqrt((2.0 * (sqrt(((re * re) + (im * im))) + re)));
	double t_2 = im * sqrt((-1.0 / re));
	double tmp;
	if (im <= -5e+26) {
		tmp = t_0;
	} else if (im <= -2.25e-159) {
		tmp = t_1;
	} else if (im <= -5.9e-202) {
		tmp = t_0;
	} else if (im <= -4e-312) {
		tmp = 0.5 * -t_2;
	} else if (im <= 4.6e-234) {
		tmp = 0.5 * t_2;
	} else if (im <= 2.6e-127) {
		tmp = 0.5 * (2.0 * sqrt(re));
	} else if (im <= 3.5e+18) {
		tmp = t_1;
	} else {
		tmp = 0.5 * sqrt((2.0 * (re + im)));
	}
	return tmp;
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = 0.5d0 * sqrt((2.0d0 * (sqrt(((re * re) + (im * im))) + re)))
end function
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: tmp
    t_0 = 0.5d0 * sqrt((2.0d0 * (-im + re)))
    t_1 = 0.5d0 * sqrt((2.0d0 * (sqrt(((re * re) + (im * im))) + re)))
    t_2 = im * sqrt(((-1.0d0) / re))
    if (im <= (-5d+26)) then
        tmp = t_0
    else if (im <= (-2.25d-159)) then
        tmp = t_1
    else if (im <= (-5.9d-202)) then
        tmp = t_0
    else if (im <= (-4d-312)) then
        tmp = 0.5d0 * -t_2
    else if (im <= 4.6d-234) then
        tmp = 0.5d0 * t_2
    else if (im <= 2.6d-127) then
        tmp = 0.5d0 * (2.0d0 * sqrt(re))
    else if (im <= 3.5d+18) then
        tmp = t_1
    else
        tmp = 0.5d0 * sqrt((2.0d0 * (re + im)))
    end if
    code = tmp
end function
public static double code(double re, double im) {
	return 0.5 * Math.sqrt((2.0 * (Math.sqrt(((re * re) + (im * im))) + re)));
}
public static double code(double re, double im) {
	double t_0 = 0.5 * Math.sqrt((2.0 * (-im + re)));
	double t_1 = 0.5 * Math.sqrt((2.0 * (Math.sqrt(((re * re) + (im * im))) + re)));
	double t_2 = im * Math.sqrt((-1.0 / re));
	double tmp;
	if (im <= -5e+26) {
		tmp = t_0;
	} else if (im <= -2.25e-159) {
		tmp = t_1;
	} else if (im <= -5.9e-202) {
		tmp = t_0;
	} else if (im <= -4e-312) {
		tmp = 0.5 * -t_2;
	} else if (im <= 4.6e-234) {
		tmp = 0.5 * t_2;
	} else if (im <= 2.6e-127) {
		tmp = 0.5 * (2.0 * Math.sqrt(re));
	} else if (im <= 3.5e+18) {
		tmp = t_1;
	} else {
		tmp = 0.5 * Math.sqrt((2.0 * (re + im)));
	}
	return tmp;
}
def code(re, im):
	return 0.5 * math.sqrt((2.0 * (math.sqrt(((re * re) + (im * im))) + re)))
def code(re, im):
	t_0 = 0.5 * math.sqrt((2.0 * (-im + re)))
	t_1 = 0.5 * math.sqrt((2.0 * (math.sqrt(((re * re) + (im * im))) + re)))
	t_2 = im * math.sqrt((-1.0 / re))
	tmp = 0
	if im <= -5e+26:
		tmp = t_0
	elif im <= -2.25e-159:
		tmp = t_1
	elif im <= -5.9e-202:
		tmp = t_0
	elif im <= -4e-312:
		tmp = 0.5 * -t_2
	elif im <= 4.6e-234:
		tmp = 0.5 * t_2
	elif im <= 2.6e-127:
		tmp = 0.5 * (2.0 * math.sqrt(re))
	elif im <= 3.5e+18:
		tmp = t_1
	else:
		tmp = 0.5 * math.sqrt((2.0 * (re + im)))
	return tmp
function code(re, im)
	return Float64(0.5 * sqrt(Float64(2.0 * Float64(sqrt(Float64(Float64(re * re) + Float64(im * im))) + re))))
end
function code(re, im)
	t_0 = Float64(0.5 * sqrt(Float64(2.0 * Float64(Float64(-im) + re))))
	t_1 = Float64(0.5 * sqrt(Float64(2.0 * Float64(sqrt(Float64(Float64(re * re) + Float64(im * im))) + re))))
	t_2 = Float64(im * sqrt(Float64(-1.0 / re)))
	tmp = 0.0
	if (im <= -5e+26)
		tmp = t_0;
	elseif (im <= -2.25e-159)
		tmp = t_1;
	elseif (im <= -5.9e-202)
		tmp = t_0;
	elseif (im <= -4e-312)
		tmp = Float64(0.5 * Float64(-t_2));
	elseif (im <= 4.6e-234)
		tmp = Float64(0.5 * t_2);
	elseif (im <= 2.6e-127)
		tmp = Float64(0.5 * Float64(2.0 * sqrt(re)));
	elseif (im <= 3.5e+18)
		tmp = t_1;
	else
		tmp = Float64(0.5 * sqrt(Float64(2.0 * Float64(re + im))));
	end
	return tmp
end
function tmp = code(re, im)
	tmp = 0.5 * sqrt((2.0 * (sqrt(((re * re) + (im * im))) + re)));
end
function tmp_2 = code(re, im)
	t_0 = 0.5 * sqrt((2.0 * (-im + re)));
	t_1 = 0.5 * sqrt((2.0 * (sqrt(((re * re) + (im * im))) + re)));
	t_2 = im * sqrt((-1.0 / re));
	tmp = 0.0;
	if (im <= -5e+26)
		tmp = t_0;
	elseif (im <= -2.25e-159)
		tmp = t_1;
	elseif (im <= -5.9e-202)
		tmp = t_0;
	elseif (im <= -4e-312)
		tmp = 0.5 * -t_2;
	elseif (im <= 4.6e-234)
		tmp = 0.5 * t_2;
	elseif (im <= 2.6e-127)
		tmp = 0.5 * (2.0 * sqrt(re));
	elseif (im <= 3.5e+18)
		tmp = t_1;
	else
		tmp = 0.5 * sqrt((2.0 * (re + im)));
	end
	tmp_2 = tmp;
end
code[re_, im_] := N[(0.5 * N[Sqrt[N[(2.0 * N[(N[Sqrt[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[re_, im_] := Block[{t$95$0 = N[(0.5 * N[Sqrt[N[(2.0 * N[((-im) + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(0.5 * N[Sqrt[N[(2.0 * N[(N[Sqrt[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(im * N[Sqrt[N[(-1.0 / re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[im, -5e+26], t$95$0, If[LessEqual[im, -2.25e-159], t$95$1, If[LessEqual[im, -5.9e-202], t$95$0, If[LessEqual[im, -4e-312], N[(0.5 * (-t$95$2)), $MachinePrecision], If[LessEqual[im, 4.6e-234], N[(0.5 * t$95$2), $MachinePrecision], If[LessEqual[im, 2.6e-127], N[(0.5 * N[(2.0 * N[Sqrt[re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[im, 3.5e+18], t$95$1, N[(0.5 * N[Sqrt[N[(2.0 * N[(re + im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}
\begin{array}{l}
t_0 := 0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\
t_1 := 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\
t_2 := im \cdot \sqrt{\frac{-1}{re}}\\
\mathbf{if}\;im \leq -5 \cdot 10^{+26}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;im \leq -2.25 \cdot 10^{-159}:\\
\;\;\;\;t_1\\

\mathbf{elif}\;im \leq -5.9 \cdot 10^{-202}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;im \leq -4 \cdot 10^{-312}:\\
\;\;\;\;0.5 \cdot \left(-t_2\right)\\

\mathbf{elif}\;im \leq 4.6 \cdot 10^{-234}:\\
\;\;\;\;0.5 \cdot t_2\\

\mathbf{elif}\;im \leq 2.6 \cdot 10^{-127}:\\
\;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\

\mathbf{elif}\;im \leq 3.5 \cdot 10^{+18}:\\
\;\;\;\;t_1\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\


\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.1
Target33.7
Herbie23.4
\[\begin{array}{l} \mathbf{if}\;re < 0:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \sqrt{\frac{im \cdot im}{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \end{array} \]

Derivation?

  1. Split input into 6 regimes
  2. if im < -5.0000000000000001e26 or -2.24999999999999994e-159 < im < -5.89999999999999999e-202

    1. Initial program 44.0

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
    2. Taylor expanded in im around -inf 17.7

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{-1 \cdot im} + re\right)} \]
    3. Simplified17.7

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(-im\right)} + re\right)} \]
      Proof

      [Start]17.7

      \[ 0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot im + re\right)} \]

      rational.json-simplify-2 [=>]17.7

      \[ 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{im \cdot -1} + re\right)} \]

      rational.json-simplify-9 [=>]17.7

      \[ 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(-im\right)} + re\right)} \]

    if -5.0000000000000001e26 < im < -2.24999999999999994e-159 or 2.59999999999999991e-127 < im < 3.5e18

    1. Initial program 27.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]

    if -5.89999999999999999e-202 < im < -3.9999999999988e-312

    1. Initial program 43.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
    2. Taylor expanded in re around -inf 50.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(-0.5 \cdot \frac{{im}^{2}}{re}\right)}} \]
    3. Simplified50.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{{im}^{2}}{re} \cdot -0.5\right)}} \]
      Proof

      [Start]50.2

      \[ 0.5 \cdot \sqrt{2 \cdot \left(-0.5 \cdot \frac{{im}^{2}}{re}\right)} \]

      rational.json-simplify-2 [=>]50.2

      \[ 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{{im}^{2}}{re} \cdot -0.5\right)}} \]
    4. Taylor expanded in im around -inf 64.0

      \[\leadsto 0.5 \cdot \color{blue}{\left(-1 \cdot \left(\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right)\right)} \]
    5. Simplified32.9

      \[\leadsto 0.5 \cdot \color{blue}{\left(-im \cdot \sqrt{\frac{-1}{re}}\right)} \]
      Proof

      [Start]64.0

      \[ 0.5 \cdot \left(-1 \cdot \left(\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right)\right) \]

      rational.json-simplify-2 [=>]64.0

      \[ 0.5 \cdot \color{blue}{\left(\left(\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right) \cdot -1\right)} \]

      rational.json-simplify-9 [=>]64.0

      \[ 0.5 \cdot \color{blue}{\left(-\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right)} \]

      rational.json-simplify-2 [=>]64.0

      \[ 0.5 \cdot \left(-\color{blue}{\sqrt{\frac{1}{re}} \cdot \left(\sqrt{-1} \cdot im\right)}\right) \]

      rational.json-simplify-2 [=>]64.0

      \[ 0.5 \cdot \left(-\sqrt{\frac{1}{re}} \cdot \color{blue}{\left(im \cdot \sqrt{-1}\right)}\right) \]

      rational.json-simplify-43 [=>]64.0

      \[ 0.5 \cdot \left(-\color{blue}{im \cdot \left(\sqrt{-1} \cdot \sqrt{\frac{1}{re}}\right)}\right) \]

      exponential.json-simplify-20 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \color{blue}{\sqrt{\frac{1}{re} \cdot -1}}\right) \]

      rational.json-simplify-8 [<=]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\color{blue}{-\frac{1}{re}}}\right) \]

      rational.json-simplify-10 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\color{blue}{\frac{\frac{1}{re}}{-1}}}\right) \]

      rational.json-simplify-35 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{\color{blue}{\frac{1 + 1}{re + re}}}{-1}}\right) \]

      metadata-eval [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{\frac{\color{blue}{2}}{re + re}}{-1}}\right) \]

      rational.json-simplify-46 [<=]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\color{blue}{\frac{2}{\left(re + re\right) \cdot -1}}}\right) \]

      rational.json-simplify-8 [<=]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{2}{\color{blue}{-\left(re + re\right)}}}\right) \]

      rational.json-simplify-10 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{2}{\color{blue}{\frac{re + re}{-1}}}}\right) \]

      rational.json-simplify-61 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\color{blue}{\frac{-1}{\frac{re + re}{2}}}}\right) \]

      metadata-eval [<=]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{\frac{re + re}{\color{blue}{1 + 1}}}}\right) \]

      rational.json-simplify-35 [<=]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{\color{blue}{\frac{re}{1}}}}\right) \]

      rational.json-simplify-7 [=>]32.9

      \[ 0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{\color{blue}{re}}}\right) \]

    if -3.9999999999988e-312 < im < 4.59999999999999981e-234

    1. Initial program 42.0

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
    2. Taylor expanded in re around -inf 49.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(-0.5 \cdot \frac{{im}^{2}}{re}\right)}} \]
    3. Simplified49.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{{im}^{2}}{re} \cdot -0.5\right)}} \]
      Proof

      [Start]49.4

      \[ 0.5 \cdot \sqrt{2 \cdot \left(-0.5 \cdot \frac{{im}^{2}}{re}\right)} \]

      rational.json-simplify-2 [=>]49.4

      \[ 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(\frac{{im}^{2}}{re} \cdot -0.5\right)}} \]
    4. Taylor expanded in im around 0 64.0

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right)} \]
    5. Simplified32.7

      \[\leadsto 0.5 \cdot \color{blue}{\left(im \cdot \sqrt{\frac{-1}{re}}\right)} \]
      Proof

      [Start]64.0

      \[ 0.5 \cdot \left(\left(\sqrt{-1} \cdot im\right) \cdot \sqrt{\frac{1}{re}}\right) \]

      rational.json-simplify-2 [=>]64.0

      \[ 0.5 \cdot \color{blue}{\left(\sqrt{\frac{1}{re}} \cdot \left(\sqrt{-1} \cdot im\right)\right)} \]

      rational.json-simplify-2 [=>]64.0

      \[ 0.5 \cdot \left(\sqrt{\frac{1}{re}} \cdot \color{blue}{\left(im \cdot \sqrt{-1}\right)}\right) \]

      rational.json-simplify-43 [=>]64.0

      \[ 0.5 \cdot \color{blue}{\left(im \cdot \left(\sqrt{-1} \cdot \sqrt{\frac{1}{re}}\right)\right)} \]

      exponential.json-simplify-20 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \color{blue}{\sqrt{\frac{1}{re} \cdot -1}}\right) \]

      rational.json-simplify-8 [<=]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\color{blue}{-\frac{1}{re}}}\right) \]

      rational.json-simplify-10 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\color{blue}{\frac{\frac{1}{re}}{-1}}}\right) \]

      rational.json-simplify-35 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{\color{blue}{\frac{1 + 1}{re + re}}}{-1}}\right) \]

      metadata-eval [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{\frac{\color{blue}{2}}{re + re}}{-1}}\right) \]

      rational.json-simplify-46 [<=]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\color{blue}{\frac{2}{\left(re + re\right) \cdot -1}}}\right) \]

      rational.json-simplify-8 [<=]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{2}{\color{blue}{-\left(re + re\right)}}}\right) \]

      rational.json-simplify-10 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{2}{\color{blue}{\frac{re + re}{-1}}}}\right) \]

      rational.json-simplify-61 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\color{blue}{\frac{-1}{\frac{re + re}{2}}}}\right) \]

      metadata-eval [<=]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{\frac{re + re}{\color{blue}{1 + 1}}}}\right) \]

      rational.json-simplify-35 [<=]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{\color{blue}{\frac{re}{1}}}}\right) \]

      rational.json-simplify-7 [=>]32.7

      \[ 0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{\color{blue}{re}}}\right) \]

    if 4.59999999999999981e-234 < im < 2.59999999999999991e-127

    1. Initial program 42.0

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
    2. Taylor expanded in im around 0 39.9

      \[\leadsto 0.5 \cdot \color{blue}{\left({\left(\sqrt{2}\right)}^{2} \cdot \sqrt{re}\right)} \]
    3. Simplified39.5

      \[\leadsto 0.5 \cdot \color{blue}{\left(2 \cdot \sqrt{re}\right)} \]
      Proof

      [Start]39.9

      \[ 0.5 \cdot \left({\left(\sqrt{2}\right)}^{2} \cdot \sqrt{re}\right) \]

      exponential.json-simplify-24 [=>]39.5

      \[ 0.5 \cdot \left(\color{blue}{\sqrt{{2}^{2}}} \cdot \sqrt{re}\right) \]

      metadata-eval [=>]39.5

      \[ 0.5 \cdot \left(\sqrt{\color{blue}{4}} \cdot \sqrt{re}\right) \]

      metadata-eval [=>]39.5

      \[ 0.5 \cdot \left(\color{blue}{2} \cdot \sqrt{re}\right) \]

    if 3.5e18 < im

    1. Initial program 43.5

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)} \]
    2. Taylor expanded in re around 0 13.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(re + im\right)}} \]
  3. Recombined 6 regimes into one program.
  4. Final simplification23.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq -5 \cdot 10^{+26}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -2.25 \cdot 10^{-159}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \mathbf{elif}\;im \leq -5.9 \cdot 10^{-202}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -4 \cdot 10^{-312}:\\ \;\;\;\;0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq 4.6 \cdot 10^{-234}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq 2.6 \cdot 10^{-127}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq 3.5 \cdot 10^{+18}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \end{array} \]

Alternatives

Alternative 1
Error26.3
Cost7376
\[\begin{array}{l} t_0 := im \cdot \sqrt{\frac{-1}{re}}\\ \mathbf{if}\;im \leq -2.85 \cdot 10^{-204}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -4 \cdot 10^{-312}:\\ \;\;\;\;0.5 \cdot \left(-t_0\right)\\ \mathbf{elif}\;im \leq 5 \cdot 10^{-235}:\\ \;\;\;\;0.5 \cdot t_0\\ \mathbf{elif}\;im \leq 1.7 \cdot 10^{-26}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \end{array} \]
Alternative 2
Error31.8
Cost7112
\[\begin{array}{l} \mathbf{if}\;re \leq -4.4 \cdot 10^{+29}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;re \leq 8.5 \cdot 10^{-141}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \end{array} \]
Alternative 3
Error37.2
Cost6852
\[\begin{array}{l} \mathbf{if}\;re \leq 1.65 \cdot 10^{-177}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \end{array} \]
Alternative 4
Error47.2
Cost6720
\[0.5 \cdot \sqrt{im \cdot 2} \]

Error

Reproduce?

herbie shell --seed 2023074 
(FPCore (re im)
  :name "math.sqrt on complex, real part"
  :precision binary64

  :herbie-target
  (if (< re 0.0) (* 0.5 (* (sqrt 2.0) (sqrt (/ (* im im) (- (sqrt (+ (* re re) (* im im))) re))))) (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))

  (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))