| Alternative 1 | |
|---|---|
| Error | 26.1 |
| Cost | 13704 |
(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}
Results
| Original | 39.1 |
|---|---|
| Target | 34.2 |
| Herbie | 25.3 |
if im < -1.0499999999999999e-15Initial program 40.9
Taylor expanded in im around -inf 15.5
Simplified15.5
[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-94Initial program 26.8
Taylor expanded in re around inf 45.0
Simplified45.0
[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)}
\] |
Applied egg-rr45.0
Simplified45.0
[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-100Initial program 29.4
Taylor expanded in im around -inf 39.7
Simplified39.7
[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)}
\] |
Taylor expanded in re around 0 64.0
Simplified40.6
[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-295Initial program 40.1
Taylor expanded in re around -inf 53.1
Simplified53.1
[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)}}
\] |
Taylor expanded in im around -inf 64.0
Simplified36.0
[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-253Initial program 47.5
Taylor expanded in im around 0 37.4
Simplified36.9
[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-69Initial program 42.0
Taylor expanded in re around -inf 51.8
Simplified51.8
[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)}}
\] |
Taylor expanded in im around 0 64.0
Simplified37.8
[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.19999999999999985e38Initial program 28.6
if 3.19999999999999985e38 < im Initial program 45.0
Taylor expanded in re around 0 14.1
Simplified13.8
[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}}
\] |
Final simplification25.3
| Alternative 1 | |
|---|---|
| Error | 26.1 |
| Cost | 13704 |
| Alternative 2 | |
|---|---|
| Error | 26.9 |
| Cost | 8300 |
| Alternative 3 | |
|---|---|
| Error | 27.6 |
| Cost | 7772 |
| Alternative 4 | |
|---|---|
| Error | 25.4 |
| Cost | 7772 |
| Alternative 5 | |
|---|---|
| Error | 27.3 |
| Cost | 7376 |
| Alternative 6 | |
|---|---|
| Error | 27.6 |
| Cost | 7248 |
| Alternative 7 | |
|---|---|
| Error | 30.6 |
| Cost | 6852 |
| Alternative 8 | |
|---|---|
| Error | 47.3 |
| Cost | 6720 |
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)))))