Average Error: 37.6 → 22.6
Time: 12.2s
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 -3.427084990917964108413212422566201425884 \cdot 10^{78}:\\ \;\;\;\;\sqrt{\left(re - im\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;im \le -6.880635684369791890266505163497341664663 \cdot 10^{-159}:\\ \;\;\;\;\sqrt{2 \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) + re\right)} \cdot 0.5\\ \mathbf{elif}\;im \le 9.707826590282529498928144182059884326441 \cdot 10^{-159}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{elif}\;im \le 1.186844868934467533231645340789520602325 \cdot 10^{-110}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{\left(im \cdot im\right) \cdot 2}}{\sqrt{\sqrt{im \cdot im + re \cdot re} - re}}\\ \mathbf{elif}\;im \le 8.35344993113947417274173199718646800664 \cdot 10^{-93}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{elif}\;im \le 9.216308869239449327917900245724612540155 \cdot 10^{-10}:\\ \;\;\;\;\sqrt{2 \cdot \frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} - re}} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2 \cdot \left(re + im\right)} \cdot 0.5\\ \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 -3.427084990917964108413212422566201425884 \cdot 10^{78}:\\
\;\;\;\;\sqrt{\left(re - im\right) \cdot 2} \cdot 0.5\\

\mathbf{elif}\;im \le -6.880635684369791890266505163497341664663 \cdot 10^{-159}:\\
\;\;\;\;\sqrt{2 \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) + re\right)} \cdot 0.5\\

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

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

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

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

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

\end{array}
double f(double re, double im) {
        double r98173 = 0.5;
        double r98174 = 2.0;
        double r98175 = re;
        double r98176 = r98175 * r98175;
        double r98177 = im;
        double r98178 = r98177 * r98177;
        double r98179 = r98176 + r98178;
        double r98180 = sqrt(r98179);
        double r98181 = r98180 + r98175;
        double r98182 = r98174 * r98181;
        double r98183 = sqrt(r98182);
        double r98184 = r98173 * r98183;
        return r98184;
}

double f(double re, double im) {
        double r98185 = im;
        double r98186 = -3.427084990917964e+78;
        bool r98187 = r98185 <= r98186;
        double r98188 = re;
        double r98189 = r98188 - r98185;
        double r98190 = 2.0;
        double r98191 = r98189 * r98190;
        double r98192 = sqrt(r98191);
        double r98193 = 0.5;
        double r98194 = r98192 * r98193;
        double r98195 = -6.880635684369792e-159;
        bool r98196 = r98185 <= r98195;
        double r98197 = r98185 * r98185;
        double r98198 = r98188 * r98188;
        double r98199 = r98197 + r98198;
        double r98200 = sqrt(r98199);
        double r98201 = cbrt(r98200);
        double r98202 = r98201 * r98201;
        double r98203 = r98201 * r98202;
        double r98204 = r98203 + r98188;
        double r98205 = r98190 * r98204;
        double r98206 = sqrt(r98205);
        double r98207 = r98206 * r98193;
        double r98208 = 9.70782659028253e-159;
        bool r98209 = r98185 <= r98208;
        double r98210 = r98188 + r98188;
        double r98211 = r98190 * r98210;
        double r98212 = sqrt(r98211);
        double r98213 = r98193 * r98212;
        double r98214 = 1.1868448689344675e-110;
        bool r98215 = r98185 <= r98214;
        double r98216 = r98197 * r98190;
        double r98217 = sqrt(r98216);
        double r98218 = r98200 - r98188;
        double r98219 = sqrt(r98218);
        double r98220 = r98217 / r98219;
        double r98221 = r98193 * r98220;
        double r98222 = 8.353449931139474e-93;
        bool r98223 = r98185 <= r98222;
        double r98224 = 9.216308869239449e-10;
        bool r98225 = r98185 <= r98224;
        double r98226 = r98197 / r98218;
        double r98227 = r98190 * r98226;
        double r98228 = sqrt(r98227);
        double r98229 = r98228 * r98193;
        double r98230 = r98188 + r98185;
        double r98231 = r98190 * r98230;
        double r98232 = sqrt(r98231);
        double r98233 = r98232 * r98193;
        double r98234 = r98225 ? r98229 : r98233;
        double r98235 = r98223 ? r98213 : r98234;
        double r98236 = r98215 ? r98221 : r98235;
        double r98237 = r98209 ? r98213 : r98236;
        double r98238 = r98196 ? r98207 : r98237;
        double r98239 = r98187 ? r98194 : r98238;
        return r98239;
}

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original37.6
Target32.7
Herbie22.6
\[\begin{array}{l} \mathbf{if}\;re \lt 0.0:\\ \;\;\;\;0.5 \cdot \left(\sqrt{2} \cdot \sqrt{\frac{im \cdot im}{\sqrt{re \cdot re + im \cdot im} - re}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} + re\right)}\\ \end{array}\]

