Average Error: 38.0 → 22.6
Time: 4.4s
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(-1 \cdot re - 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{2 \cdot 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(-1 \cdot re - 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{2 \cdot re}{im}}}\\

\end{array}
double f(double re, double im) {
        double r18439 = 0.5;
        double r18440 = 2.0;
        double r18441 = re;
        double r18442 = r18441 * r18441;
        double r18443 = im;
        double r18444 = r18443 * r18443;
        double r18445 = r18442 + r18444;
        double r18446 = sqrt(r18445);
        double r18447 = r18446 - r18441;
        double r18448 = r18440 * r18447;
        double r18449 = sqrt(r18448);
        double r18450 = r18439 * r18449;
        return r18450;
}

double f(double re, double im) {
        double r18451 = re;
        double r18452 = -1.5057522058365376e+136;
        bool r18453 = r18451 <= r18452;
        double r18454 = 0.5;
        double r18455 = 2.0;
        double r18456 = -1.0;
        double r18457 = r18456 * r18451;
        double r18458 = r18457 - r18451;
        double r18459 = r18455 * r18458;
        double r18460 = sqrt(r18459);
        double r18461 = r18454 * r18460;
        double r18462 = -8.861544571423392e-181;
        bool r18463 = r18451 <= r18462;
        double r18464 = r18451 * r18451;
        double r18465 = im;
        double r18466 = r18465 * r18465;
        double r18467 = r18464 + r18466;
        double r18468 = sqrt(r18467);
        double r18469 = r18468 - r18451;
        double r18470 = r18455 * r18469;
        double r18471 = sqrt(r18470);
        double r18472 = r18454 * r18471;
        double r18473 = -2.3932815010602277e-282;
        bool r18474 = r18451 <= r18473;
        double r18475 = r18451 + r18465;
        double r18476 = -r18475;
        double r18477 = r18455 * r18476;
        double r18478 = sqrt(r18477);
        double r18479 = r18454 * r18478;
        double r18480 = 3.315327059634813e-219;
        bool r18481 = r18451 <= r18480;
        double r18482 = 1.0;
        double r18483 = pow(r18465, r18482);
        double r18484 = r18465 + r18451;
        double r18485 = r18484 / r18465;
        double r18486 = r18483 / r18485;
        double r18487 = r18455 * r18486;
        double r18488 = sqrt(r18487);
        double r18489 = r18454 * r18488;
        double r18490 = 5.301975457738901e+144;
        bool r18491 = r18451 <= r18490;
        double r18492 = 2.0;
        double r18493 = pow(r18465, r18492);
        double r18494 = r18455 * r18493;
        double r18495 = sqrt(r18494);
        double r18496 = r18468 + r18451;
        double r18497 = sqrt(r18496);
        double r18498 = r18495 / r18497;
        double r18499 = r18454 * r18498;
        double r18500 = r18492 * r18451;
        double r18501 = r18500 / r18465;
        double r18502 = r18483 / r18501;
        double r18503 = r18455 * r18502;
        double r18504 = sqrt(r18503);
        double r18505 = r18454 * r18504;
        double r18506 = r18491 ? r18499 : r18505;
        double r18507 = r18481 ? r18489 : r18506;
        double r18508 = r18474 ? r18479 : r18507;
        double r18509 = r18463 ? r18472 : r18508;
        double r18510 = r18453 ? r18461 : r18509;
        return r18510;
}

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 \left(\color{blue}{-1 \cdot re} - 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}{2 \cdot 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(-1 \cdot re - 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{2 \cdot 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)))))