Average Error: 38.2 → 30.9
Time: 17.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.587387956107418 \cdot 10^{-158}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \mathbf{elif}\;im \le -1.6983177429051942 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 5.029830627881142 \cdot 10^{-264}:\\ \;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;im \le 3.9853394263122405 \cdot 10^{-151}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 8.029859693979724 \cdot 10^{-24}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \mathbf{elif}\;im \le 218.57910692591958:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 1.859372996802564 \cdot 10^{+44}:\\ \;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\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.587387956107418 \cdot 10^{-158}:\\
\;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\

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

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

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

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

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

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

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

\end{array}
double f(double re, double im) {
        double r411279 = 0.5;
        double r411280 = 2.0;
        double r411281 = re;
        double r411282 = r411281 * r411281;
        double r411283 = im;
        double r411284 = r411283 * r411283;
        double r411285 = r411282 + r411284;
        double r411286 = sqrt(r411285);
        double r411287 = r411286 - r411281;
        double r411288 = r411280 * r411287;
        double r411289 = sqrt(r411288);
        double r411290 = r411279 * r411289;
        return r411290;
}

double f(double re, double im) {
        double r411291 = im;
        double r411292 = -2.587387956107418e-158;
        bool r411293 = r411291 <= r411292;
        double r411294 = 0.5;
        double r411295 = 2.0;
        double r411296 = r411291 * r411291;
        double r411297 = r411295 * r411296;
        double r411298 = sqrt(r411297);
        double r411299 = re;
        double r411300 = r411299 * r411299;
        double r411301 = r411296 + r411300;
        double r411302 = sqrt(r411301);
        double r411303 = r411302 + r411299;
        double r411304 = sqrt(r411303);
        double r411305 = r411298 / r411304;
        double r411306 = r411294 * r411305;
        double r411307 = -1.6983177429051942e-252;
        bool r411308 = r411291 <= r411307;
        double r411309 = -2.0;
        double r411310 = r411309 * r411299;
        double r411311 = r411310 * r411295;
        double r411312 = sqrt(r411311);
        double r411313 = r411294 * r411312;
        double r411314 = 5.029830627881142e-264;
        bool r411315 = r411291 <= r411314;
        double r411316 = r411296 / r411303;
        double r411317 = r411316 * r411295;
        double r411318 = sqrt(r411317);
        double r411319 = r411318 * r411294;
        double r411320 = 3.9853394263122405e-151;
        bool r411321 = r411291 <= r411320;
        double r411322 = 8.029859693979724e-24;
        bool r411323 = r411291 <= r411322;
        double r411324 = 218.57910692591958;
        bool r411325 = r411291 <= r411324;
        double r411326 = 1.859372996802564e+44;
        bool r411327 = r411291 <= r411326;
        double r411328 = r411291 - r411299;
        double r411329 = r411295 * r411328;
        double r411330 = sqrt(r411329);
        double r411331 = r411294 * r411330;
        double r411332 = r411327 ? r411319 : r411331;
        double r411333 = r411325 ? r411313 : r411332;
        double r411334 = r411323 ? r411306 : r411333;
        double r411335 = r411321 ? r411313 : r411334;
        double r411336 = r411315 ? r411319 : r411335;
        double r411337 = r411308 ? r411313 : r411336;
        double r411338 = r411293 ? r411306 : r411337;
        return r411338;
}

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 4 regimes
  2. if im < -2.587387956107418e-158 or 3.9853394263122405e-151 < im < 8.029859693979724e-24

    1. Initial program 34.4

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--40.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. Applied associate-*r/40.9

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

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

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

    if -2.587387956107418e-158 < im < -1.6983177429051942e-252 or 5.029830627881142e-264 < im < 3.9853394263122405e-151 or 8.029859693979724e-24 < im < 218.57910692591958

    1. Initial program 43.5

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt44.9

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}} - re\right)}\]
    6. Taylor expanded around -inf 37.3

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

    if -1.6983177429051942e-252 < im < 5.029830627881142e-264 or 218.57910692591958 < im < 1.859372996802564e+44

    1. Initial program 36.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-exp-log41.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt41.5

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\color{blue}{\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}} - re\right)}\]
    6. Using strategy rm
    7. Applied flip--50.4

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{\frac{\left(\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \left(\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) - re \cdot re}{\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} + re}}}\]
    8. Simplified41.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \frac{\color{blue}{im \cdot im + 0}}{\left(\sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}}\right) \cdot \sqrt[3]{e^{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} + re}}\]
    9. Simplified41.3

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

    if 1.859372996802564e+44 < im

    1. Initial program 43.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -2.587387956107418 \cdot 10^{-158}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \mathbf{elif}\;im \le -1.6983177429051942 \cdot 10^{-252}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 5.029830627881142 \cdot 10^{-264}:\\ \;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;im \le 3.9853394263122405 \cdot 10^{-151}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 8.029859693979724 \cdot 10^{-24}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{2.0 \cdot \left(im \cdot im\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \mathbf{elif}\;im \le 218.57910692591958:\\ \;\;\;\;0.5 \cdot \sqrt{\left(-2 \cdot re\right) \cdot 2.0}\\ \mathbf{elif}\;im \le 1.859372996802564 \cdot 10^{+44}:\\ \;\;\;\;\sqrt{\frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} + re} \cdot 2.0} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(im - re\right)}\\ \end{array}\]

Reproduce

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