Average Error: 38.0 → 22.6
Time: 4.3s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{im + re}{im}}}\\ \mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + re}{im}}}\\ \end{array}\]
0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

\mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\

\mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\

\mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{im + re}{im}}}\\

\mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + re}{im}}}\\

\end{array}
double f(double re, double im) {
        double r18410 = 0.5;
        double r18411 = 2.0;
        double r18412 = re;
        double r18413 = r18412 * r18412;
        double r18414 = im;
        double r18415 = r18414 * r18414;
        double r18416 = r18413 + r18415;
        double r18417 = sqrt(r18416);
        double r18418 = r18417 - r18412;
        double r18419 = r18411 * r18418;
        double r18420 = sqrt(r18419);
        double r18421 = r18410 * r18420;
        return r18421;
}

double f(double re, double im) {
        double r18422 = re;
        double r18423 = -1.5057522058365376e+136;
        bool r18424 = r18422 <= r18423;
        double r18425 = 0.5;
        double r18426 = 2.0;
        double r18427 = -2.0;
        double r18428 = r18427 * r18422;
        double r18429 = r18426 * r18428;
        double r18430 = sqrt(r18429);
        double r18431 = r18425 * r18430;
        double r18432 = -8.861544571423392e-181;
        bool r18433 = r18422 <= r18432;
        double r18434 = r18422 * r18422;
        double r18435 = im;
        double r18436 = r18435 * r18435;
        double r18437 = r18434 + r18436;
        double r18438 = sqrt(r18437);
        double r18439 = r18438 - r18422;
        double r18440 = r18426 * r18439;
        double r18441 = sqrt(r18440);
        double r18442 = r18425 * r18441;
        double r18443 = -2.3932815010602277e-282;
        bool r18444 = r18422 <= r18443;
        double r18445 = r18422 + r18435;
        double r18446 = -r18445;
        double r18447 = r18426 * r18446;
        double r18448 = sqrt(r18447);
        double r18449 = r18425 * r18448;
        double r18450 = 3.315327059634813e-219;
        bool r18451 = r18422 <= r18450;
        double r18452 = 1.0;
        double r18453 = pow(r18435, r18452);
        double r18454 = r18435 + r18422;
        double r18455 = r18454 / r18435;
        double r18456 = r18453 / r18455;
        double r18457 = r18426 * r18456;
        double r18458 = sqrt(r18457);
        double r18459 = r18425 * r18458;
        double r18460 = 5.301975457738901e+144;
        bool r18461 = r18422 <= r18460;
        double r18462 = 2.0;
        double r18463 = pow(r18435, r18462);
        double r18464 = r18426 * r18463;
        double r18465 = sqrt(r18464);
        double r18466 = r18438 + r18422;
        double r18467 = sqrt(r18466);
        double r18468 = r18465 / r18467;
        double r18469 = r18425 * r18468;
        double r18470 = r18422 + r18422;
        double r18471 = r18470 / r18435;
        double r18472 = r18453 / r18471;
        double r18473 = r18426 * r18472;
        double r18474 = sqrt(r18473);
        double r18475 = r18425 * r18474;
        double r18476 = r18461 ? r18469 : r18475;
        double r18477 = r18451 ? r18459 : r18476;
        double r18478 = r18444 ? r18449 : r18477;
        double r18479 = r18433 ? r18442 : r18478;
        double r18480 = r18424 ? r18431 : r18479;
        return r18480;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 6 regimes
  2. if re < -1.5057522058365376e+136

    1. Initial program 58.9

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

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

    if -1.5057522058365376e+136 < re < -8.861544571423392e-181

    1. Initial program 16.1

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

    if -8.861544571423392e-181 < re < -2.3932815010602277e-282

    1. Initial program 27.3

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

      \[\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}}}\]
    4. Simplified28.8

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Taylor expanded around -inf 31.8

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

    if -2.3932815010602277e-282 < re < 3.315327059634813e-219

    1. Initial program 30.5

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

      \[\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}}}\]
    4. Simplified30.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied sqr-pow30.3

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{\left(\frac{2}{2}\right)} \cdot {im}^{\left(\frac{2}{2}\right)}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Applied associate-/l*29.3

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{\left(\frac{2}{2}\right)}}{\color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}}\]
    9. Taylor expanded around 0 32.2

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

    if 3.315327059634813e-219 < re < 5.301975457738901e+144

    1. Initial program 41.5

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

      \[\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}}}\]
    4. Simplified30.2

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied associate-*r/30.3

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot {im}^{2}}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Applied sqrt-div29.2

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

    if 5.301975457738901e+144 < re

    1. Initial program 63.7

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

      \[\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}}}\]
    4. Simplified49.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied sqr-pow49.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{\left(\frac{2}{2}\right)} \cdot {im}^{\left(\frac{2}{2}\right)}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Applied associate-/l*48.7

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{\left(\frac{2}{2}\right)}}{\color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}}\]
    9. Taylor expanded around inf 22.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -1.505752205836537605611230467447200313868 \cdot 10^{136}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -8.861544571423392198916971714012583524493 \cdot 10^{-181}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le -2.39328150106022774012312352354269800244 \cdot 10^{-282}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 3.315327059634812766711138741800635265487 \cdot 10^{-219}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{im + re}{im}}}\\ \mathbf{elif}\;re \le 5.30197545773890109445152581959315448388 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{2}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + re}{im}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 
(FPCore (re im)
  :name "math.sqrt on complex, imaginary part, im greater than 0 branch"
  :precision binary64
  (* 0.5 (sqrt (* 2 (- (sqrt (+ (* re re) (* im im))) re)))))