Average Error: 39.0 → 18.2
Time: 6.2s
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 -7.76046808581119742207882133243897814791 \cdot 10^{47}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.899676996224969797473356094348485392996 \cdot 10^{-185}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{elif}\;re \le -2.648694287528554075771729853998939215804 \cdot 10^{-263}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le -1.811389298153715552045406905668607348984 \cdot 10^{-301}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 2.110613024816268606126864582999880133873 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 2.35019253067102216238367022296457508887 \cdot 10^{-249}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 7.63604689507411636163851884560784658093 \cdot 10^{-234}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 2.272841479640385108783928267801312364768 \cdot 10^{138}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \left|\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 \left|\frac{\left|im\right|}{\sqrt{re + re}}\right|\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 -7.76046808581119742207882133243897814791 \cdot 10^{47}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

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

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

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

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

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

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

\mathbf{elif}\;re \le 2.272841479640385108783928267801312364768 \cdot 10^{138}:\\
\;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \left|\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 \left|\frac{\left|im\right|}{\sqrt{re + re}}\right|\right)\\

\end{array}
double f(double re, double im) {
        double r27374 = 0.5;
        double r27375 = 2.0;
        double r27376 = re;
        double r27377 = r27376 * r27376;
        double r27378 = im;
        double r27379 = r27378 * r27378;
        double r27380 = r27377 + r27379;
        double r27381 = sqrt(r27380);
        double r27382 = r27381 - r27376;
        double r27383 = r27375 * r27382;
        double r27384 = sqrt(r27383);
        double r27385 = r27374 * r27384;
        return r27385;
}

double f(double re, double im) {
        double r27386 = re;
        double r27387 = -7.760468085811197e+47;
        bool r27388 = r27386 <= r27387;
        double r27389 = 0.5;
        double r27390 = 2.0;
        double r27391 = -2.0;
        double r27392 = r27391 * r27386;
        double r27393 = r27390 * r27392;
        double r27394 = sqrt(r27393);
        double r27395 = r27389 * r27394;
        double r27396 = -5.89967699622497e-185;
        bool r27397 = r27386 <= r27396;
        double r27398 = r27386 * r27386;
        double r27399 = im;
        double r27400 = r27399 * r27399;
        double r27401 = r27398 + r27400;
        double r27402 = sqrt(r27401);
        double r27403 = sqrt(r27402);
        double r27404 = r27403 * r27403;
        double r27405 = r27404 - r27386;
        double r27406 = r27390 * r27405;
        double r27407 = sqrt(r27406);
        double r27408 = r27389 * r27407;
        double r27409 = -2.648694287528554e-263;
        bool r27410 = r27386 <= r27409;
        double r27411 = r27399 - r27386;
        double r27412 = r27390 * r27411;
        double r27413 = sqrt(r27412);
        double r27414 = r27389 * r27413;
        double r27415 = -1.8113892981537156e-301;
        bool r27416 = r27386 <= r27415;
        double r27417 = r27386 + r27399;
        double r27418 = -r27417;
        double r27419 = r27390 * r27418;
        double r27420 = sqrt(r27419);
        double r27421 = r27389 * r27420;
        double r27422 = 2.1106130248162686e-296;
        bool r27423 = r27386 <= r27422;
        double r27424 = 2.350192530671022e-249;
        bool r27425 = r27386 <= r27424;
        double r27426 = 7.636046895074116e-234;
        bool r27427 = r27386 <= r27426;
        double r27428 = 2.272841479640385e+138;
        bool r27429 = r27386 <= r27428;
        double r27430 = sqrt(r27390);
        double r27431 = sqrt(r27430);
        double r27432 = fabs(r27399);
        double r27433 = r27402 + r27386;
        double r27434 = sqrt(r27433);
        double r27435 = r27432 / r27434;
        double r27436 = fabs(r27435);
        double r27437 = r27431 * r27436;
        double r27438 = r27431 * r27437;
        double r27439 = r27389 * r27438;
        double r27440 = r27386 + r27386;
        double r27441 = sqrt(r27440);
        double r27442 = r27432 / r27441;
        double r27443 = fabs(r27442);
        double r27444 = r27430 * r27443;
        double r27445 = r27389 * r27444;
        double r27446 = r27429 ? r27439 : r27445;
        double r27447 = r27427 ? r27414 : r27446;
        double r27448 = r27425 ? r27421 : r27447;
        double r27449 = r27423 ? r27414 : r27448;
        double r27450 = r27416 ? r27421 : r27449;
        double r27451 = r27410 ? r27414 : r27450;
        double r27452 = r27397 ? r27408 : r27451;
        double r27453 = r27388 ? r27395 : r27452;
        return r27453;
}

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 re < -7.760468085811197e+47

    1. Initial program 44.8

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

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

    if -7.760468085811197e+47 < re < -5.89967699622497e-185

    1. Initial program 17.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-sqrt17.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-prod17.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)}\]

    if -5.89967699622497e-185 < re < -2.648694287528554e-263 or -1.8113892981537156e-301 < re < 2.1106130248162686e-296 or 2.350192530671022e-249 < re < 7.636046895074116e-234

    1. Initial program 29.5

      \[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 -2.648694287528554e-263 < re < -1.8113892981537156e-301 or 2.1106130248162686e-296 < re < 2.350192530671022e-249

    1. Initial program 31.0

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

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

      \[\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 34.1

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

    if 7.636046895074116e-234 < re < 2.272841479640385e+138

    1. Initial program 41.8

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

      \[\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 add-sqr-sqrt31.5

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    7. Applied add-sqr-sqrt31.5

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{\sqrt{{im}^{2}} \cdot \sqrt{{im}^{2}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Applied times-frac31.5

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)}\]
    11. Using strategy rm
    12. Applied sqrt-prod29.2

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

      \[\leadsto 0.5 \cdot \left(\sqrt{2} \cdot \color{blue}{\left|\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right|}\right)\]
    14. Using strategy rm
    15. Applied add-sqr-sqrt18.6

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

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

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

    if 2.272841479640385e+138 < re

    1. Initial program 62.9

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

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

      \[\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 add-sqr-sqrt48.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}}\]
    7. Applied add-sqr-sqrt48.9

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{\sqrt{{im}^{2}} \cdot \sqrt{{im}^{2}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    8. Applied times-frac48.9

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \color{blue}{\frac{\left|im\right|}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\right)}\]
    11. Using strategy rm
    12. Applied sqrt-prod48.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.76046808581119742207882133243897814791 \cdot 10^{47}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.899676996224969797473356094348485392996 \cdot 10^{-185}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{elif}\;re \le -2.648694287528554075771729853998939215804 \cdot 10^{-263}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le -1.811389298153715552045406905668607348984 \cdot 10^{-301}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 2.110613024816268606126864582999880133873 \cdot 10^{-296}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 2.35019253067102216238367022296457508887 \cdot 10^{-249}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-\left(re + im\right)\right)}\\ \mathbf{elif}\;re \le 7.63604689507411636163851884560784658093 \cdot 10^{-234}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{elif}\;re \le 2.272841479640385108783928267801312364768 \cdot 10^{138}:\\ \;\;\;\;0.5 \cdot \left(\sqrt{\sqrt{2}} \cdot \left(\sqrt{\sqrt{2}} \cdot \left|\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 \left|\frac{\left|im\right|}{\sqrt{re + re}}\right|\right)\\ \end{array}\]

Reproduce

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