Average Error: 38.1 → 23.6
Time: 10.5s
Precision: 64
\[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;im \le -2.988050716372587735980886101473626059348 \cdot 10^{94}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -2.408385642641786286480008837094784713248 \cdot 10^{-139}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + \sqrt{re \cdot re + im \cdot im}}{im}}}\\ \mathbf{elif}\;im \le -1.98927377824392110917094836198550216755 \cdot 10^{-194}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le -7.445258062611977880073739529579082335909 \cdot 10^{-232}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le 4.197900270983836794266681002151534754925 \cdot 10^{-173}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 0.06696772449087015632862573966121999546885:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \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 \le -2.988050716372587735980886101473626059348 \cdot 10^{94}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\

\mathbf{elif}\;im \le -2.408385642641786286480008837094784713248 \cdot 10^{-139}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + \sqrt{re \cdot re + im \cdot im}}{im}}}\\

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

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

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

\mathbf{elif}\;im \le 0.06696772449087015632862573966121999546885:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\

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

\end{array}
double f(double re, double im) {
        double r16284 = 0.5;
        double r16285 = 2.0;
        double r16286 = re;
        double r16287 = r16286 * r16286;
        double r16288 = im;
        double r16289 = r16288 * r16288;
        double r16290 = r16287 + r16289;
        double r16291 = sqrt(r16290);
        double r16292 = r16291 - r16286;
        double r16293 = r16285 * r16292;
        double r16294 = sqrt(r16293);
        double r16295 = r16284 * r16294;
        return r16295;
}

double f(double re, double im) {
        double r16296 = im;
        double r16297 = -2.9880507163725877e+94;
        bool r16298 = r16296 <= r16297;
        double r16299 = 0.5;
        double r16300 = 2.0;
        double r16301 = re;
        double r16302 = r16301 + r16296;
        double r16303 = -r16302;
        double r16304 = r16300 * r16303;
        double r16305 = sqrt(r16304);
        double r16306 = r16299 * r16305;
        double r16307 = -2.4083856426417863e-139;
        bool r16308 = r16296 <= r16307;
        double r16309 = r16301 * r16301;
        double r16310 = r16296 * r16296;
        double r16311 = r16309 + r16310;
        double r16312 = sqrt(r16311);
        double r16313 = r16301 + r16312;
        double r16314 = r16313 / r16296;
        double r16315 = r16296 / r16314;
        double r16316 = r16300 * r16315;
        double r16317 = sqrt(r16316);
        double r16318 = r16299 * r16317;
        double r16319 = -1.989273778243921e-194;
        bool r16320 = r16296 <= r16319;
        double r16321 = -2.0;
        double r16322 = r16321 * r16301;
        double r16323 = r16300 * r16322;
        double r16324 = sqrt(r16323);
        double r16325 = r16299 * r16324;
        double r16326 = -7.445258062611978e-232;
        bool r16327 = r16296 <= r16326;
        double r16328 = 4.197900270983837e-173;
        bool r16329 = r16296 <= r16328;
        double r16330 = 0.06696772449087016;
        bool r16331 = r16296 <= r16330;
        double r16332 = r16300 * r16310;
        double r16333 = sqrt(r16332);
        double r16334 = sqrt(r16313);
        double r16335 = r16333 / r16334;
        double r16336 = r16299 * r16335;
        double r16337 = r16296 - r16301;
        double r16338 = r16300 * r16337;
        double r16339 = sqrt(r16338);
        double r16340 = r16299 * r16339;
        double r16341 = r16331 ? r16336 : r16340;
        double r16342 = r16329 ? r16325 : r16341;
        double r16343 = r16327 ? r16306 : r16342;
        double r16344 = r16320 ? r16325 : r16343;
        double r16345 = r16308 ? r16318 : r16344;
        double r16346 = r16298 ? r16306 : r16345;
        return r16346;
}

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 im < -2.9880507163725877e+94 or -1.989273778243921e-194 < im < -7.445258062611978e-232

    1. Initial program 48.6

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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-prod48.7

      \[\leadsto 0.5 \cdot \sqrt{2 \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--51.9

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified51.1

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified51.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    9. Taylor expanded around -inf 16.7

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

    if -2.9880507163725877e+94 < im < -2.4083856426417863e-139

    1. Initial program 24.3

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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-prod24.4

      \[\leadsto 0.5 \cdot \sqrt{2 \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--32.3

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified24.4

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified24.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    9. Using strategy rm
    10. Applied associate-/l*24.4

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

    if -2.4083856426417863e-139 < im < -1.989273778243921e-194 or -7.445258062611978e-232 < im < 4.197900270983837e-173

    1. Initial program 42.9

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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-prod44.0

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

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

    if 4.197900270983837e-173 < im < 0.06696772449087016

    1. Initial program 29.3

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

      \[\leadsto 0.5 \cdot \sqrt{2 \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-prod29.5

      \[\leadsto 0.5 \cdot \sqrt{2 \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--39.3

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified30.9

      \[\leadsto 0.5 \cdot \sqrt{2 \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. Simplified31.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{im \cdot im}{\color{blue}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    9. Using strategy rm
    10. Applied associate-*r/31.0

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \cdot \left(im \cdot im\right)}{re + \sqrt{re \cdot re + im \cdot im}}}}\]
    11. Applied sqrt-div29.3

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

    if 0.06696772449087016 < im

    1. Initial program 41.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -2.988050716372587735980886101473626059348 \cdot 10^{94}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -2.408385642641786286480008837094784713248 \cdot 10^{-139}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{im}{\frac{re + \sqrt{re \cdot re + im \cdot im}}{im}}}\\ \mathbf{elif}\;im \le -1.98927377824392110917094836198550216755 \cdot 10^{-194}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le -7.445258062611977880073739529579082335909 \cdot 10^{-232}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le 4.197900270983836794266681002151534754925 \cdot 10^{-173}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;im \le 0.06696772449087015632862573966121999546885:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot \left(im \cdot im\right)}}{\sqrt{re + \sqrt{re \cdot re + im \cdot im}}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

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