Average Error: 37.4 → 24.1
Time: 12.3s
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 -4.3633837281117996 \cdot 10^{+105}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-\left(re + im\right)\right) \cdot 2.0}\\ \mathbf{elif}\;im \le -3.3981436272511237 \cdot 10^{-181}:\\ \;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le -1.330280636298453 \cdot 10^{-261}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 2.9021426245006 \cdot 10^{-309}:\\ \;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le 1.6408918126130706 \cdot 10^{-203}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 6.1294351368168115 \cdot 10^{-31}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le 1523.943947555021:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 1.1910552598904152 \cdot 10^{+142}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \frac{im}{\frac{re + \sqrt{im \cdot im + re \cdot re}}{im}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(im - re\right)} \cdot 0.5\\ \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 -4.3633837281117996 \cdot 10^{+105}:\\
\;\;\;\;0.5 \cdot \sqrt{\left(-\left(re + im\right)\right) \cdot 2.0}\\

\mathbf{elif}\;im \le -3.3981436272511237 \cdot 10^{-181}:\\
\;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\

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

\mathbf{elif}\;im \le 2.9021426245006 \cdot 10^{-309}:\\
\;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\

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

\mathbf{elif}\;im \le 6.1294351368168115 \cdot 10^{-31}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\

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

\mathbf{elif}\;im \le 1.1910552598904152 \cdot 10^{+142}:\\
\;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \frac{im}{\frac{re + \sqrt{im \cdot im + re \cdot re}}{im}}}\\

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

\end{array}
double f(double re, double im) {
        double r292273 = 0.5;
        double r292274 = 2.0;
        double r292275 = re;
        double r292276 = r292275 * r292275;
        double r292277 = im;
        double r292278 = r292277 * r292277;
        double r292279 = r292276 + r292278;
        double r292280 = sqrt(r292279);
        double r292281 = r292280 - r292275;
        double r292282 = r292274 * r292281;
        double r292283 = sqrt(r292282);
        double r292284 = r292273 * r292283;
        return r292284;
}

double f(double re, double im) {
        double r292285 = im;
        double r292286 = -4.3633837281117996e+105;
        bool r292287 = r292285 <= r292286;
        double r292288 = 0.5;
        double r292289 = re;
        double r292290 = r292289 + r292285;
        double r292291 = -r292290;
        double r292292 = 2.0;
        double r292293 = r292291 * r292292;
        double r292294 = sqrt(r292293);
        double r292295 = r292288 * r292294;
        double r292296 = -3.3981436272511237e-181;
        bool r292297 = r292285 <= r292296;
        double r292298 = sqrt(r292292);
        double r292299 = r292298 * r292285;
        double r292300 = r292285 * r292285;
        double r292301 = r292289 * r292289;
        double r292302 = r292300 + r292301;
        double r292303 = sqrt(r292302);
        double r292304 = r292289 + r292303;
        double r292305 = sqrt(r292304);
        double r292306 = r292299 / r292305;
        double r292307 = r292288 * r292306;
        double r292308 = -r292307;
        double r292309 = -1.330280636298453e-261;
        bool r292310 = r292285 <= r292309;
        double r292311 = -2.0;
        double r292312 = r292311 * r292289;
        double r292313 = r292312 * r292292;
        double r292314 = sqrt(r292313);
        double r292315 = r292288 * r292314;
        double r292316 = 2.9021426245006e-309;
        bool r292317 = r292285 <= r292316;
        double r292318 = 1.6408918126130706e-203;
        bool r292319 = r292285 <= r292318;
        double r292320 = 6.1294351368168115e-31;
        bool r292321 = r292285 <= r292320;
        double r292322 = 1523.943947555021;
        bool r292323 = r292285 <= r292322;
        double r292324 = 1.1910552598904152e+142;
        bool r292325 = r292285 <= r292324;
        double r292326 = r292304 / r292285;
        double r292327 = r292285 / r292326;
        double r292328 = r292292 * r292327;
        double r292329 = sqrt(r292328);
        double r292330 = r292288 * r292329;
        double r292331 = r292285 - r292289;
        double r292332 = r292292 * r292331;
        double r292333 = sqrt(r292332);
        double r292334 = r292333 * r292288;
        double r292335 = r292325 ? r292330 : r292334;
        double r292336 = r292323 ? r292315 : r292335;
        double r292337 = r292321 ? r292307 : r292336;
        double r292338 = r292319 ? r292315 : r292337;
        double r292339 = r292317 ? r292308 : r292338;
        double r292340 = r292310 ? r292315 : r292339;
        double r292341 = r292297 ? r292308 : r292340;
        double r292342 = r292287 ? r292295 : r292341;
        return r292342;
}

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 < -4.3633837281117996e+105

    1. Initial program 51.1

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

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

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

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

    if -4.3633837281117996e+105 < im < -3.3981436272511237e-181 or -1.330280636298453e-261 < im < 2.9021426245006e-309

    1. Initial program 27.7

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

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied associate-*r/31.8

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left(im \cdot im\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Applied sqrt-div31.3

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

      \[\leadsto 0.5 \cdot \frac{\color{blue}{-1 \cdot \left(\sqrt{2.0} \cdot im\right)}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    9. Simplified28.6

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

    if -3.3981436272511237e-181 < im < -1.330280636298453e-261 or 2.9021426245006e-309 < im < 1.6408918126130706e-203 or 6.1294351368168115e-31 < im < 1523.943947555021

    1. Initial program 40.6

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

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

    if 1.6408918126130706e-203 < im < 6.1294351368168115e-31

    1. Initial program 31.5

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

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied associate-*r/38.7

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \cdot \left(im \cdot im\right)}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Applied sqrt-div37.3

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

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

    if 1523.943947555021 < im < 1.1910552598904152e+142

    1. Initial program 20.0

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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. Simplified21.3

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{re \cdot re + im \cdot im} + re}}\]
    5. Using strategy rm
    6. Applied associate-/l*21.3

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

    if 1.1910552598904152e+142 < im

    1. Initial program 58.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -4.3633837281117996 \cdot 10^{+105}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-\left(re + im\right)\right) \cdot 2.0}\\ \mathbf{elif}\;im \le -3.3981436272511237 \cdot 10^{-181}:\\ \;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le -1.330280636298453 \cdot 10^{-261}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 2.9021426245006 \cdot 10^{-309}:\\ \;\;\;\;-0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le 1.6408918126130706 \cdot 10^{-203}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 6.1294351368168115 \cdot 10^{-31}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0} \cdot im}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}}\\ \mathbf{elif}\;im \le 1523.943947555021:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 1.1910552598904152 \cdot 10^{+142}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \frac{im}{\frac{re + \sqrt{im \cdot im + re \cdot re}}{im}}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(im - re\right)} \cdot 0.5\\ \end{array}\]

Reproduce

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