Average Error: 37.5 → 23.6
Time: 18.0s
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 -2.9246267864345723 \cdot 10^{+141}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2.0\right) \cdot \left(re + im\right)}\\ \mathbf{elif}\;im \le -4.059577396294607 \cdot 10^{-207}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;im \le 5.507442474902197 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 6.856126058625656 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{re + re} \cdot \left|im\right|\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 3.702479024316318 \cdot 10^{-159}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 1.2706613329577357 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{im \cdot \left(2.0 \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \le 5.609908877325638 \cdot 10^{-78}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 8.867415664754299 \cdot 10^{+43}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{re + im}\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 -2.9246267864345723 \cdot 10^{+141}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-2.0\right) \cdot \left(re + im\right)}\\

\mathbf{elif}\;im \le -4.059577396294607 \cdot 10^{-207}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\

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

\mathbf{elif}\;im \le 6.856126058625656 \cdot 10^{-252}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{re + re} \cdot \left|im\right|\right) \cdot 2.0}\\

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

\mathbf{elif}\;im \le 1.2706613329577357 \cdot 10^{-100}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{im \cdot \left(2.0 \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\

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

\mathbf{elif}\;im \le 8.867415664754299 \cdot 10^{+43}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\

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

\end{array}
double f(double re, double im) {
        double r405102 = 0.5;
        double r405103 = 2.0;
        double r405104 = re;
        double r405105 = r405104 * r405104;
        double r405106 = im;
        double r405107 = r405106 * r405106;
        double r405108 = r405105 + r405107;
        double r405109 = sqrt(r405108);
        double r405110 = r405109 - r405104;
        double r405111 = r405103 * r405110;
        double r405112 = sqrt(r405111);
        double r405113 = r405102 * r405112;
        return r405113;
}

double f(double re, double im) {
        double r405114 = im;
        double r405115 = -2.9246267864345723e+141;
        bool r405116 = r405114 <= r405115;
        double r405117 = 0.5;
        double r405118 = 2.0;
        double r405119 = -r405118;
        double r405120 = re;
        double r405121 = r405120 + r405114;
        double r405122 = r405119 * r405121;
        double r405123 = sqrt(r405122);
        double r405124 = r405117 * r405123;
        double r405125 = -4.059577396294607e-207;
        bool r405126 = r405114 <= r405125;
        double r405127 = r405120 * r405120;
        double r405128 = r405114 * r405114;
        double r405129 = r405127 + r405128;
        double r405130 = sqrt(r405129);
        double r405131 = r405130 - r405120;
        double r405132 = r405118 * r405131;
        double r405133 = sqrt(r405132);
        double r405134 = r405117 * r405133;
        double r405135 = 5.507442474902197e-296;
        bool r405136 = r405114 <= r405135;
        double r405137 = -2.0;
        double r405138 = r405137 * r405120;
        double r405139 = r405118 * r405138;
        double r405140 = sqrt(r405139);
        double r405141 = r405117 * r405140;
        double r405142 = 6.856126058625656e-252;
        bool r405143 = r405114 <= r405142;
        double r405144 = fabs(r405114);
        double r405145 = r405120 + r405120;
        double r405146 = r405144 / r405145;
        double r405147 = r405146 * r405144;
        double r405148 = r405147 * r405118;
        double r405149 = sqrt(r405148);
        double r405150 = r405117 * r405149;
        double r405151 = 3.702479024316318e-159;
        bool r405152 = r405114 <= r405151;
        double r405153 = 1.2706613329577357e-100;
        bool r405154 = r405114 <= r405153;
        double r405155 = r405118 * r405114;
        double r405156 = r405114 * r405155;
        double r405157 = sqrt(r405156);
        double r405158 = r405130 + r405120;
        double r405159 = sqrt(r405158);
        double r405160 = r405157 / r405159;
        double r405161 = r405117 * r405160;
        double r405162 = 5.609908877325638e-78;
        bool r405163 = r405114 <= r405162;
        double r405164 = 8.867415664754299e+43;
        bool r405165 = r405114 <= r405164;
        double r405166 = r405144 / r405121;
        double r405167 = r405144 * r405166;
        double r405168 = r405118 * r405167;
        double r405169 = sqrt(r405168);
        double r405170 = r405117 * r405169;
        double r405171 = r405165 ? r405134 : r405170;
        double r405172 = r405163 ? r405141 : r405171;
        double r405173 = r405154 ? r405161 : r405172;
        double r405174 = r405152 ? r405141 : r405173;
        double r405175 = r405143 ? r405150 : r405174;
        double r405176 = r405136 ? r405141 : r405175;
        double r405177 = r405126 ? r405134 : r405176;
        double r405178 = r405116 ? r405124 : r405177;
        return r405178;
}

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 6 regimes
  2. if im < -2.9246267864345723e+141

    1. Initial program 58.7

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

      \[\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)}\]
    4. Using strategy rm
    5. Applied flip--58.7

      \[\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}}}\]
    6. Simplified58.7

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Taylor expanded around -inf 8.6

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

    if -2.9246267864345723e+141 < im < -4.059577396294607e-207 or 5.609908877325638e-78 < im < 8.867415664754299e+43

    1. Initial program 26.0

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]

    if -4.059577396294607e-207 < im < 5.507442474902197e-296 or 6.856126058625656e-252 < im < 3.702479024316318e-159 or 1.2706613329577357e-100 < im < 5.609908877325638e-78

    1. Initial program 40.9

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

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

    if 5.507442474902197e-296 < im < 6.856126058625656e-252

    1. Initial program 40.1

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

      \[\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)}\]
    4. Using strategy rm
    5. Applied flip--58.5

      \[\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}}}\]
    6. Simplified50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{0 + im \cdot im}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} + re}}\]
    7. Simplified50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}}\]
    10. Applied add-sqr-sqrt50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{\sqrt{0 + im \cdot im} \cdot \sqrt{0 + im \cdot im}}}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}\]
    11. Applied times-frac50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\left(\frac{\sqrt{0 + im \cdot im}}{1} \cdot \frac{\sqrt{0 + im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}\right)}}\]
    12. Simplified50.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left|im\right|} \cdot \frac{\sqrt{0 + im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}\right)}\]
    13. Simplified50.0

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\left|im\right| \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    14. Taylor expanded around inf 48.0

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

    if 3.702479024316318e-159 < im < 1.2706613329577357e-100

    1. Initial program 29.1

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

      \[\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)}\]
    4. Using strategy rm
    5. Applied flip--42.4

      \[\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}}}\]
    6. Simplified34.1

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Using strategy rm
    9. Applied associate-*r/34.0

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

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \cdot \left(0 + im \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    11. Simplified30.0

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

    if 8.867415664754299e+43 < im

    1. Initial program 43.7

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

      \[\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)}\]
    4. Using strategy rm
    5. Applied flip--44.9

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

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity44.0

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{0 + im \cdot im}{\color{blue}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}}\]
    10. Applied add-sqr-sqrt44.0

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{\sqrt{0 + im \cdot im} \cdot \sqrt{0 + im \cdot im}}}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}\]
    11. Applied times-frac44.0

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left|im\right|} \cdot \frac{\sqrt{0 + im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}\right)}\]
    13. Simplified44.7

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\left|im\right| \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{re \cdot re + im \cdot im} + re}}\right)}\]
    14. Taylor expanded around 0 12.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -2.9246267864345723 \cdot 10^{+141}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2.0\right) \cdot \left(re + im\right)}\\ \mathbf{elif}\;im \le -4.059577396294607 \cdot 10^{-207}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;im \le 5.507442474902197 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 6.856126058625656 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(\frac{\left|im\right|}{re + re} \cdot \left|im\right|\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 3.702479024316318 \cdot 10^{-159}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 1.2706613329577357 \cdot 10^{-100}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{im \cdot \left(2.0 \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \mathbf{elif}\;im \le 5.609908877325638 \cdot 10^{-78}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 8.867415664754299 \cdot 10^{+43}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\left|im\right| \cdot \frac{\left|im\right|}{re + im}\right)}\\ \end{array}\]

Reproduce

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