Average Error: 38.5 → 24.1
Time: 4.9s
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.68746212174275753 \cdot 10^{-4}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -8.1662811043924325 \cdot 10^{-156}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im \cdot \frac{im}{\sqrt{re \cdot re + im \cdot im} + re}\right)}\\ \mathbf{elif}\;im \le -1.1627508036807946 \cdot 10^{-191}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le 2.64585070076375456 \cdot 10^{-217}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;im \le 1.55592959088565444 \cdot 10^{-167}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\ \mathbf{elif}\;im \le 4.5008281787475699 \cdot 10^{-108}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;im \le 4.009215390964791 \cdot 10^{62}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{1}}}{\sqrt{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\ \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.68746212174275753 \cdot 10^{-4}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\

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

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

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

\mathbf{elif}\;im \le 1.55592959088565444 \cdot 10^{-167}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\

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

\mathbf{elif}\;im \le 4.009215390964791 \cdot 10^{62}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{1}}}{\sqrt{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\

\end{array}
double f(double re, double im) {
        double r22295 = 0.5;
        double r22296 = 2.0;
        double r22297 = re;
        double r22298 = r22297 * r22297;
        double r22299 = im;
        double r22300 = r22299 * r22299;
        double r22301 = r22298 + r22300;
        double r22302 = sqrt(r22301);
        double r22303 = r22302 - r22297;
        double r22304 = r22296 * r22303;
        double r22305 = sqrt(r22304);
        double r22306 = r22295 * r22305;
        return r22306;
}

double f(double re, double im) {
        double r22307 = im;
        double r22308 = -0.00026874621217427575;
        bool r22309 = r22307 <= r22308;
        double r22310 = 0.5;
        double r22311 = 2.0;
        double r22312 = re;
        double r22313 = r22312 + r22307;
        double r22314 = -r22313;
        double r22315 = r22311 * r22314;
        double r22316 = sqrt(r22315);
        double r22317 = r22310 * r22316;
        double r22318 = -8.166281104392432e-156;
        bool r22319 = r22307 <= r22318;
        double r22320 = r22312 * r22312;
        double r22321 = r22307 * r22307;
        double r22322 = r22320 + r22321;
        double r22323 = sqrt(r22322);
        double r22324 = r22323 + r22312;
        double r22325 = r22307 / r22324;
        double r22326 = r22307 * r22325;
        double r22327 = r22311 * r22326;
        double r22328 = sqrt(r22327);
        double r22329 = r22310 * r22328;
        double r22330 = -1.1627508036807946e-191;
        bool r22331 = r22307 <= r22330;
        double r22332 = 2.6458507007637546e-217;
        bool r22333 = r22307 <= r22332;
        double r22334 = -1.0;
        double r22335 = r22334 * r22312;
        double r22336 = r22335 - r22312;
        double r22337 = r22311 * r22336;
        double r22338 = sqrt(r22337);
        double r22339 = r22310 * r22338;
        double r22340 = 1.5559295908856544e-167;
        bool r22341 = r22307 <= r22340;
        double r22342 = 1.0;
        double r22343 = pow(r22307, r22342);
        double r22344 = r22313 / r22307;
        double r22345 = r22343 / r22344;
        double r22346 = r22311 * r22345;
        double r22347 = sqrt(r22346);
        double r22348 = r22310 * r22347;
        double r22349 = 4.50082817874757e-108;
        bool r22350 = r22307 <= r22349;
        double r22351 = 4.0092153909647915e+62;
        bool r22352 = r22307 <= r22351;
        double r22353 = r22311 * r22343;
        double r22354 = sqrt(r22353);
        double r22355 = r22324 / r22307;
        double r22356 = sqrt(r22355);
        double r22357 = r22354 / r22356;
        double r22358 = r22310 * r22357;
        double r22359 = r22352 ? r22358 : r22348;
        double r22360 = r22350 ? r22339 : r22359;
        double r22361 = r22341 ? r22348 : r22360;
        double r22362 = r22333 ? r22339 : r22361;
        double r22363 = r22331 ? r22317 : r22362;
        double r22364 = r22319 ? r22329 : r22363;
        double r22365 = r22309 ? r22317 : r22364;
        return r22365;
}

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 < -0.00026874621217427575 or -8.166281104392432e-156 < im < -1.1627508036807946e-191

    1. Initial program 41.9

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

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

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

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

    if -0.00026874621217427575 < im < -8.166281104392432e-156

    1. Initial program 27.0

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity29.8

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{\color{blue}{\left(\sqrt{im} \cdot \sqrt{im}\right)}}^{2}}{1 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}}\]
    8. Applied unpow-prod-down64.0

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

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

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

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

    if -1.1627508036807946e-191 < im < 2.6458507007637546e-217 or 1.5559295908856544e-167 < im < 4.50082817874757e-108

    1. Initial program 39.1

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

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

    if 2.6458507007637546e-217 < im < 1.5559295908856544e-167 or 4.0092153909647915e+62 < im

    1. Initial program 47.8

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied sqr-pow50.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{\left(\frac{2}{2}\right)} \cdot {im}^{\left(\frac{2}{2}\right)}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Applied associate-/l*48.5

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

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

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

    if 4.50082817874757e-108 < im < 4.0092153909647915e+62

    1. Initial program 25.3

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

      \[\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. Simplified26.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{2}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied sqr-pow26.1

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{{im}^{\left(\frac{2}{2}\right)} \cdot {im}^{\left(\frac{2}{2}\right)}}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Applied associate-/l*26.1

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

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

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

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot {im}^{1}}}}{\sqrt{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification24.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -2.68746212174275753 \cdot 10^{-4}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le -8.1662811043924325 \cdot 10^{-156}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im \cdot \frac{im}{\sqrt{re \cdot re + im \cdot im} + re}\right)}\\ \mathbf{elif}\;im \le -1.1627508036807946 \cdot 10^{-191}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;im \le 2.64585070076375456 \cdot 10^{-217}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;im \le 1.55592959088565444 \cdot 10^{-167}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\ \mathbf{elif}\;im \le 4.5008281787475699 \cdot 10^{-108}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-1 \cdot re - re\right)}\\ \mathbf{elif}\;im \le 4.009215390964791 \cdot 10^{62}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2 \cdot {im}^{1}}}{\sqrt{\frac{\sqrt{re \cdot re + im \cdot im} + re}{im}}}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{1}}{\frac{re + im}{im}}}\\ \end{array}\]

Reproduce

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