Average Error: 38.7 → 25.0
Time: 12.1s
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 -8.327291769824926841401075351927810391987 \cdot 10^{77}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - im\right)}\\ \mathbf{elif}\;im \le -3.26719083601556541364004422304594603907 \cdot 10^{-65}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2}\\ \mathbf{elif}\;im \le 7.975663580255671195689526281654404577475 \cdot 10^{-75}:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im - re\right) \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}\;im \le -8.327291769824926841401075351927810391987 \cdot 10^{77}:\\
\;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - im\right)}\\

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

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

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

\end{array}
double f(double re, double im) {
        double r24793 = 0.5;
        double r24794 = 2.0;
        double r24795 = re;
        double r24796 = r24795 * r24795;
        double r24797 = im;
        double r24798 = r24797 * r24797;
        double r24799 = r24796 + r24798;
        double r24800 = sqrt(r24799);
        double r24801 = r24800 - r24795;
        double r24802 = r24794 * r24801;
        double r24803 = sqrt(r24802);
        double r24804 = r24793 * r24803;
        return r24804;
}

double f(double re, double im) {
        double r24805 = im;
        double r24806 = -8.327291769824927e+77;
        bool r24807 = r24805 <= r24806;
        double r24808 = 0.5;
        double r24809 = 2.0;
        double r24810 = re;
        double r24811 = -r24810;
        double r24812 = r24811 - r24805;
        double r24813 = r24809 * r24812;
        double r24814 = sqrt(r24813);
        double r24815 = r24808 * r24814;
        double r24816 = -3.2671908360155654e-65;
        bool r24817 = r24805 <= r24816;
        double r24818 = r24805 * r24805;
        double r24819 = r24810 * r24810;
        double r24820 = r24818 + r24819;
        double r24821 = sqrt(r24820);
        double r24822 = r24810 + r24821;
        double r24823 = r24818 / r24822;
        double r24824 = r24823 * r24809;
        double r24825 = sqrt(r24824);
        double r24826 = r24808 * r24825;
        double r24827 = 7.975663580255671e-75;
        bool r24828 = r24805 <= r24827;
        double r24829 = r24811 - r24810;
        double r24830 = r24829 * r24809;
        double r24831 = sqrt(r24830);
        double r24832 = r24831 * r24808;
        double r24833 = r24805 - r24810;
        double r24834 = r24833 * r24809;
        double r24835 = sqrt(r24834);
        double r24836 = r24808 * r24835;
        double r24837 = r24828 ? r24832 : r24836;
        double r24838 = r24817 ? r24826 : r24837;
        double r24839 = r24807 ? r24815 : r24838;
        return r24839;
}

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 im < -8.327291769824927e+77

    1. Initial program 49.0

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified49.0

      \[\leadsto \color{blue}{0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2}}\]
    3. Using strategy rm
    4. Applied add-exp-log50.1

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{\color{blue}{e^{\log \left(re \cdot re + im \cdot im\right)}}} - re\right) \cdot 2}\]
    5. Simplified50.1

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

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

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

    if -8.327291769824927e+77 < im < -3.2671908360155654e-65

    1. Initial program 22.8

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified22.8

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

      \[\leadsto 0.5 \cdot \sqrt{\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}} \cdot 2}\]
    5. Simplified22.3

      \[\leadsto 0.5 \cdot \sqrt{\frac{\color{blue}{im \cdot im + 0}}{\sqrt{re \cdot re + im \cdot im} + re} \cdot 2}\]
    6. Simplified22.3

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

    if -3.2671908360155654e-65 < im < 7.975663580255671e-75

    1. Initial program 39.0

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified39.0

      \[\leadsto \color{blue}{0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2}}\]
    3. Using strategy rm
    4. Applied add-exp-log41.7

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{\color{blue}{e^{\log \left(re \cdot re + im \cdot im\right)}}} - re\right) \cdot 2}\]
    5. Simplified41.7

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{e^{\color{blue}{\log \left(im \cdot im + re \cdot re\right)}}} - re\right) \cdot 2}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt41.8

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{e^{\log \color{blue}{\left(\left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right) \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)}}} - re\right) \cdot 2}\]
    8. Applied log-prod41.9

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{e^{\color{blue}{\log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right) + \log \left(\sqrt[3]{im \cdot im + re \cdot re}\right)}}} - re\right) \cdot 2}\]
    9. Applied exp-sum41.7

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{\color{blue}{e^{\log \left(\sqrt[3]{im \cdot im + re \cdot re} \cdot \sqrt[3]{im \cdot im + re \cdot re}\right)} \cdot e^{\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right)}}} - re\right) \cdot 2}\]
    10. Simplified41.7

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{\color{blue}{e^{2 \cdot \log \left(\sqrt[3]{{re}^{2} + {im}^{2}}\right)}} \cdot e^{\log \left(\sqrt[3]{im \cdot im + re \cdot re}\right)}} - re\right) \cdot 2}\]
    11. Simplified41.6

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{e^{2 \cdot \log \left(\sqrt[3]{{re}^{2} + {im}^{2}}\right)} \cdot \color{blue}{\sqrt[3]{{re}^{2} + {im}^{2}}}} - re\right) \cdot 2}\]
    12. Using strategy rm
    13. Applied add-exp-log41.8

      \[\leadsto 0.5 \cdot \sqrt{\left(\color{blue}{e^{\log \left(\sqrt{e^{2 \cdot \log \left(\sqrt[3]{{re}^{2} + {im}^{2}}\right)} \cdot \sqrt[3]{{re}^{2} + {im}^{2}}}\right)}} - re\right) \cdot 2}\]
    14. Simplified41.7

      \[\leadsto 0.5 \cdot \sqrt{\left(e^{\color{blue}{\log \left(\sqrt{re \cdot re + im \cdot im}\right)}} - re\right) \cdot 2}\]
    15. Taylor expanded around -inf 38.1

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

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

    if 7.975663580255671e-75 < im

    1. Initial program 38.4

      \[0.5 \cdot \sqrt{2 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Simplified38.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;im \le -8.327291769824926841401075351927810391987 \cdot 10^{77}:\\ \;\;\;\;0.5 \cdot \sqrt{2 \cdot \left(\left(-re\right) - im\right)}\\ \mathbf{elif}\;im \le -3.26719083601556541364004422304594603907 \cdot 10^{-65}:\\ \;\;\;\;0.5 \cdot \sqrt{\frac{im \cdot im}{re + \sqrt{im \cdot im + re \cdot re}} \cdot 2}\\ \mathbf{elif}\;im \le 7.975663580255671195689526281654404577475 \cdot 10^{-75}:\\ \;\;\;\;\sqrt{\left(\left(-re\right) - re\right) \cdot 2} \cdot 0.5\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im - re\right) \cdot 2}\\ \end{array}\]

Reproduce

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