Average Error: 37.5 → 21.9
Time: 16.3s
Precision: 64
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -2.327249381423175 \cdot 10^{+109}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -3.4252119942142297 \cdot 10^{-274}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \le 8.662274821086832 \cdot 10^{-253}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im + re\right) \cdot \left(-2.0\right)}\\ \mathbf{elif}\;re \le 9.360599483700231 \cdot 10^{+128}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{\sqrt{im \cdot im + re \cdot re} + re} \cdot \left|im\right|\right) \cdot 2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -2.327249381423175 \cdot 10^{+109}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

\mathbf{elif}\;re \le -3.4252119942142297 \cdot 10^{-274}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\

\mathbf{elif}\;re \le 8.662274821086832 \cdot 10^{-253}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(im + re\right) \cdot \left(-2.0\right)}\\

\mathbf{elif}\;re \le 9.360599483700231 \cdot 10^{+128}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{\sqrt{im \cdot im + re \cdot re} + re} \cdot \left|im\right|\right) \cdot 2.0}\\

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

\end{array}
double f(double re, double im) {
        double r420671 = 0.5;
        double r420672 = 2.0;
        double r420673 = re;
        double r420674 = r420673 * r420673;
        double r420675 = im;
        double r420676 = r420675 * r420675;
        double r420677 = r420674 + r420676;
        double r420678 = sqrt(r420677);
        double r420679 = r420678 - r420673;
        double r420680 = r420672 * r420679;
        double r420681 = sqrt(r420680);
        double r420682 = r420671 * r420681;
        return r420682;
}

double f(double re, double im) {
        double r420683 = re;
        double r420684 = -2.327249381423175e+109;
        bool r420685 = r420683 <= r420684;
        double r420686 = -2.0;
        double r420687 = r420686 * r420683;
        double r420688 = 2.0;
        double r420689 = r420687 * r420688;
        double r420690 = sqrt(r420689);
        double r420691 = 0.5;
        double r420692 = r420690 * r420691;
        double r420693 = -3.4252119942142297e-274;
        bool r420694 = r420683 <= r420693;
        double r420695 = im;
        double r420696 = r420695 * r420695;
        double r420697 = r420683 * r420683;
        double r420698 = r420696 + r420697;
        double r420699 = sqrt(r420698);
        double r420700 = r420699 - r420683;
        double r420701 = r420688 * r420700;
        double r420702 = sqrt(r420701);
        double r420703 = r420691 * r420702;
        double r420704 = 8.662274821086832e-253;
        bool r420705 = r420683 <= r420704;
        double r420706 = r420695 + r420683;
        double r420707 = -r420688;
        double r420708 = r420706 * r420707;
        double r420709 = sqrt(r420708);
        double r420710 = r420691 * r420709;
        double r420711 = 9.360599483700231e+128;
        bool r420712 = r420683 <= r420711;
        double r420713 = fabs(r420695);
        double r420714 = r420699 + r420683;
        double r420715 = r420713 / r420714;
        double r420716 = r420715 * r420713;
        double r420717 = r420716 * r420688;
        double r420718 = sqrt(r420717);
        double r420719 = r420691 * r420718;
        double r420720 = r420696 * r420688;
        double r420721 = sqrt(r420720);
        double r420722 = r420683 + r420683;
        double r420723 = sqrt(r420722);
        double r420724 = r420721 / r420723;
        double r420725 = r420724 * r420691;
        double r420726 = r420712 ? r420719 : r420725;
        double r420727 = r420705 ? r420710 : r420726;
        double r420728 = r420694 ? r420703 : r420727;
        double r420729 = r420685 ? r420692 : r420728;
        return r420729;
}

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 5 regimes
  2. if re < -2.327249381423175e+109

    1. Initial program 51.2

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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 10.4

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

    if -2.327249381423175e+109 < re < -3.4252119942142297e-274

    1. Initial program 19.4

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

    if -3.4252119942142297e-274 < re < 8.662274821086832e-253

    1. Initial program 31.9

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Using strategy rm
    5. Applied flip--32.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\left(\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}}\right) \cdot \left(\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}}\right) - re \cdot re}{\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}}}\]
    6. Simplified32.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im + 0}}{\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}}\]
    7. Simplified32.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im + 0}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Taylor expanded around -inf 31.0

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

    if 8.662274821086832e-253 < re < 9.360599483700231e+128

    1. Initial program 39.2

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Using strategy rm
    5. Applied flip--40.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\left(\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}}\right) \cdot \left(\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}}\right) - re \cdot re}{\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}}}\]
    6. Simplified30.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im + 0}}{\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}}\]
    7. Simplified29.8

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im + 0}{\sqrt{re \cdot re + im \cdot im} + \color{blue}{1 \cdot re}}}\]
    10. Applied *-un-lft-identity29.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im + 0}{\color{blue}{1 \cdot \sqrt{re \cdot re + im \cdot im}} + 1 \cdot re}}\]
    11. Applied distribute-lft-out29.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im + 0}{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}}\]
    12. Applied add-sqr-sqrt29.8

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\left(\frac{\sqrt{im \cdot im + 0}}{1} \cdot \frac{\sqrt{im \cdot im + 0}}{\sqrt{re \cdot re + im \cdot im} + re}\right)}}\]
    14. Simplified29.7

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

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

    if 9.360599483700231e+128 < re

    1. Initial program 60.7

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Using strategy rm
    5. Applied flip--61.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\left(\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}}\right) \cdot \left(\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}}\right) - re \cdot re}{\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}}}\]
    6. Simplified47.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im + 0}}{\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}}\]
    7. Simplified47.6

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im + 0}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Using strategy rm
    9. Applied associate-*r/47.6

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    12. Taylor expanded around inf 22.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.327249381423175 \cdot 10^{+109}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -3.4252119942142297 \cdot 10^{-274}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \le 8.662274821086832 \cdot 10^{-253}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im + re\right) \cdot \left(-2.0\right)}\\ \mathbf{elif}\;re \le 9.360599483700231 \cdot 10^{+128}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{\sqrt{im \cdot im + re \cdot re} + re} \cdot \left|im\right|\right) \cdot 2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sqrt{\left(im \cdot im\right) \cdot 2.0}}{\sqrt{re + re}} \cdot 0.5\\ \end{array}\]

Reproduce

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