Average Error: 38.4 → 31.1
Time: 18.3s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \cdot im \le 6.249293545362490289613501387551416785833 \cdot 10^{-311}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \cdot im \le 3.475769164625259191563207807351624661806 \cdot 10^{60}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \cdot im \le 4.18088721013597721819721293488303477502 \cdot 10^{113}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \cdot im \le 1.606608869031663108780796224948697957317 \cdot 10^{272}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt{\sqrt[3]{{\left({\left(re \cdot re + im \cdot im\right)}^{\left(\sqrt{\frac{2}{3}}\right)}\right)}^{\left(\sqrt{\frac{2}{3}}\right)}}} \cdot \left|\sqrt[3]{{re}^{2} + {im}^{2}}\right|\right) \cdot \sqrt{\sqrt[3]{e^{\log \left(\sqrt[3]{re \cdot re + im \cdot im}\right)}}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - 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}\;im \cdot im \le 6.249293545362490289613501387551416785833 \cdot 10^{-311}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

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

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

\mathbf{elif}\;im \cdot im \le 1.606608869031663108780796224948697957317 \cdot 10^{272}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt{\sqrt[3]{{\left({\left(re \cdot re + im \cdot im\right)}^{\left(\sqrt{\frac{2}{3}}\right)}\right)}^{\left(\sqrt{\frac{2}{3}}\right)}}} \cdot \left|\sqrt[3]{{re}^{2} + {im}^{2}}\right|\right) \cdot \sqrt{\sqrt[3]{e^{\log \left(\sqrt[3]{re \cdot re + im \cdot im}\right)}}} - re\right)}\\

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

\end{array}
double f(double re, double im) {
        double r27670 = 0.5;
        double r27671 = 2.0;
        double r27672 = re;
        double r27673 = r27672 * r27672;
        double r27674 = im;
        double r27675 = r27674 * r27674;
        double r27676 = r27673 + r27675;
        double r27677 = sqrt(r27676);
        double r27678 = r27677 - r27672;
        double r27679 = r27671 * r27678;
        double r27680 = sqrt(r27679);
        double r27681 = r27670 * r27680;
        return r27681;
}

double f(double re, double im) {
        double r27682 = im;
        double r27683 = r27682 * r27682;
        double r27684 = 6.2492935453625e-311;
        bool r27685 = r27683 <= r27684;
        double r27686 = 0.5;
        double r27687 = 2.0;
        double r27688 = -2.0;
        double r27689 = re;
        double r27690 = r27688 * r27689;
        double r27691 = r27687 * r27690;
        double r27692 = sqrt(r27691);
        double r27693 = r27686 * r27692;
        double r27694 = 3.475769164625259e+60;
        bool r27695 = r27683 <= r27694;
        double r27696 = r27687 * r27683;
        double r27697 = sqrt(r27696);
        double r27698 = r27689 * r27689;
        double r27699 = r27698 + r27683;
        double r27700 = sqrt(r27699);
        double r27701 = r27700 + r27689;
        double r27702 = sqrt(r27701);
        double r27703 = r27697 / r27702;
        double r27704 = r27686 * r27703;
        double r27705 = 4.180887210135977e+113;
        bool r27706 = r27683 <= r27705;
        double r27707 = 1.606608869031663e+272;
        bool r27708 = r27683 <= r27707;
        double r27709 = 0.6666666666666666;
        double r27710 = sqrt(r27709);
        double r27711 = pow(r27699, r27710);
        double r27712 = pow(r27711, r27710);
        double r27713 = cbrt(r27712);
        double r27714 = sqrt(r27713);
        double r27715 = 2.0;
        double r27716 = pow(r27689, r27715);
        double r27717 = pow(r27682, r27715);
        double r27718 = r27716 + r27717;
        double r27719 = cbrt(r27718);
        double r27720 = fabs(r27719);
        double r27721 = r27714 * r27720;
        double r27722 = cbrt(r27699);
        double r27723 = log(r27722);
        double r27724 = exp(r27723);
        double r27725 = cbrt(r27724);
        double r27726 = sqrt(r27725);
        double r27727 = r27721 * r27726;
        double r27728 = r27727 - r27689;
        double r27729 = r27687 * r27728;
        double r27730 = sqrt(r27729);
        double r27731 = r27686 * r27730;
        double r27732 = r27682 - r27689;
        double r27733 = r27687 * r27732;
        double r27734 = sqrt(r27733);
        double r27735 = r27686 * r27734;
        double r27736 = r27708 ? r27731 : r27735;
        double r27737 = r27706 ? r27693 : r27736;
        double r27738 = r27695 ? r27704 : r27737;
        double r27739 = r27685 ? r27693 : r27738;
        return r27739;
}

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 (* im im) < 6.2492935453625e-311 or 3.475769164625259e+60 < (* im im) < 4.180887210135977e+113

    1. Initial program 41.2

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

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

    if 6.2492935453625e-311 < (* im im) < 3.475769164625259e+60

    1. Initial program 26.2

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

      \[\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-div37.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. Simplified26.2

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

    if 4.180887210135977e+113 < (* im im) < 1.606608869031663e+272

    1. Initial program 16.8

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    4. Applied sqrt-prod17.1

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|} \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}} - re\right)}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt17.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}}} - re\right)}\]
    8. Applied cbrt-prod17.1

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \color{blue}{\left(\sqrt{\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im}}}\right)} - re\right)}\]
    10. Applied associate-*r*17.1

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt{\sqrt[3]{{\left(re \cdot re + im \cdot im\right)}^{\frac{2}{3}}}} \cdot \left|\sqrt[3]{{re}^{2} + {im}^{2}}\right|\right)} \cdot \sqrt{\sqrt[3]{\sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    12. Using strategy rm
    13. Applied add-exp-log19.2

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt{\sqrt[3]{{\left(re \cdot re + im \cdot im\right)}^{\color{blue}{\left(\sqrt{\frac{2}{3}} \cdot \sqrt{\frac{2}{3}}\right)}}}} \cdot \left|\sqrt[3]{{re}^{2} + {im}^{2}}\right|\right) \cdot \sqrt{\sqrt[3]{e^{\log \left(\sqrt[3]{re \cdot re + im \cdot im}\right)}}} - re\right)}\]
    16. Applied pow-unpow18.1

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

    if 1.606608869031663e+272 < (* im im)

    1. Initial program 59.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \cdot im \le 6.249293545362490289613501387551416785833 \cdot 10^{-311}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \cdot im \le 3.475769164625259191563207807351624661806 \cdot 10^{60}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \cdot im \le 4.18088721013597721819721293488303477502 \cdot 10^{113}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \cdot im \le 1.606608869031663108780796224948697957317 \cdot 10^{272}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(\sqrt{\sqrt[3]{{\left({\left(re \cdot re + im \cdot im\right)}^{\left(\sqrt{\frac{2}{3}}\right)}\right)}^{\left(\sqrt{\frac{2}{3}}\right)}}} \cdot \left|\sqrt[3]{{re}^{2} + {im}^{2}}\right|\right) \cdot \sqrt{\sqrt[3]{e^{\log \left(\sqrt[3]{re \cdot re + im \cdot im}\right)}}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

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