Average Error: 38.0 → 26.2
Time: 15.5s
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 -2.47409571178928762 \cdot 10^{117}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.28965875824807 \cdot 10^{-310}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\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 -2.47409571178928762 \cdot 10^{117}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\

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

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

\end{array}
double f(double re, double im) {
        double r23866 = 0.5;
        double r23867 = 2.0;
        double r23868 = re;
        double r23869 = r23868 * r23868;
        double r23870 = im;
        double r23871 = r23870 * r23870;
        double r23872 = r23869 + r23871;
        double r23873 = sqrt(r23872);
        double r23874 = r23873 - r23868;
        double r23875 = r23867 * r23874;
        double r23876 = sqrt(r23875);
        double r23877 = r23866 * r23876;
        return r23877;
}

double f(double re, double im) {
        double r23878 = re;
        double r23879 = -2.4740957117892876e+117;
        bool r23880 = r23878 <= r23879;
        double r23881 = 0.5;
        double r23882 = 2.0;
        double r23883 = -2.0;
        double r23884 = r23883 * r23878;
        double r23885 = r23882 * r23884;
        double r23886 = sqrt(r23885);
        double r23887 = r23881 * r23886;
        double r23888 = -5.28965875824807e-310;
        bool r23889 = r23878 <= r23888;
        double r23890 = r23878 * r23878;
        double r23891 = im;
        double r23892 = r23891 * r23891;
        double r23893 = r23890 + r23892;
        double r23894 = sqrt(r23893);
        double r23895 = sqrt(r23894);
        double r23896 = r23895 * r23895;
        double r23897 = r23896 - r23878;
        double r23898 = r23882 * r23897;
        double r23899 = sqrt(r23898);
        double r23900 = r23881 * r23899;
        double r23901 = 2.0;
        double r23902 = pow(r23891, r23901);
        double r23903 = r23894 + r23878;
        double r23904 = r23902 / r23903;
        double r23905 = r23882 * r23904;
        double r23906 = sqrt(r23905);
        double r23907 = r23881 * r23906;
        double r23908 = r23889 ? r23900 : r23907;
        double r23909 = r23880 ? r23887 : r23908;
        return r23909;
}

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 < -2.4740957117892876e+117

    1. Initial program 55.4

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

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

    if -2.4740957117892876e+117 < re < -5.28965875824807e-310

    1. Initial program 20.7

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

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

      \[\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)}\]

    if -5.28965875824807e-310 < re

    1. Initial program 44.6

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Using strategy rm
    3. Applied flip--44.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. Simplified35.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -2.47409571178928762 \cdot 10^{117}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(-2 \cdot re\right)}\\ \mathbf{elif}\;re \le -5.28965875824807 \cdot 10^{-310}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\sqrt{\sqrt{re \cdot re + im \cdot im}} \cdot \sqrt{\sqrt{re \cdot re + im \cdot im}} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \frac{{im}^{2}}{\sqrt{re \cdot re + im \cdot im} + re}}\\ \end{array}\]

Reproduce

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