Derivation

  1. Split input into 6 regimes
  2. if im < -3.427084990917964e+78

    1. Initial program 47.4

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Simplified47.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\]
    5. Simplified47.6

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

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

    if -3.427084990917964e+78 < im < -6.880635684369792e-159

    1. Initial program 25.2

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}\right) \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}}} + re\right)}\]
    4. Simplified25.7

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right)} \cdot \sqrt[3]{\sqrt{re \cdot re + im \cdot im}} + re\right)}\]
    5. Simplified25.7

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

    if -6.880635684369792e-159 < im < 9.70782659028253e-159 or 1.1868448689344675e-110 < im < 8.353449931139474e-93

    1. Initial program 42.3

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

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

    if 9.70782659028253e-159 < im < 1.1868448689344675e-110

    1. Initial program 29.1

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

      \[\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. Applied associate-*r/43.5

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2 \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-div43.6

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2 \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. Simplified29.6

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} - re}}\]
    7. Simplified29.6

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

    if 8.353449931139474e-93 < im < 9.216308869239449e-10

    1. Initial program 24.0

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im + 0}}{\sqrt{re \cdot re + im \cdot im} - re}}\]
    5. Simplified25.1

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

    if 9.216308869239449e-10 < im

    1. Initial program 39.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -3.427084990917964108413212422566201425884 \cdot 10^{78}:\\ \;\;\;\;\sqrt{\left(re - im\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;im \le -6.880635684369791890266505163497341664663 \cdot 10^{-159}:\\ \;\;\;\;\sqrt{2 \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \left(\sqrt[3]{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt{im \cdot im + re \cdot re}}\right) + re\right)} \cdot 0.5\\ \mathbf{elif}\;im \le 9.707826590282529498928144182059884326441 \cdot 10^{-159}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{elif}\;im \le 1.186844868934467533231645340789520602325 \cdot 10^{-110}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{\left(im \cdot im\right) \cdot 2}}{\sqrt{\sqrt{im \cdot im + re \cdot re} - re}}\\ \mathbf{elif}\;im \le 8.35344993113947417274173199718646800664 \cdot 10^{-93}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(re + re\right)}\\ \mathbf{elif}\;im \le 9.216308869239449327917900245724612540155 \cdot 10^{-10}:\\ \;\;\;\;\sqrt{2 \cdot \frac{im \cdot im}{\sqrt{im \cdot im + re \cdot re} - re}} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;\sqrt{2 \cdot \left(re + im\right)} \cdot 0.5\\ \end{array}\]

Reproduce

herbie shell --seed 2019194 
(FPCore (re im)
  :name "math.sqrt on complex, real part"

  :herbie-target
  (if (< re 0.0) (* 0.5 (* (sqrt 2.0) (sqrt (/ (* im im) (- (sqrt (+ (* re re) (* im im))) re))))) (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))

  (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))