Average Error: 38.5 → 15.7
Time: 3.2min
Precision: binary64
Cost: 29378
\[im > 0\]
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \leq -1.5530469120283839 \cdot 10^{+31}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)\right) \cdot \frac{\sqrt{im \cdot im + re \cdot re} - re}{im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)}\right)}\\ \mathbf{elif}\;re \leq 4.1097956679905474 \cdot 10^{+119}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\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.5530469120283839 \cdot 10^{+31}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\

\mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)\right) \cdot \frac{\sqrt{im \cdot im + re \cdot re} - re}{im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)}\right)}\\

\mathbf{elif}\;re \leq 4.1097956679905474 \cdot 10^{+119}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\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.5530469120283839e+31)
   (* 0.5 (sqrt (* 2.0 (* re -2.0))))
   (if (<= re -9.763024991212806e-91)
     (*
      0.5
      (sqrt
       (*
        2.0
        (*
         (+ (* im im) (* re (+ re (+ re (sqrt (+ (* im im) (* re re)))))))
         (/
          (- (sqrt (+ (* im im) (* re re))) re)
          (+
           (* im im)
           (* re (+ re (+ re (sqrt (+ (* im im) (* re re))))))))))))
     (if (<= re 4.1097956679905474e+119)
       (* 0.5 (sqrt (* 2.0 (+ (* 0.5 (/ (* re re) im)) (- im re)))))
       (* 0.5 (* (* (sqrt 0.5) (* im (sqrt 2.0))) (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.5530469120283839e+31) {
		tmp = 0.5 * sqrt(2.0 * (re * -2.0));
	} else if (re <= -9.763024991212806e-91) {
		tmp = 0.5 * sqrt(2.0 * (((im * im) + (re * (re + (re + sqrt((im * im) + (re * re)))))) * ((sqrt((im * im) + (re * re)) - re) / ((im * im) + (re * (re + (re + sqrt((im * im) + (re * re)))))))));
	} else if (re <= 4.1097956679905474e+119) {
		tmp = 0.5 * sqrt(2.0 * ((0.5 * ((re * re) / im)) + (im - re)));
	} else {
		tmp = 0.5 * ((sqrt(0.5) * (im * sqrt(2.0))) * sqrt(1.0 / re));
	}
	return tmp;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Alternatives

Alternative 1
Error15.7
Cost20867
\[\begin{array}{l} \mathbf{if}\;re \leq -1.5530469120283839 \cdot 10^{+31}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \leq 2.4044662356673948 \cdot 10^{+119}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\right) \cdot \sqrt{\frac{1}{re}}\right)\\ \end{array}\]
Alternative 2
Error15.8
Cost20867
\[\begin{array}{l} \mathbf{if}\;re \leq -1.5530469120283839 \cdot 10^{+31}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \leq 1.8654415876206885 \cdot 10^{+121}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(im \cdot \left(\sqrt{\frac{1}{re}} \cdot \left(\sqrt{0.5} \cdot \sqrt{2}\right)\right)\right)\\ \end{array}\]
Alternative 3
Error19.1
Cost14274
\[\begin{array}{l} \mathbf{if}\;re \leq -1.5530469120283839 \cdot 10^{+31}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \leq 2.4044662356673948 \cdot 10^{+119}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{im \cdot im}{re}\right)}\\ \end{array}\]
Alternative 4
Error21.0
Cost8002
\[\begin{array}{l} \mathbf{if}\;re \leq -3.0165856771399735 \cdot 10^{-90}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq 1.8148680767354007 \cdot 10^{+121}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{im \cdot im}{re}\right)}\\ \end{array}\]
Alternative 5
Error20.3
Cost7746
\[\begin{array}{l} \mathbf{if}\;re \leq -7.63619430887308 \cdot 10^{-21}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq 2.4044662356673948 \cdot 10^{+119}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{im \cdot im}{re}\right)}\\ \end{array}\]
Alternative 6
Error23.2
Cost7490
\[\begin{array}{l} \mathbf{if}\;re \leq -1.5951665240998073 \cdot 10^{-20}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq 3.759282418990992 \cdot 10^{+120}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
Alternative 7
Error23.7
Cost7362
\[\begin{array}{l} \mathbf{if}\;re \leq -1.2835885576867102 \cdot 10^{-90}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq 8.840591102330343 \cdot 10^{+260}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot im}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
Alternative 8
Error30.7
Cost7041
\[\begin{array}{l} \mathbf{if}\;re \leq 8.840591102330343 \cdot 10^{+260}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot im}\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
Alternative 9
Error58.2
Cost385
\[\begin{array}{l} \mathbf{if}\;im \leq 2.0790521550319519 \cdot 10^{-181}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array}\]
Alternative 10
Error59.8
Cost64
\[1\]

Error

Time

Derivation

  1. Split input into 4 regimes
  2. if re < -1.55304691202838387e31

    1. Initial program 42.3

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \color{blue}{\left(re \cdot -2\right)}}\]
    4. Simplified13.8

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

    if -1.55304691202838387e31 < re < -9.7630249912128057e-91

    1. Initial program 16.1

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip3--_binary64_42321.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} - {re}^{3}}{\color{blue}{im \cdot im + re \cdot \left(re + \left(re + \sqrt{re \cdot re + im \cdot im}\right)\right)}}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity_binary64_41921.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{\left(\sqrt{re \cdot re + im \cdot im}\right)}^{3} - {re}^{3}}{\color{blue}{1 \cdot \left(im \cdot im + re \cdot \left(re + \left(re + \sqrt{re \cdot re + im \cdot im}\right)\right)\right)}}}\]
    7. Applied difference-cubes_binary64_42121.8

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{\left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} + \left(re \cdot re + \sqrt{re \cdot re + im \cdot im} \cdot re\right)\right) \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}}{1 \cdot \left(im \cdot im + re \cdot \left(re + \left(re + \sqrt{re \cdot re + im \cdot im}\right)\right)\right)}}\]
    8. Applied times-frac_binary64_42516.2

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

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

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

    if -9.7630249912128057e-91 < re < 4.10979566799054738e119

    1. Initial program 34.4

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

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

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

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

    if 4.10979566799054738e119 < re

    1. Initial program 62.1

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

      \[\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)}\]
    3. Simplified9.0

      \[\leadsto \color{blue}{0.5 \cdot \left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\right) \cdot \sqrt{\frac{1}{re}}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification15.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \leq -1.5530469120283839 \cdot 10^{+31}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re \cdot -2\right)}\\ \mathbf{elif}\;re \leq -9.763024991212806 \cdot 10^{-91}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)\right) \cdot \frac{\sqrt{im \cdot im + re \cdot re} - re}{im \cdot im + re \cdot \left(re + \left(re + \sqrt{im \cdot im + re \cdot re}\right)\right)}\right)}\\ \mathbf{elif}\;re \leq 4.1097956679905474 \cdot 10^{+119}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(0.5 \cdot \frac{re \cdot re}{im} + \left(im - re\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{0.5} \cdot \left(im \cdot \sqrt{2}\right)\right) \cdot \sqrt{\frac{1}{re}}\right)\\ \end{array}\]

Reproduce

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