Average Error: 38.9 → 17.5
Time: 19.9s
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 -6.4397722734901768 \cdot 10^{138}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.0918363823904017 \cdot 10^{-262}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le 2.58239247908308831 \cdot 10^{125}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + 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 \le -6.4397722734901768 \cdot 10^{138}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

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

\mathbf{elif}\;re \le 2.58239247908308831 \cdot 10^{125}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + re}}\right)\\

\end{array}
double f(double re, double im) {
        double r27582 = 0.5;
        double r27583 = 2.0;
        double r27584 = re;
        double r27585 = r27584 * r27584;
        double r27586 = im;
        double r27587 = r27586 * r27586;
        double r27588 = r27585 + r27587;
        double r27589 = sqrt(r27588);
        double r27590 = r27589 - r27584;
        double r27591 = r27583 * r27590;
        double r27592 = sqrt(r27591);
        double r27593 = r27582 * r27592;
        return r27593;
}

double f(double re, double im) {
        double r27594 = re;
        double r27595 = -6.439772273490177e+138;
        bool r27596 = r27594 <= r27595;
        double r27597 = 0.5;
        double r27598 = 2.0;
        double r27599 = -2.0;
        double r27600 = r27599 * r27594;
        double r27601 = r27598 * r27600;
        double r27602 = sqrt(r27601);
        double r27603 = r27597 * r27602;
        double r27604 = -5.091836382390402e-262;
        bool r27605 = r27594 <= r27604;
        double r27606 = r27594 * r27594;
        double r27607 = im;
        double r27608 = r27607 * r27607;
        double r27609 = r27606 + r27608;
        double r27610 = sqrt(r27609);
        double r27611 = r27610 - r27594;
        double r27612 = r27598 * r27611;
        double r27613 = sqrt(r27612);
        double r27614 = r27597 * r27613;
        double r27615 = 2.5823924790830883e+125;
        bool r27616 = r27594 <= r27615;
        double r27617 = sqrt(r27598);
        double r27618 = sqrt(r27617);
        double r27619 = fabs(r27607);
        double r27620 = r27610 + r27594;
        double r27621 = sqrt(r27620);
        double r27622 = r27619 / r27621;
        double r27623 = r27618 * r27622;
        double r27624 = r27618 * r27623;
        double r27625 = r27597 * r27624;
        double r27626 = r27594 + r27594;
        double r27627 = sqrt(r27626);
        double r27628 = r27619 / r27627;
        double r27629 = r27617 * r27628;
        double r27630 = r27597 * r27629;
        double r27631 = r27616 ? r27625 : r27630;
        double r27632 = r27605 ? r27614 : r27631;
        double r27633 = r27596 ? r27603 : r27632;
        return r27633;
}

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 4 regimes
  2. if re < -6.439772273490177e+138

    1. Initial program 59.2

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} - re\right)}\]
    4. Taylor expanded around -inf 8.4

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

    if -6.439772273490177e+138 < re < -5.091836382390402e-262

    1. Initial program 20.2

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

    if -5.091836382390402e-262 < re < 2.5823924790830883e+125

    1. Initial program 38.1

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--38.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}}}\]
    4. Applied associate-*r/38.1

      \[\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}}}\]
    5. Applied sqrt-div38.3

      \[\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}}}\]
    6. Simplified29.9

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity29.9

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    11. Applied times-frac29.9

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

      \[\leadsto 0.5 \cdot \left(\color{blue}{\sqrt{2}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]
    13. Simplified21.6

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)\]
    14. Using strategy rm
    15. Applied add-sqr-sqrt21.6

      \[\leadsto 0.5 \cdot \left(\sqrt{\color{blue}{\sqrt{2} \cdot \sqrt{2}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]
    16. Applied sqrt-prod21.6

      \[\leadsto 0.5 \cdot \left(\color{blue}{\left(\sqrt{\sqrt{2}} \cdot \sqrt{\sqrt{2}}\right)} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]
    17. Applied associate-*l*21.6

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

    if 2.5823924790830883e+125 < re

    1. Initial program 62.2

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

      \[\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. Applied associate-*r/62.2

      \[\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}}}\]
    5. Applied sqrt-div62.2

      \[\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}}}\]
    6. Simplified46.0

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity46.0

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    11. Applied times-frac46.0

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt{2}}{\sqrt{1}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    12. Simplified46.0

      \[\leadsto 0.5 \cdot \left(\color{blue}{\sqrt{2}} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]
    13. Simplified44.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -6.4397722734901768 \cdot 10^{138}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.0918363823904017 \cdot 10^{-262}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le 2.58239247908308831 \cdot 10^{125}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{re + re}}\right)\\ \end{array}\]

Reproduce

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