Average Error: 38.5 → 26.5
Time: 19.4s
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 -4.133795376408894095114882696362622107441 \cdot 10^{79}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le -4.294056025198942265014484360305623504037 \cdot 10^{-308}:\\ \;\;\;\;\sqrt{\left(\left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right|}\right) \cdot \sqrt{\sqrt{\left(\sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}}\right) \cdot \sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}}}} - re\right) \cdot 2} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2}\\ \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 -4.133795376408894095114882696362622107441 \cdot 10^{79}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2} \cdot 0.5\\

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

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

\end{array}
double f(double re, double im) {
        double r982115 = 0.5;
        double r982116 = 2.0;
        double r982117 = re;
        double r982118 = r982117 * r982117;
        double r982119 = im;
        double r982120 = r982119 * r982119;
        double r982121 = r982118 + r982120;
        double r982122 = sqrt(r982121);
        double r982123 = r982122 - r982117;
        double r982124 = r982116 * r982123;
        double r982125 = sqrt(r982124);
        double r982126 = r982115 * r982125;
        return r982126;
}

double f(double re, double im) {
        double r982127 = re;
        double r982128 = -4.133795376408894e+79;
        bool r982129 = r982127 <= r982128;
        double r982130 = -2.0;
        double r982131 = r982130 * r982127;
        double r982132 = 2.0;
        double r982133 = r982131 * r982132;
        double r982134 = sqrt(r982133);
        double r982135 = 0.5;
        double r982136 = r982134 * r982135;
        double r982137 = -4.2940560251989423e-308;
        bool r982138 = r982127 <= r982137;
        double r982139 = im;
        double r982140 = r982139 * r982139;
        double r982141 = r982127 * r982127;
        double r982142 = r982140 + r982141;
        double r982143 = sqrt(r982142);
        double r982144 = sqrt(r982143);
        double r982145 = cbrt(r982142);
        double r982146 = fabs(r982145);
        double r982147 = sqrt(r982146);
        double r982148 = r982144 * r982147;
        double r982149 = cbrt(r982145);
        double r982150 = r982149 * r982149;
        double r982151 = r982150 * r982149;
        double r982152 = sqrt(r982151);
        double r982153 = sqrt(r982152);
        double r982154 = r982148 * r982153;
        double r982155 = r982154 - r982127;
        double r982156 = r982155 * r982132;
        double r982157 = sqrt(r982156);
        double r982158 = r982157 * r982135;
        double r982159 = r982127 + r982143;
        double r982160 = r982140 / r982159;
        double r982161 = r982160 * r982132;
        double r982162 = sqrt(r982161);
        double r982163 = r982135 * r982162;
        double r982164 = r982138 ? r982158 : r982163;
        double r982165 = r982129 ? r982136 : r982164;
        return r982165;
}

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 3 regimes
  2. if re < -4.133795376408894e+79

    1. Initial program 49.2

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

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

    if -4.133795376408894e+79 < re < -4.2940560251989423e-308

    1. Initial program 21.4

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

      \[\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-prod21.5

      \[\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)}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt21.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{\color{blue}{\left(\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}\right) \cdot \sqrt[3]{re \cdot re + im \cdot im}}}} - re\right)}\]
    7. Applied sqrt-prod21.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\color{blue}{\sqrt{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt[3]{re \cdot re + im \cdot im}}}} - re\right)}\]
    8. Applied sqrt-prod21.6

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \color{blue}{\left(\sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im} \cdot \sqrt[3]{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt{\sqrt[3]{re \cdot re + im \cdot im}}}\right)} - re\right)}\]
    9. Applied associate-*r*21.6

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

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

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

    if -4.2940560251989423e-308 < re

    1. Initial program 45.4

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

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

      \[\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)}\]
    5. Using strategy rm
    6. Applied flip--46.0

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \frac{\color{blue}{im \cdot im}}{\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} + re}}\]
    8. Simplified35.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -4.133795376408894095114882696362622107441 \cdot 10^{79}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2} \cdot 0.5\\ \mathbf{elif}\;re \le -4.294056025198942265014484360305623504037 \cdot 10^{-308}:\\ \;\;\;\;\sqrt{\left(\left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\left|\sqrt[3]{im \cdot im + re \cdot re}\right|}\right) \cdot \sqrt{\sqrt{\left(\sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}} \cdot \sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}}\right) \cdot \sqrt[3]{\sqrt[3]{im \cdot im + re \cdot re}}}} - re\right) \cdot 2} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2}\\ \end{array}\]

Reproduce

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