Average Error: 38.4 → 31.1
Time: 18.4s
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(\left(-re\right) - 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(\left(-re\right) - 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(\left(-re\right) - 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(\left(-re\right) - 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 r27646 = 0.5;
        double r27647 = 2.0;
        double r27648 = re;
        double r27649 = r27648 * r27648;
        double r27650 = im;
        double r27651 = r27650 * r27650;
        double r27652 = r27649 + r27651;
        double r27653 = sqrt(r27652);
        double r27654 = r27653 - r27648;
        double r27655 = r27647 * r27654;
        double r27656 = sqrt(r27655);
        double r27657 = r27646 * r27656;
        return r27657;
}

double f(double re, double im) {
        double r27658 = im;
        double r27659 = r27658 * r27658;
        double r27660 = 6.2492935453625e-311;
        bool r27661 = r27659 <= r27660;
        double r27662 = 0.5;
        double r27663 = 2.0;
        double r27664 = re;
        double r27665 = -r27664;
        double r27666 = r27665 - r27664;
        double r27667 = r27663 * r27666;
        double r27668 = sqrt(r27667);
        double r27669 = r27662 * r27668;
        double r27670 = 3.475769164625259e+60;
        bool r27671 = r27659 <= r27670;
        double r27672 = r27663 * r27659;
        double r27673 = sqrt(r27672);
        double r27674 = r27664 * r27664;
        double r27675 = r27674 + r27659;
        double r27676 = sqrt(r27675);
        double r27677 = r27676 + r27664;
        double r27678 = sqrt(r27677);
        double r27679 = r27673 / r27678;
        double r27680 = r27662 * r27679;
        double r27681 = 4.180887210135977e+113;
        bool r27682 = r27659 <= r27681;
        double r27683 = 1.606608869031663e+272;
        bool r27684 = r27659 <= r27683;
        double r27685 = 0.6666666666666666;
        double r27686 = sqrt(r27685);
        double r27687 = pow(r27675, r27686);
        double r27688 = pow(r27687, r27686);
        double r27689 = cbrt(r27688);
        double r27690 = sqrt(r27689);
        double r27691 = 2.0;
        double r27692 = pow(r27664, r27691);
        double r27693 = pow(r27658, r27691);
        double r27694 = r27692 + r27693;
        double r27695 = cbrt(r27694);
        double r27696 = fabs(r27695);
        double r27697 = r27690 * r27696;
        double r27698 = cbrt(r27675);
        double r27699 = log(r27698);
        double r27700 = exp(r27699);
        double r27701 = cbrt(r27700);
        double r27702 = sqrt(r27701);
        double r27703 = r27697 * r27702;
        double r27704 = r27703 - r27664;
        double r27705 = r27663 * r27704;
        double r27706 = sqrt(r27705);
        double r27707 = r27662 * r27706;
        double r27708 = r27658 - r27664;
        double r27709 = r27663 * r27708;
        double r27710 = sqrt(r27709);
        double r27711 = r27662 * r27710;
        double r27712 = r27684 ? r27707 : r27711;
        double r27713 = r27682 ? r27669 : r27712;
        double r27714 = r27671 ? r27680 : r27713;
        double r27715 = r27661 ? r27669 : r27714;
        return r27715;
}

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(-re\right)} - 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(\left(-re\right) - 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(\left(-re\right) - 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)))))