Average Error: 36.8 → 30.0
Time: 30.6s
Precision: 64
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \le -9.735645360863155 \cdot 10^{-247}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2.0}\\ \mathbf{elif}\;im \le 1.1260714228031905 \cdot 10^{-171}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(re \cdot -2\right)} \cdot 0.5\\ \mathbf{elif}\;im \le 1.7084160018085855 \cdot 10^{+61}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\left(\sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right|} \cdot \sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right| \cdot \sqrt{\sqrt[3]{im \cdot im + re \cdot re}}}\right) \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} - re\right) \cdot 2.0}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\ \end{array}\]
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;im \le -9.735645360863155 \cdot 10^{-247}:\\
\;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2.0}\\

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

\mathbf{elif}\;im \le 1.7084160018085855 \cdot 10^{+61}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(\left(\sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right|} \cdot \sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right| \cdot \sqrt{\sqrt[3]{im \cdot im + re \cdot re}}}\right) \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} - re\right) \cdot 2.0}\\

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

\end{array}
double f(double re, double im) {
        double r988753 = 0.5;
        double r988754 = 2.0;
        double r988755 = re;
        double r988756 = r988755 * r988755;
        double r988757 = im;
        double r988758 = r988757 * r988757;
        double r988759 = r988756 + r988758;
        double r988760 = sqrt(r988759);
        double r988761 = r988760 - r988755;
        double r988762 = r988754 * r988761;
        double r988763 = sqrt(r988762);
        double r988764 = r988753 * r988763;
        return r988764;
}

double f(double re, double im) {
        double r988765 = im;
        double r988766 = -9.735645360863155e-247;
        bool r988767 = r988765 <= r988766;
        double r988768 = 0.5;
        double r988769 = r988765 * r988765;
        double r988770 = re;
        double r988771 = r988770 * r988770;
        double r988772 = r988769 + r988771;
        double r988773 = sqrt(r988772);
        double r988774 = r988770 + r988773;
        double r988775 = r988769 / r988774;
        double r988776 = 2.0;
        double r988777 = r988775 * r988776;
        double r988778 = sqrt(r988777);
        double r988779 = r988768 * r988778;
        double r988780 = 1.1260714228031905e-171;
        bool r988781 = r988765 <= r988780;
        double r988782 = -2.0;
        double r988783 = r988770 * r988782;
        double r988784 = r988776 * r988783;
        double r988785 = sqrt(r988784);
        double r988786 = r988785 * r988768;
        double r988787 = 1.7084160018085855e+61;
        bool r988788 = r988765 <= r988787;
        double r988789 = cbrt(r988772);
        double r988790 = fabs(r988789);
        double r988791 = sqrt(r988790);
        double r988792 = sqrt(r988789);
        double r988793 = r988790 * r988792;
        double r988794 = sqrt(r988793);
        double r988795 = r988791 * r988794;
        double r988796 = sqrt(r988792);
        double r988797 = r988795 * r988796;
        double r988798 = r988797 - r988770;
        double r988799 = r988798 * r988776;
        double r988800 = sqrt(r988799);
        double r988801 = r988768 * r988800;
        double r988802 = r988765 - r988770;
        double r988803 = r988776 * r988802;
        double r988804 = sqrt(r988803);
        double r988805 = r988768 * r988804;
        double r988806 = r988788 ? r988801 : r988805;
        double r988807 = r988781 ? r988786 : r988806;
        double r988808 = r988767 ? r988779 : r988807;
        return r988808;
}

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 < -9.735645360863155e-247

    1. Initial program 36.8

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

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}} - re\right)}\]
    5. Using strategy rm
    6. Applied flip--43.1

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} + re}}\]
    8. Simplified39.3

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{im \cdot im}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]

    if -9.735645360863155e-247 < im < 1.1260714228031905e-171

    1. Initial program 41.8

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

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

    if 1.1260714228031905e-171 < im < 1.7084160018085855e+61

    1. Initial program 24.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-sqr-sqrt24.9

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}} - re\right)}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt25.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\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)}\]
    7. Applied sqrt-prod25.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\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)}\]
    8. Applied sqrt-prod25.1

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \color{blue}{\left(\sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}}\right)} - re\right)}\]
    9. Applied associate-*r*25.1

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|}\right)} \cdot \sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    11. Using strategy rm
    12. Applied add-cube-cbrt25.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\left(\sqrt{\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}}}} \cdot \sqrt{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|}\right) \cdot \sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    13. Applied sqrt-prod25.2

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\left(\sqrt{\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}}}} \cdot \sqrt{\left|\sqrt[3]{re \cdot re + im \cdot im}\right|}\right) \cdot \sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}} - re\right)}\]
    14. Simplified25.2

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

    if 1.7084160018085855e+61 < im

    1. Initial program 44.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -9.735645360863155 \cdot 10^{-247}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2.0}\\ \mathbf{elif}\;im \le 1.1260714228031905 \cdot 10^{-171}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(re \cdot -2\right)} \cdot 0.5\\ \mathbf{elif}\;im \le 1.7084160018085855 \cdot 10^{+61}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\left(\sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right|} \cdot \sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right| \cdot \sqrt{\sqrt[3]{im \cdot im + re \cdot re}}}\right) \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} - re\right) \cdot 2.0}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

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