Average Error: 39.0 → 27.2
Time: 8.6s
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.2696195727379345 \cdot 10^{139}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\ \mathbf{elif}\;re \le -3.87971466314923503 \cdot 10^{-161}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{1} \cdot \sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le 3.06622232904101925 \cdot 10^{-255}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{{im}^{2} \cdot 2}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \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.2696195727379345 \cdot 10^{139}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\

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

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

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

\end{array}
double f(double re, double im) {
        double r17045 = 0.5;
        double r17046 = 2.0;
        double r17047 = re;
        double r17048 = r17047 * r17047;
        double r17049 = im;
        double r17050 = r17049 * r17049;
        double r17051 = r17048 + r17050;
        double r17052 = sqrt(r17051);
        double r17053 = r17052 - r17047;
        double r17054 = r17046 * r17053;
        double r17055 = sqrt(r17054);
        double r17056 = r17045 * r17055;
        return r17056;
}

double f(double re, double im) {
        double r17057 = re;
        double r17058 = -4.2696195727379345e+139;
        bool r17059 = r17057 <= r17058;
        double r17060 = 0.5;
        double r17061 = 2.0;
        double r17062 = -r17057;
        double r17063 = r17062 - r17057;
        double r17064 = r17061 * r17063;
        double r17065 = sqrt(r17064);
        double r17066 = r17060 * r17065;
        double r17067 = -3.879714663149235e-161;
        bool r17068 = r17057 <= r17067;
        double r17069 = 1.0;
        double r17070 = sqrt(r17069);
        double r17071 = r17057 * r17057;
        double r17072 = im;
        double r17073 = r17072 * r17072;
        double r17074 = r17071 + r17073;
        double r17075 = sqrt(r17074);
        double r17076 = r17070 * r17075;
        double r17077 = r17076 - r17057;
        double r17078 = r17061 * r17077;
        double r17079 = sqrt(r17078);
        double r17080 = r17060 * r17079;
        double r17081 = 3.0662223290410192e-255;
        bool r17082 = r17057 <= r17081;
        double r17083 = r17072 - r17057;
        double r17084 = r17061 * r17083;
        double r17085 = sqrt(r17084);
        double r17086 = r17060 * r17085;
        double r17087 = 2.0;
        double r17088 = pow(r17072, r17087);
        double r17089 = r17088 * r17061;
        double r17090 = sqrt(r17089);
        double r17091 = r17075 + r17057;
        double r17092 = sqrt(r17091);
        double r17093 = r17090 / r17092;
        double r17094 = r17060 * r17093;
        double r17095 = r17082 ? r17086 : r17094;
        double r17096 = r17068 ? r17080 : r17095;
        double r17097 = r17059 ? r17066 : r17096;
        return r17097;
}

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 re < -4.2696195727379345e+139

    1. Initial program 59.5

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

      \[\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-prod59.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. Taylor expanded around -inf 8.4

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{-1 \cdot re} - re\right)}\]
    6. Simplified8.4

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

    if -4.2696195727379345e+139 < re < -3.879714663149235e-161

    1. Initial program 16.9

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

      \[\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-prod17.0

      \[\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 *-un-lft-identity17.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\color{blue}{1 \cdot \sqrt{re \cdot re + im \cdot im}}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\]
    7. Applied sqrt-prod17.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\left(\sqrt{1} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\]
    8. Applied associate-*l*17.0

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{\sqrt{1} \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}}\right)} - re\right)}\]
    9. Simplified16.9

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

    if -3.879714663149235e-161 < re < 3.0662223290410192e-255

    1. Initial program 31.3

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

      \[\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-prod31.4

      \[\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-sqr-sqrt31.4

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

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

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

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

      \[\leadsto 0.5 \cdot \sqrt{2 \cdot \left(\color{blue}{{\left(\sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}}\right)}^{3}} \cdot \sqrt{\sqrt{\sqrt{re \cdot re + im \cdot im}}} - re\right)}\]
    11. Taylor expanded around 0 33.3

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

    if 3.0662223290410192e-255 < re

    1. Initial program 47.7

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

      \[\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/47.6

      \[\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-div47.7

      \[\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. Simplified36.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -4.2696195727379345 \cdot 10^{139}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - re\right)}\\ \mathbf{elif}\;re \le -3.87971466314923503 \cdot 10^{-161}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{1} \cdot \sqrt{re \cdot re + im \cdot im} - re\right)}\\ \mathbf{elif}\;re \le 3.06622232904101925 \cdot 10^{-255}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(im - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{{im}^{2} \cdot 2}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020047 
(FPCore (re im)
  :name "math.sqrt on complex, imaginary part, im greater than 0 branch"
  :precision binary64
  (* 0.5 (sqrt (* 2 (- (sqrt (+ (* re re) (* im im))) re)))))