?

Average Error: 39.1 → 25.3
Time: 12.0s
Precision: binary64
Cost: 14952

?

\[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(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ t_1 := im \cdot \sqrt{\frac{-1}{re}}\\ t_2 := 0.5 \cdot \left(-t_1\right)\\ t_3 := 0.5 \cdot t_1\\ \mathbf{if}\;im \leq -1.05 \cdot 10^{-15}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -2.7 \cdot 10^{-94}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + re \cdot 4}\\ \mathbf{elif}\;im \leq -6 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\ \mathbf{elif}\;im \leq -1.7 \cdot 10^{-187}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq -6 \cdot 10^{-253}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq 1.45 \cdot 10^{-180}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq 1.4 \cdot 10^{-82}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq 1.7 \cdot 10^{-69}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq 3.2 \cdot 10^{+38}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\ \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 (+ (sqrt (+ (* re re) (* im im))) re)))))
        (t_1 (* im (sqrt (/ -1.0 re))))
        (t_2 (* 0.5 (- t_1)))
        (t_3 (* 0.5 t_1)))
   (if (<= im -1.05e-15)
     (* 0.5 (sqrt (* 2.0 (+ (- im) re))))
     (if (<= im -2.7e-94)
       (* 0.5 (sqrt (+ (/ (pow im 2.0) re) (* re 4.0))))
       (if (<= im -6e-100)
         (* 0.5 (sqrt (* im -2.0)))
         (if (<= im -1.7e-187)
           t_2
           (if (<= im -6e-253)
             (* 0.5 (* 2.0 (sqrt re)))
             (if (<= im -2.65e-295)
               t_2
               (if (<= im 1.45e-180)
                 t_3
                 (if (<= im 1.4e-82)
                   t_0
                   (if (<= im 1.7e-69)
                     t_3
                     (if (<= im 3.2e+38)
                       t_0
                       (* 0.5 (sqrt (* im 2.0)))))))))))))))
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 * (sqrt(((re * re) + (im * im))) + re)));
	double t_1 = im * sqrt((-1.0 / re));
	double t_2 = 0.5 * -t_1;
	double t_3 = 0.5 * t_1;
	double tmp;
	if (im <= -1.05e-15) {
		tmp = 0.5 * sqrt((2.0 * (-im + re)));
	} else if (im <= -2.7e-94) {
		tmp = 0.5 * sqrt(((pow(im, 2.0) / re) + (re * 4.0)));
	} else if (im <= -6e-100) {
		tmp = 0.5 * sqrt((im * -2.0));
	} else if (im <= -1.7e-187) {
		tmp = t_2;
	} else if (im <= -6e-253) {
		tmp = 0.5 * (2.0 * sqrt(re));
	} else if (im <= -2.65e-295) {
		tmp = t_2;
	} else if (im <= 1.45e-180) {
		tmp = t_3;
	} else if (im <= 1.4e-82) {
		tmp = t_0;
	} else if (im <= 1.7e-69) {
		tmp = t_3;
	} else if (im <= 3.2e+38) {
		tmp = t_0;
	} else {
		tmp = 0.5 * sqrt((im * 2.0));
	}
	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) :: t_3
    real(8) :: tmp
    t_0 = 0.5d0 * sqrt((2.0d0 * (sqrt(((re * re) + (im * im))) + re)))
    t_1 = im * sqrt(((-1.0d0) / re))
    t_2 = 0.5d0 * -t_1
    t_3 = 0.5d0 * t_1
    if (im <= (-1.05d-15)) then
        tmp = 0.5d0 * sqrt((2.0d0 * (-im + re)))
    else if (im <= (-2.7d-94)) then
        tmp = 0.5d0 * sqrt((((im ** 2.0d0) / re) + (re * 4.0d0)))
    else if (im <= (-6d-100)) then
        tmp = 0.5d0 * sqrt((im * (-2.0d0)))
    else if (im <= (-1.7d-187)) then
        tmp = t_2
    else if (im <= (-6d-253)) then
        tmp = 0.5d0 * (2.0d0 * sqrt(re))
    else if (im <= (-2.65d-295)) then
        tmp = t_2
    else if (im <= 1.45d-180) then
        tmp = t_3
    else if (im <= 1.4d-82) then
        tmp = t_0
    else if (im <= 1.7d-69) then
        tmp = t_3
    else if (im <= 3.2d+38) then
        tmp = t_0
    else
        tmp = 0.5d0 * sqrt((im * 2.0d0))
    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 * (Math.sqrt(((re * re) + (im * im))) + re)));
	double t_1 = im * Math.sqrt((-1.0 / re));
	double t_2 = 0.5 * -t_1;
	double t_3 = 0.5 * t_1;
	double tmp;
	if (im <= -1.05e-15) {
		tmp = 0.5 * Math.sqrt((2.0 * (-im + re)));
	} else if (im <= -2.7e-94) {
		tmp = 0.5 * Math.sqrt(((Math.pow(im, 2.0) / re) + (re * 4.0)));
	} else if (im <= -6e-100) {
		tmp = 0.5 * Math.sqrt((im * -2.0));
	} else if (im <= -1.7e-187) {
		tmp = t_2;
	} else if (im <= -6e-253) {
		tmp = 0.5 * (2.0 * Math.sqrt(re));
	} else if (im <= -2.65e-295) {
		tmp = t_2;
	} else if (im <= 1.45e-180) {
		tmp = t_3;
	} else if (im <= 1.4e-82) {
		tmp = t_0;
	} else if (im <= 1.7e-69) {
		tmp = t_3;
	} else if (im <= 3.2e+38) {
		tmp = t_0;
	} else {
		tmp = 0.5 * Math.sqrt((im * 2.0));
	}
	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 * (math.sqrt(((re * re) + (im * im))) + re)))
	t_1 = im * math.sqrt((-1.0 / re))
	t_2 = 0.5 * -t_1
	t_3 = 0.5 * t_1
	tmp = 0
	if im <= -1.05e-15:
		tmp = 0.5 * math.sqrt((2.0 * (-im + re)))
	elif im <= -2.7e-94:
		tmp = 0.5 * math.sqrt(((math.pow(im, 2.0) / re) + (re * 4.0)))
	elif im <= -6e-100:
		tmp = 0.5 * math.sqrt((im * -2.0))
	elif im <= -1.7e-187:
		tmp = t_2
	elif im <= -6e-253:
		tmp = 0.5 * (2.0 * math.sqrt(re))
	elif im <= -2.65e-295:
		tmp = t_2
	elif im <= 1.45e-180:
		tmp = t_3
	elif im <= 1.4e-82:
		tmp = t_0
	elif im <= 1.7e-69:
		tmp = t_3
	elif im <= 3.2e+38:
		tmp = t_0
	else:
		tmp = 0.5 * math.sqrt((im * 2.0))
	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(sqrt(Float64(Float64(re * re) + Float64(im * im))) + re))))
	t_1 = Float64(im * sqrt(Float64(-1.0 / re)))
	t_2 = Float64(0.5 * Float64(-t_1))
	t_3 = Float64(0.5 * t_1)
	tmp = 0.0
	if (im <= -1.05e-15)
		tmp = Float64(0.5 * sqrt(Float64(2.0 * Float64(Float64(-im) + re))));
	elseif (im <= -2.7e-94)
		tmp = Float64(0.5 * sqrt(Float64(Float64((im ^ 2.0) / re) + Float64(re * 4.0))));
	elseif (im <= -6e-100)
		tmp = Float64(0.5 * sqrt(Float64(im * -2.0)));
	elseif (im <= -1.7e-187)
		tmp = t_2;
	elseif (im <= -6e-253)
		tmp = Float64(0.5 * Float64(2.0 * sqrt(re)));
	elseif (im <= -2.65e-295)
		tmp = t_2;
	elseif (im <= 1.45e-180)
		tmp = t_3;
	elseif (im <= 1.4e-82)
		tmp = t_0;
	elseif (im <= 1.7e-69)
		tmp = t_3;
	elseif (im <= 3.2e+38)
		tmp = t_0;
	else
		tmp = Float64(0.5 * sqrt(Float64(im * 2.0)));
	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 * (sqrt(((re * re) + (im * im))) + re)));
	t_1 = im * sqrt((-1.0 / re));
	t_2 = 0.5 * -t_1;
	t_3 = 0.5 * t_1;
	tmp = 0.0;
	if (im <= -1.05e-15)
		tmp = 0.5 * sqrt((2.0 * (-im + re)));
	elseif (im <= -2.7e-94)
		tmp = 0.5 * sqrt((((im ^ 2.0) / re) + (re * 4.0)));
	elseif (im <= -6e-100)
		tmp = 0.5 * sqrt((im * -2.0));
	elseif (im <= -1.7e-187)
		tmp = t_2;
	elseif (im <= -6e-253)
		tmp = 0.5 * (2.0 * sqrt(re));
	elseif (im <= -2.65e-295)
		tmp = t_2;
	elseif (im <= 1.45e-180)
		tmp = t_3;
	elseif (im <= 1.4e-82)
		tmp = t_0;
	elseif (im <= 1.7e-69)
		tmp = t_3;
	elseif (im <= 3.2e+38)
		tmp = t_0;
	else
		tmp = 0.5 * sqrt((im * 2.0));
	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[(N[Sqrt[N[(N[(re * re), $MachinePrecision] + N[(im * im), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(im * N[Sqrt[N[(-1.0 / re), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(0.5 * (-t$95$1)), $MachinePrecision]}, Block[{t$95$3 = N[(0.5 * t$95$1), $MachinePrecision]}, If[LessEqual[im, -1.05e-15], N[(0.5 * N[Sqrt[N[(2.0 * N[((-im) + re), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[im, -2.7e-94], N[(0.5 * N[Sqrt[N[(N[(N[Power[im, 2.0], $MachinePrecision] / re), $MachinePrecision] + N[(re * 4.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[im, -6e-100], N[(0.5 * N[Sqrt[N[(im * -2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[im, -1.7e-187], t$95$2, If[LessEqual[im, -6e-253], N[(0.5 * N[(2.0 * N[Sqrt[re], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[im, -2.65e-295], t$95$2, If[LessEqual[im, 1.45e-180], t$95$3, If[LessEqual[im, 1.4e-82], t$95$0, If[LessEqual[im, 1.7e-69], t$95$3, If[LessEqual[im, 3.2e+38], t$95$0, N[(0.5 * N[Sqrt[N[(im * 2.0), $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(\sqrt{re \cdot re + im \cdot im} + re\right)}\\
t_1 := im \cdot \sqrt{\frac{-1}{re}}\\
t_2 := 0.5 \cdot \left(-t_1\right)\\
t_3 := 0.5 \cdot t_1\\
\mathbf{if}\;im \leq -1.05 \cdot 10^{-15}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\

\mathbf{elif}\;im \leq -2.7 \cdot 10^{-94}:\\
\;\;\;\;0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + re \cdot 4}\\

\mathbf{elif}\;im \leq -6 \cdot 10^{-100}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\

\mathbf{elif}\;im \leq -1.7 \cdot 10^{-187}:\\
\;\;\;\;t_2\\

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

\mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\
\;\;\;\;t_2\\

\mathbf{elif}\;im \leq 1.45 \cdot 10^{-180}:\\
\;\;\;\;t_3\\

\mathbf{elif}\;im \leq 1.4 \cdot 10^{-82}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;im \leq 1.7 \cdot 10^{-69}:\\
\;\;\;\;t_3\\

\mathbf{elif}\;im \leq 3.2 \cdot 10^{+38}:\\
\;\;\;\;t_0\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\


\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.1
Target34.2
Herbie25.3
\[\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 8 regimes
  2. if im < -1.0499999999999999e-15

    1. Initial program 40.9

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

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

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

      [Start]15.5

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

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

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

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

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

    if -1.0499999999999999e-15 < im < -2.7000000000000001e-94

    1. Initial program 26.8

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

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

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

      [Start]45.0

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

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

      \[ 0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{{im}^{2}}{re} + \color{blue}{re \cdot 2}\right)} \]
    4. Applied egg-rr45.0

      \[\leadsto 0.5 \cdot \color{blue}{\left(\sqrt{\left(re + re\right) + \left(\frac{{im}^{2}}{re} + \left(re + re\right)\right)} + 0\right)} \]
    5. Simplified45.0

      \[\leadsto 0.5 \cdot \color{blue}{\sqrt{\frac{{im}^{2}}{re} + re \cdot 4}} \]
      Proof

      [Start]45.0

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

      rational.json-simplify-4 [=>]45.0

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

      rational.json-simplify-41 [=>]45.0

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

      rational.json-simplify-7 [<=]45.0

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

      rational.json-simplify-30 [<=]45.0

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

      metadata-eval [=>]45.0

      \[ 0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + \color{blue}{2} \cdot \frac{re + re}{1}} \]

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

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

      rational.json-simplify-51 [<=]45.0

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

      rational.json-simplify-2 [<=]45.0

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

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

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

      rational.json-simplify-51 [=>]45.0

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

      metadata-eval [=>]45.0

      \[ 0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + re \cdot \color{blue}{4}} \]

    if -2.7000000000000001e-94 < im < -6.0000000000000001e-100

    1. Initial program 29.4

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

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

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

      [Start]39.7

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

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

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

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

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

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt{2} \cdot \sqrt{-1}\right) \cdot \sqrt{im}\right)} \]
    5. Simplified40.6

      \[\leadsto 0.5 \cdot \color{blue}{\sqrt{im \cdot -2}} \]
      Proof

      [Start]64.0

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

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

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

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

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

      metadata-eval [=>]40.6

      \[ 0.5 \cdot \sqrt{im \cdot \color{blue}{-2}} \]

    if -6.0000000000000001e-100 < im < -1.7000000000000001e-187 or -6.0000000000000004e-253 < im < -2.6500000000000002e-295

    1. Initial program 40.1

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

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

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

      [Start]53.1

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

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

      \[ 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. Simplified36.0

      \[\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 [=>]36.0

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

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

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

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

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

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

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

      metadata-eval [=>]36.0

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

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

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

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

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

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

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

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

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

      metadata-eval [<=]36.0

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

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

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

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

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

    if -1.7000000000000001e-187 < im < -6.0000000000000004e-253

    1. Initial program 47.5

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

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

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

      [Start]37.4

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

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

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

      metadata-eval [=>]36.9

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

      metadata-eval [=>]36.9

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

    if -2.6500000000000002e-295 < im < 1.4499999999999999e-180 or 1.40000000000000012e-82 < im < 1.70000000000000004e-69

    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 51.8

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

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

      [Start]51.8

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

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

      \[ 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. Simplified37.8

      \[\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 [=>]37.8

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

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

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

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

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

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

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

      metadata-eval [=>]37.8

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

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

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

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

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

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

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

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

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

      metadata-eval [<=]37.8

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

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

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

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

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

    if 1.4499999999999999e-180 < im < 1.40000000000000012e-82 or 1.70000000000000004e-69 < im < 3.19999999999999985e38

    1. Initial program 28.6

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

    if 3.19999999999999985e38 < im

    1. Initial program 45.0

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

      \[\leadsto 0.5 \cdot \color{blue}{\left(\sqrt{2} \cdot \sqrt{im}\right)} \]
    3. Simplified13.8

      \[\leadsto 0.5 \cdot \color{blue}{\sqrt{im \cdot 2}} \]
      Proof

      [Start]14.1

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

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

      \[ 0.5 \cdot \color{blue}{\sqrt{im \cdot 2}} \]
  3. Recombined 8 regimes into one program.
  4. Final simplification25.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq -1.05 \cdot 10^{-15}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -2.7 \cdot 10^{-94}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + re \cdot 4}\\ \mathbf{elif}\;im \leq -6 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\ \mathbf{elif}\;im \leq -1.7 \cdot 10^{-187}:\\ \;\;\;\;0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq -6 \cdot 10^{-253}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\ \;\;\;\;0.5 \cdot \left(-im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq 1.45 \cdot 10^{-180}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq 1.4 \cdot 10^{-82}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \mathbf{elif}\;im \leq 1.7 \cdot 10^{-69}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{re}}\right)\\ \mathbf{elif}\;im \leq 3.2 \cdot 10^{+38}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\ \end{array} \]

Alternatives

Alternative 1
Error26.1
Cost13704
\[\begin{array}{l} t_0 := im \cdot \sqrt{\frac{-1}{re}}\\ t_1 := 0.5 \cdot \left(-t_0\right)\\ \mathbf{if}\;im \leq -1.1 \cdot 10^{-15}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -2.8 \cdot 10^{-94}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{{im}^{2}}{re} + re \cdot 4}\\ \mathbf{elif}\;im \leq -8.6 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\ \mathbf{elif}\;im \leq -2.05 \cdot 10^{-189}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -6 \cdot 10^{-251}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq 5.8 \cdot 10^{-157}:\\ \;\;\;\;0.5 \cdot t_0\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \end{array} \]
Alternative 2
Error26.9
Cost8300
\[\begin{array}{l} t_0 := im \cdot \sqrt{\frac{-1}{re}}\\ t_1 := 0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ t_2 := 0.5 \cdot \sqrt{im \cdot -2}\\ t_3 := 0.5 \cdot \left(-t_0\right)\\ t_4 := 0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ t_5 := 0.5 \cdot t_0\\ \mathbf{if}\;im \leq -5.6 \cdot 10^{+51}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq -3.7 \cdot 10^{+25}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;im \leq -1.05 \cdot 10^{-15}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq -9 \cdot 10^{-94}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;im \leq -7.1 \cdot 10^{-100}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq -1.1 \cdot 10^{-188}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq -1.25 \cdot 10^{-252}:\\ \;\;\;\;t_4\\ \mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq 1.06 \cdot 10^{-157}:\\ \;\;\;\;t_5\\ \mathbf{elif}\;im \leq 5.6 \cdot 10^{-84}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq 6 \cdot 10^{-69}:\\ \;\;\;\;t_5\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Error27.6
Cost7772
\[\begin{array}{l} t_0 := 0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ t_1 := 0.5 \cdot \sqrt{im \cdot -2}\\ t_2 := 0.5 \cdot \left(im \cdot \sqrt{\frac{-1}{re}}\right)\\ t_3 := 0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{if}\;im \leq -5.6 \cdot 10^{+51}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -1.32 \cdot 10^{+25}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq -1.4 \cdot 10^{-15}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -1 \cdot 10^{-270}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq 1.35 \cdot 10^{-157}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq 1.05 \cdot 10^{-92}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq 1.8 \cdot 10^{-69}:\\ \;\;\;\;t_2\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 4
Error25.4
Cost7772
\[\begin{array}{l} t_0 := 0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ t_1 := im \cdot \sqrt{\frac{-1}{re}}\\ t_2 := 0.5 \cdot \left(-t_1\right)\\ t_3 := 0.5 \cdot t_1\\ \mathbf{if}\;im \leq -5.9 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-im\right) + re\right)}\\ \mathbf{elif}\;im \leq -8.6 \cdot 10^{-188}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq -2.5 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{elif}\;im \leq -2.65 \cdot 10^{-295}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;im \leq 2.25 \cdot 10^{-156}:\\ \;\;\;\;t_3\\ \mathbf{elif}\;im \leq 3.4 \cdot 10^{-93}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq 1.7 \cdot 10^{-69}:\\ \;\;\;\;t_3\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 5
Error27.3
Cost7376
\[\begin{array}{l} t_0 := 0.5 \cdot \sqrt{im \cdot -2}\\ t_1 := 0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{if}\;im \leq -5.6 \cdot 10^{+51}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq -3.2 \cdot 10^{+25}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -1.12 \cdot 10^{-15}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq 3.5 \cdot 10^{-63}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + im\right)}\\ \end{array} \]
Alternative 6
Error27.6
Cost7248
\[\begin{array}{l} t_0 := 0.5 \cdot \sqrt{im \cdot -2}\\ t_1 := 0.5 \cdot \left(2 \cdot \sqrt{re}\right)\\ \mathbf{if}\;im \leq -5.6 \cdot 10^{+51}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq -9 \cdot 10^{+24}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;im \leq -1.05 \cdot 10^{-15}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;im \leq 2.3 \cdot 10^{-67}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\ \end{array} \]
Alternative 7
Error30.6
Cost6852
\[\begin{array}{l} \mathbf{if}\;im \leq -1 \cdot 10^{-310}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot -2}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{im \cdot 2}\\ \end{array} \]
Alternative 8
Error47.3
Cost6720
\[0.5 \cdot \sqrt{im \cdot -2} \]

Error

Reproduce?

herbie shell --seed 2023073 
(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)))))