Average Error: 39.3 → 17.8
Time: 9.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 -5.5777813673616158 \cdot 10^{127}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\ \mathbf{elif}\;re \le -4.72909341262804752 \cdot 10^{-264}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{elif}\;re \le 1.27662858127337166 \cdot 10^{-281}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 4.0653242819631272 \cdot 10^{114}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\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 -5.5777813673616158 \cdot 10^{127}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\

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

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

\mathbf{elif}\;re \le 4.0653242819631272 \cdot 10^{114}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\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 r25042 = 0.5;
        double r25043 = 2.0;
        double r25044 = re;
        double r25045 = r25044 * r25044;
        double r25046 = im;
        double r25047 = r25046 * r25046;
        double r25048 = r25045 + r25047;
        double r25049 = sqrt(r25048);
        double r25050 = r25049 - r25044;
        double r25051 = r25043 * r25050;
        double r25052 = sqrt(r25051);
        double r25053 = r25042 * r25052;
        return r25053;
}

double f(double re, double im) {
        double r25054 = re;
        double r25055 = -5.577781367361616e+127;
        bool r25056 = r25054 <= r25055;
        double r25057 = 0.5;
        double r25058 = 2.0;
        double r25059 = -r25054;
        double r25060 = r25059 - r25054;
        double r25061 = r25058 * r25060;
        double r25062 = sqrt(r25061);
        double r25063 = r25057 * r25062;
        double r25064 = -4.7290934126280475e-264;
        bool r25065 = r25054 <= r25064;
        double r25066 = r25054 * r25054;
        double r25067 = im;
        double r25068 = r25067 * r25067;
        double r25069 = r25066 + r25068;
        double r25070 = cbrt(r25069);
        double r25071 = fabs(r25070);
        double r25072 = sqrt(r25070);
        double r25073 = r25071 * r25072;
        double r25074 = r25073 - r25054;
        double r25075 = r25058 * r25074;
        double r25076 = sqrt(r25075);
        double r25077 = r25057 * r25076;
        double r25078 = 1.2766285812733717e-281;
        bool r25079 = r25054 <= r25078;
        double r25080 = r25067 - r25054;
        double r25081 = r25058 * r25080;
        double r25082 = sqrt(r25081);
        double r25083 = r25057 * r25082;
        double r25084 = 4.065324281963127e+114;
        bool r25085 = r25054 <= r25084;
        double r25086 = sqrt(r25058);
        double r25087 = cbrt(r25086);
        double r25088 = r25087 * r25087;
        double r25089 = cbrt(r25087);
        double r25090 = r25089 * r25089;
        double r25091 = fabs(r25067);
        double r25092 = sqrt(r25069);
        double r25093 = r25092 + r25054;
        double r25094 = sqrt(r25093);
        double r25095 = r25091 / r25094;
        double r25096 = r25089 * r25095;
        double r25097 = r25090 * r25096;
        double r25098 = r25088 * r25097;
        double r25099 = r25057 * r25098;
        double r25100 = r25054 + r25054;
        double r25101 = sqrt(r25100);
        double r25102 = r25091 / r25101;
        double r25103 = r25086 * r25102;
        double r25104 = r25057 * r25103;
        double r25105 = r25085 ? r25099 : r25104;
        double r25106 = r25079 ? r25083 : r25105;
        double r25107 = r25065 ? r25077 : r25106;
        double r25108 = r25056 ? r25063 : r25107;
        return r25108;
}

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 < -5.577781367361616e+127

    1. Initial program 56.4

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{-1 \cdot re} - re\right)}\]
    3. Simplified9.0

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

    if -5.577781367361616e+127 < re < -4.7290934126280475e-264

    1. Initial program 20.5

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

      \[\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-prod20.8

      \[\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. Simplified20.8

      \[\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)}\]

    if -4.7290934126280475e-264 < re < 1.2766285812733717e-281

    1. Initial program 30.9

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

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

    if 1.2766285812733717e-281 < re < 4.065324281963127e+114

    1. Initial program 39.6

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

      \[\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/39.4

      \[\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-div39.5

      \[\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. Simplified30.5

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

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

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

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

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

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

      \[\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-cube-cbrt20.5

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

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\sqrt[3]{\sqrt{2}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\right)}\]
    17. Using strategy rm
    18. Applied add-cube-cbrt20.5

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

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

    if 4.065324281963127e+114 < re

    1. Initial program 62.0

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

      \[\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. Simplified44.6

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

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

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

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

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

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

      \[\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.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -5.5777813673616158 \cdot 10^{127}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\ \mathbf{elif}\;re \le -4.72909341262804752 \cdot 10^{-264}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left|\sqrt[3]{re \cdot re + im \cdot im}\right| \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{elif}\;re \le 1.27662858127337166 \cdot 10^{-281}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 4.0653242819631272 \cdot 10^{114}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}\right) \cdot \left(\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\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 2020046 
(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)))))