Average Error: 39.3 → 17.8
Time: 7.4s
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(-2 \cdot 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 1.57299197465096736 \cdot 10^{106}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\left|im\right|}\right) \cdot \frac{\sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{2 \cdot 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(-2 \cdot 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 1.57299197465096736 \cdot 10^{106}:\\
\;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\left|im\right|}\right) \cdot \frac{\sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\\

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

\end{array}
double f(double re, double im) {
        double r22582 = 0.5;
        double r22583 = 2.0;
        double r22584 = re;
        double r22585 = r22584 * r22584;
        double r22586 = im;
        double r22587 = r22586 * r22586;
        double r22588 = r22585 + r22587;
        double r22589 = sqrt(r22588);
        double r22590 = r22589 - r22584;
        double r22591 = r22583 * r22590;
        double r22592 = sqrt(r22591);
        double r22593 = r22582 * r22592;
        return r22593;
}

double f(double re, double im) {
        double r22594 = re;
        double r22595 = -5.577781367361616e+127;
        bool r22596 = r22594 <= r22595;
        double r22597 = 0.5;
        double r22598 = 2.0;
        double r22599 = -2.0;
        double r22600 = r22599 * r22594;
        double r22601 = r22598 * r22600;
        double r22602 = sqrt(r22601);
        double r22603 = r22597 * r22602;
        double r22604 = -4.7290934126280475e-264;
        bool r22605 = r22594 <= r22604;
        double r22606 = r22594 * r22594;
        double r22607 = im;
        double r22608 = r22607 * r22607;
        double r22609 = r22606 + r22608;
        double r22610 = cbrt(r22609);
        double r22611 = fabs(r22610);
        double r22612 = sqrt(r22610);
        double r22613 = r22611 * r22612;
        double r22614 = r22613 - r22594;
        double r22615 = r22598 * r22614;
        double r22616 = sqrt(r22615);
        double r22617 = r22597 * r22616;
        double r22618 = 1.2766285812733717e-281;
        bool r22619 = r22594 <= r22618;
        double r22620 = r22607 - r22594;
        double r22621 = r22598 * r22620;
        double r22622 = sqrt(r22621);
        double r22623 = r22597 * r22622;
        double r22624 = 1.5729919746509674e+106;
        bool r22625 = r22594 <= r22624;
        double r22626 = sqrt(r22598);
        double r22627 = fabs(r22607);
        double r22628 = sqrt(r22627);
        double r22629 = r22626 * r22628;
        double r22630 = sqrt(r22609);
        double r22631 = r22630 + r22594;
        double r22632 = sqrt(r22631);
        double r22633 = r22628 / r22632;
        double r22634 = r22629 * r22633;
        double r22635 = r22597 * r22634;
        double r22636 = 2.0;
        double r22637 = r22636 * r22594;
        double r22638 = sqrt(r22637);
        double r22639 = r22627 / r22638;
        double r22640 = r22626 * r22639;
        double r22641 = r22597 * r22640;
        double r22642 = r22625 ? r22635 : r22641;
        double r22643 = r22619 ? r22623 : r22642;
        double r22644 = r22605 ? r22617 : r22643;
        double r22645 = r22596 ? r22603 : r22644;
        return r22645;
}

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 \color{blue}{\left(-2 \cdot 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 < 1.5729919746509674e+106

    1. Initial program 39.3

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

      \[\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 *-un-lft-identity20.7

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}}\right)\]
    16. Applied sqrt-prod20.7

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\color{blue}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)\]
    17. Applied add-sqr-sqrt20.7

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \frac{\color{blue}{\sqrt{\left|im\right|} \cdot \sqrt{\left|im\right|}}}{\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\]
    18. Applied times-frac20.7

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

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt{2} \cdot \frac{\sqrt{\left|im\right|}}{\sqrt{1}}\right) \cdot \frac{\sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    20. Simplified20.7

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

    if 1.5729919746509674e+106 < re

    1. Initial program 61.7

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

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

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

      \[\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. Simplified43.9

      \[\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-identity43.9

      \[\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-prod43.9

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

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

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

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

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

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{\color{blue}{2 \cdot 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(-2 \cdot 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 1.57299197465096736 \cdot 10^{106}:\\ \;\;\;\;0.5 \cdot \left(\left(\sqrt{2} \cdot \sqrt{\left|im\right|}\right) \cdot \frac{\sqrt{\left|im\right|}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \frac{\left|im\right|}{\sqrt{2 \cdot 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)))))