Average Error: 37.7 → 30.0
Time: 26.9s
Precision: 64
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -7.266849055505758 \cdot 10^{+89}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.5824244510525257 \cdot 10^{-143}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}}}\right) - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le 2.223433959363476 \cdot 10^{-94}:\\ \;\;\;\;\sqrt{\left(im - re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 6.852760898293699 \cdot 10^{+140}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\left(\sqrt{re} + \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} - \sqrt{re}\right)\right)} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}
\begin{array}{l}
\mathbf{if}\;re \le -7.266849055505758 \cdot 10^{+89}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

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

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

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

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
double f(double re, double im) {
        double r994136 = 0.5;
        double r994137 = 2.0;
        double r994138 = re;
        double r994139 = r994138 * r994138;
        double r994140 = im;
        double r994141 = r994140 * r994140;
        double r994142 = r994139 + r994141;
        double r994143 = sqrt(r994142);
        double r994144 = r994143 - r994138;
        double r994145 = r994137 * r994144;
        double r994146 = sqrt(r994145);
        double r994147 = r994136 * r994146;
        return r994147;
}

double f(double re, double im) {
        double r994148 = re;
        double r994149 = -7.266849055505758e+89;
        bool r994150 = r994148 <= r994149;
        double r994151 = -2.0;
        double r994152 = r994151 * r994148;
        double r994153 = 2.0;
        double r994154 = r994152 * r994153;
        double r994155 = sqrt(r994154);
        double r994156 = 0.5;
        double r994157 = r994155 * r994156;
        double r994158 = 3.5824244510525257e-143;
        bool r994159 = r994148 <= r994158;
        double r994160 = im;
        double r994161 = r994160 * r994160;
        double r994162 = r994148 * r994148;
        double r994163 = r994161 + r994162;
        double r994164 = cbrt(r994163);
        double r994165 = sqrt(r994164);
        double r994166 = sqrt(r994165);
        double r994167 = sqrt(r994163);
        double r994168 = sqrt(r994167);
        double r994169 = r994164 * r994164;
        double r994170 = sqrt(r994169);
        double r994171 = sqrt(r994170);
        double r994172 = r994168 * r994171;
        double r994173 = r994166 * r994172;
        double r994174 = r994173 - r994148;
        double r994175 = r994153 * r994174;
        double r994176 = sqrt(r994175);
        double r994177 = r994176 * r994156;
        double r994178 = 2.223433959363476e-94;
        bool r994179 = r994148 <= r994178;
        double r994180 = r994160 - r994148;
        double r994181 = r994180 * r994153;
        double r994182 = sqrt(r994181);
        double r994183 = r994182 * r994156;
        double r994184 = 6.852760898293699e+140;
        bool r994185 = r994148 <= r994184;
        double r994186 = sqrt(r994148);
        double r994187 = r994186 + r994168;
        double r994188 = r994168 - r994186;
        double r994189 = r994187 * r994188;
        double r994190 = r994153 * r994189;
        double r994191 = sqrt(r994190);
        double r994192 = r994191 * r994156;
        double r994193 = 0.0;
        double r994194 = r994185 ? r994192 : r994193;
        double r994195 = r994179 ? r994183 : r994194;
        double r994196 = r994159 ? r994177 : r994195;
        double r994197 = r994150 ? r994157 : r994196;
        return r994197;
}

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 5 regimes
  2. if re < -7.266849055505758e+89

    1. Initial program 47.2

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

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

    if -7.266849055505758e+89 < re < 3.5824244510525257e-143

    1. Initial program 23.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-sqr-sqrt23.8

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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)}\]
    6. Applied sqrt-prod23.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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)}\]
    7. Applied sqrt-prod23.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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)}\]
    8. Applied associate-*r*23.8

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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)}\]

    if 3.5824244510525257e-143 < re < 2.223433959363476e-94

    1. Initial program 33.3

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

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

    if 2.223433959363476e-94 < re < 6.852760898293699e+140

    1. Initial program 46.4

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

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - \color{blue}{\sqrt{re} \cdot \sqrt{re}}\right)}\]
    6. Applied difference-of-squares46.4

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

    if 6.852760898293699e+140 < re

    1. Initial program 61.9

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \cdot \color{blue}{0}}\]
  3. Recombined 5 regimes into one program.
  4. Final simplification30.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -7.266849055505758 \cdot 10^{+89}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 3.5824244510525257 \cdot 10^{-143}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re}}} \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} \cdot \sqrt{\sqrt{\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}}}\right) - re\right)} \cdot 0.5\\ \mathbf{elif}\;re \le 2.223433959363476 \cdot 10^{-94}:\\ \;\;\;\;\sqrt{\left(im - re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 6.852760898293699 \cdot 10^{+140}:\\ \;\;\;\;\sqrt{2.0 \cdot \left(\left(\sqrt{re} + \sqrt{\sqrt{im \cdot im + re \cdot re}}\right) \cdot \left(\sqrt{\sqrt{im \cdot im + re \cdot re}} - \sqrt{re}\right)\right)} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

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