Average Error: 38.4 → 11.3
Time: 6.3s
Precision: binary64
Cost: 27844
Math TeX FPCore C \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
↓
\[\begin{array}{l}
\mathbf{if}\;re \leq -1.937472551084114 \cdot 10^{+129}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\
\mathbf{elif}\;re \leq -4.253390744375976 \cdot 10^{-130}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\
\mathbf{elif}\;re \leq 1.2142340433856673 \cdot 10^{-151}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \leq 1.9275280704393263 \cdot 10^{+148}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(\left(im \cdot \sqrt{2}\right) \cdot \sqrt{0.5}\right) \cdot \sqrt{\frac{1}{re}}\right)\\
\end{array}\]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)} ↓
\begin{array}{l}
\mathbf{if}\;re \leq -1.937472551084114 \cdot 10^{+129}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\
\mathbf{elif}\;re \leq -4.253390744375976 \cdot 10^{-130}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\
\mathbf{elif}\;re \leq 1.2142340433856673 \cdot 10^{-151}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \leq 1.9275280704393263 \cdot 10^{+148}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(\left(im \cdot \sqrt{2}\right) \cdot \sqrt{0.5}\right) \cdot \sqrt{\frac{1}{re}}\right)\\
\end{array} (FPCore (re im)
:precision binary64
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))))) ↓
(FPCore (re im)
:precision binary64
(if (<= re -1.937472551084114e+129)
(* 0.5 (sqrt (* 2.0 (* re -2.0))))
(if (<= re -4.253390744375976e-130)
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* im im) (* re re))) re))))
(if (<= re 1.2142340433856673e-151)
(* 0.5 (sqrt (* 2.0 (- im re))))
(if (<= re 1.9275280704393263e+148)
(*
0.5
(/
(* (sqrt 2.0) (fabs im))
(sqrt (+ re (sqrt (+ (* im im) (* re re)))))))
(* 0.5 (* (* (* im (sqrt 2.0)) (sqrt 0.5)) (sqrt (/ 1.0 re))))))))) 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 tmp;
if (re <= -1.937472551084114e+129) {
tmp = 0.5 * sqrt(2.0 * (re * -2.0));
} else if (re <= -4.253390744375976e-130) {
tmp = 0.5 * sqrt(2.0 * (sqrt((im * im) + (re * re)) - re));
} else if (re <= 1.2142340433856673e-151) {
tmp = 0.5 * sqrt(2.0 * (im - re));
} else if (re <= 1.9275280704393263e+148) {
tmp = 0.5 * ((sqrt(2.0) * fabs(im)) / sqrt(re + sqrt((im * im) + (re * re))));
} else {
tmp = 0.5 * (((im * sqrt(2.0)) * sqrt(0.5)) * sqrt(1.0 / re));
}
return tmp;
}
Try it out Enter valid numbers for all inputs
Alternatives Alternative 1 Error 38.9 Cost 59968
\[0.5 \cdot \left(\sqrt[3]{\sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}} \cdot \left(\sqrt[3]{\sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}} \cdot \sqrt[3]{\sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}}\right)\right)\]
Alternative 2 Error 37.9 Cost 52800
\[0.5 \cdot \left(\frac{\left|im\right|}{\sqrt{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}} \cdot \frac{\sqrt{2}}{\sqrt{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}}\right)\]
Alternative 3 Error 38.0 Cost 52800
\[0.5 \cdot \left(\frac{\left|im\right|}{\left|\sqrt[3]{re + \sqrt{im \cdot im + re \cdot re}}\right|} \cdot \frac{\sqrt{2}}{\sqrt{\sqrt[3]{re + \sqrt{im \cdot im + re \cdot re}}}}\right)\]
Alternative 4 Error 31.5 Cost 52416
\[0.5 \cdot \left(\sqrt{\sqrt{2} \cdot \sqrt{im}} \cdot \sqrt{\sqrt{2} \cdot \sqrt{im}} - 0.5 \cdot \left(\left(re \cdot \sqrt{2}\right) \cdot \sqrt{\frac{1}{im}}\right)\right)\]
Alternative 5 Error 39.2 Cost 46656
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) - re\right)}\]
Alternative 6 Error 55.5 Cost 46400
\[0.5 \cdot \sqrt{2 \cdot \left(\frac{\sqrt{{re}^{6} + {im}^{6}}}{\sqrt{{re}^{4} + \left({im}^{4} - \left(im \cdot im\right) \cdot \left(re \cdot re\right)\right)}} - re\right)}\]
Alternative 7 Error 47.8 Cost 39360
\[0.5 \cdot \left(\sqrt{2} \cdot \sqrt{im} - 0.5 \cdot \left(\sqrt{\frac{1}{im}} \cdot e^{\log \left(re \cdot \sqrt{2}\right)}\right)\right)\]
Alternative 8 Error 39.0 Cost 33344
\[0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{im \cdot im + re \cdot re}\right| \cdot \sqrt{\sqrt[3]{im \cdot im + re \cdot re}} - re\right)}\]
Alternative 9 Error 38.7 Cost 33344
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{im \cdot im + re \cdot re}} - re\right)}\]
Alternative 10 Error 48.5 Cost 33152
\[0.5 \cdot \frac{\sqrt[3]{{\left(\sqrt{2 \cdot \left(im \cdot im\right)}\right)}^{3}}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\]
Alternative 11 Error 31.4 Cost 26560
\[0.5 \cdot \left(\sqrt{2} \cdot \sqrt{im} - 0.5 \cdot \left(\left(re \cdot \sqrt{2}\right) \cdot \sqrt{\frac{1}{im}}\right)\right)\]
Alternative 12 Error 37.8 Cost 26560
\[0.5 \cdot \left(\left|im\right| \cdot \frac{\sqrt{2}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\right)\]
Alternative 13 Error 37.8 Cost 26560
\[0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\]
Alternative 14 Error 47.1 Cost 26496
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt[3]{{\left(\sqrt{im \cdot im + re \cdot re}\right)}^{3}} - re\right)}\]
Alternative 15 Error 39.9 Cost 26432
\[0.5 \cdot \sqrt{2 \cdot e^{\log \left(\sqrt{im \cdot im + re \cdot re} - re\right)}}\]
Alternative 16 Error 61.6 Cost 26432
\[0.5 \cdot \sqrt{2 \cdot \log \left(e^{\sqrt{im \cdot im + re \cdot re} - re}\right)}\]
Alternative 17 Error 40.4 Cost 26432
\[0.5 \cdot \sqrt{2 \cdot \left(e^{\log \left(\sqrt{im \cdot im + re \cdot re}\right)} - re\right)}\]
Alternative 18 Error 39.9 Cost 26432
\[0.5 \cdot e^{\log \left(\sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\right)}\]
Alternative 19 Error 41.4 Cost 20288
\[0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\]
Alternative 20 Error 31.2 Cost 20224
\[0.5 \cdot \left({\left(2 \cdot im\right)}^{0.5} - 0.5 \cdot \left(\left(re \cdot \sqrt{2}\right) \cdot \sqrt{\frac{1}{im}}\right)\right)\]
Alternative 21 Error 37.8 Cost 20160
\[0.5 \cdot \frac{im \cdot \sqrt{2}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\]
Alternative 22 Error 47.6 Cost 19904
\[0.5 \cdot \left(\left(\left(im \cdot \sqrt{2}\right) \cdot \sqrt{0.5}\right) \cdot \sqrt{\frac{1}{re}}\right)\]
Alternative 23 Error 41.7 Cost 13888
\[0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}}}\]
Alternative 24 Error 38.4 Cost 13632
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\]
Alternative 25 Error 53.1 Cost 13504
\[0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{re + re}}\]
Alternative 26 Error 48.2 Cost 7360
\[0.5 \cdot \sqrt{2 \cdot \left(\left(\frac{im \cdot im}{re} \cdot -0.5 - re\right) - re\right)}\]
Alternative 27 Error 54.7 Cost 7104
\[0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{im \cdot im}{re}\right)}\]
Alternative 28 Error 46.8 Cost 6848
\[0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\]
Alternative 29 Error 46.8 Cost 6848
\[0.5 \cdot \sqrt{\left(re + re\right) \cdot -2}\]
Alternative 30 Error 60.0 Cost 6848
\[0.5 \cdot \sqrt{2 \cdot \left(re - re\right)}\]
Alternative 31 Error 29.1 Cost 6848
\[0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\]
Alternative 32 Error 30.6 Cost 6720
\[0.5 \cdot \sqrt{2 \cdot im}\]
Alternative 33 Error 59.8 Cost 64
\[1\]
Alternative 34 Error 60.0 Cost 64
\[0\]
Alternative 35 Error 63.0 Cost 64
\[-1\]
Error Derivation Split input into 5 regimes if re < -1.9374725510841141e129 Initial program 57.8
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
Taylor expanded around -inf 8.3
\[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(-2 \cdot re\right)}}\]
Simplified8.3
\[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(re \cdot -2\right)}}\]
Simplified8.3
\[\leadsto \color{blue}{0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}}\]
if -1.9374725510841141e129 < re < -4.25339074437597611e-130 Initial program 15.8
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
Simplified15.8
\[\leadsto \color{blue}{0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}}\]
if -4.25339074437597611e-130 < re < 1.2142340433856673e-151 Initial program 29.2
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
Taylor expanded around 0 7.6
\[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{im} - re\right)}\]
Simplified7.6
\[\leadsto \color{blue}{0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}}\]
if 1.2142340433856673e-151 < re < 1.92752807043932628e148 Initial program 43.0
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
Using strategy rm Applied flip--_binary64_379 43.0
\[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
Applied associate-*r/_binary64_346 43.0
\[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
Applied sqrt-div_binary64_421 43.1
\[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
Simplified28.4
\[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{\left(im \cdot im\right) \cdot 2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
Simplified28.4
\[\leadsto 0.5 \cdot \frac{\sqrt{\left(im \cdot im\right) \cdot 2}}{\color{blue}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}}\]
Using strategy rm Applied sqrt-prod_binary64_420 28.5
\[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{im \cdot im} \cdot \sqrt{2}}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\]
Simplified15.5
\[\leadsto 0.5 \cdot \frac{\color{blue}{\left|im\right|} \cdot \sqrt{2}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\]
Simplified15.5
\[\leadsto \color{blue}{0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}}\]
if 1.92752807043932628e148 < re Initial program 63.7
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
Taylor expanded around 0 8.2
\[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\right) \cdot \sqrt{\frac{1}{re}}\right)}\]
Simplified8.2
\[\leadsto \color{blue}{0.5 \cdot \left(\left(\left(im \cdot \sqrt{2}\right) \cdot \sqrt{0.5}\right) \cdot \sqrt{\frac{1}{re}}\right)}\]
Recombined 5 regimes into one program. Final simplification11.3
\[\leadsto \begin{array}{l}
\mathbf{if}\;re \leq -1.937472551084114 \cdot 10^{+129}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\
\mathbf{elif}\;re \leq -4.253390744375976 \cdot 10^{-130}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\
\mathbf{elif}\;re \leq 1.2142340433856673 \cdot 10^{-151}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\
\mathbf{elif}\;re \leq 1.9275280704393263 \cdot 10^{+148}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2} \cdot \left|im\right|}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(\left(im \cdot \sqrt{2}\right) \cdot \sqrt{0.5}\right) \cdot \sqrt{\frac{1}{re}}\right)\\
\end{array}\]
Reproduce herbie shell --seed 2021042
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
:precision binary64
:pre (> im 0.0)
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))