Average Error: 38.1 → 17.6
Time: 20.6s
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 -4.544356418821128 \cdot 10^{+64}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -1.2465139226076545 \cdot 10^{-304}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \le 8.828385981385365 \cdot 10^{-228}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im - re\right) \cdot 2.0}\\ \mathbf{elif}\;re \le 7.387383225171874 \cdot 10^{+137}:\\ \;\;\;\;0.5 \cdot \left(\frac{\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + re}} \cdot \left(\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\ \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 -4.544356418821128 \cdot 10^{+64}:\\
\;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\

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

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

\mathbf{elif}\;re \le 7.387383225171874 \cdot 10^{+137}:\\
\;\;\;\;0.5 \cdot \left(\frac{\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + re}} \cdot \left(\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\

\end{array}
double f(double re, double im) {
        double r572543 = 0.5;
        double r572544 = 2.0;
        double r572545 = re;
        double r572546 = r572545 * r572545;
        double r572547 = im;
        double r572548 = r572547 * r572547;
        double r572549 = r572546 + r572548;
        double r572550 = sqrt(r572549);
        double r572551 = r572550 - r572545;
        double r572552 = r572544 * r572551;
        double r572553 = sqrt(r572552);
        double r572554 = r572543 * r572553;
        return r572554;
}

double f(double re, double im) {
        double r572555 = re;
        double r572556 = -4.544356418821128e+64;
        bool r572557 = r572555 <= r572556;
        double r572558 = -2.0;
        double r572559 = r572558 * r572555;
        double r572560 = 2.0;
        double r572561 = r572559 * r572560;
        double r572562 = sqrt(r572561);
        double r572563 = 0.5;
        double r572564 = r572562 * r572563;
        double r572565 = -1.2465139226076545e-304;
        bool r572566 = r572555 <= r572565;
        double r572567 = im;
        double r572568 = r572567 * r572567;
        double r572569 = r572555 * r572555;
        double r572570 = r572568 + r572569;
        double r572571 = sqrt(r572570);
        double r572572 = r572571 - r572555;
        double r572573 = r572560 * r572572;
        double r572574 = sqrt(r572573);
        double r572575 = r572563 * r572574;
        double r572576 = 8.828385981385365e-228;
        bool r572577 = r572555 <= r572576;
        double r572578 = r572567 - r572555;
        double r572579 = r572578 * r572560;
        double r572580 = sqrt(r572579);
        double r572581 = r572563 * r572580;
        double r572582 = 7.387383225171874e+137;
        bool r572583 = r572555 <= r572582;
        double r572584 = fabs(r572567);
        double r572585 = sqrt(r572560);
        double r572586 = cbrt(r572585);
        double r572587 = r572584 * r572586;
        double r572588 = r572555 + r572571;
        double r572589 = sqrt(r572588);
        double r572590 = r572587 / r572589;
        double r572591 = r572586 * r572586;
        double r572592 = r572590 * r572591;
        double r572593 = r572563 * r572592;
        double r572594 = r572555 + r572555;
        double r572595 = sqrt(r572594);
        double r572596 = r572591 / r572595;
        double r572597 = r572596 * r572587;
        double r572598 = r572563 * r572597;
        double r572599 = r572583 ? r572593 : r572598;
        double r572600 = r572577 ? r572581 : r572599;
        double r572601 = r572566 ? r572575 : r572600;
        double r572602 = r572557 ? r572564 : r572601;
        return r572602;
}

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 < -4.544356418821128e+64

    1. Initial program 44.9

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

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

    if -4.544356418821128e+64 < re < -1.2465139226076545e-304

    1. Initial program 19.6

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

    if -1.2465139226076545e-304 < re < 8.828385981385365e-228

    1. Initial program 32.9

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

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

    if 8.828385981385365e-228 < re < 7.387383225171874e+137

    1. Initial program 42.2

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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/42.2

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \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-div42.3

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \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. Simplified30.2

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied sqrt-prod30.2

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    9. Applied associate-/l*30.2

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0}}{\frac{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}{\sqrt{im \cdot im + 0}}}}\]
    10. Simplified19.6

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0}}{\color{blue}{\frac{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}{\left|im\right|}}}\]
    11. Using strategy rm
    12. Applied div-inv19.7

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0}}{\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \frac{1}{\left|im\right|}}}\]
    13. Applied add-cube-cbrt19.7

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right) \cdot \sqrt[3]{\sqrt{2.0}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \frac{1}{\left|im\right|}}\]
    14. Applied times-frac19.5

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{\sqrt[3]{\sqrt{2.0}}}{\frac{1}{\left|im\right|}}\right)}\]
    15. Simplified19.4

      \[\leadsto 0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \color{blue}{\left(\sqrt[3]{\sqrt{2.0}} \cdot \left|im\right|\right)}\right)\]
    16. Using strategy rm
    17. Applied div-inv19.5

      \[\leadsto 0.5 \cdot \left(\color{blue}{\left(\left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right) \cdot \frac{1}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\right)} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \left|im\right|\right)\right)\]
    18. Applied associate-*l*19.4

      \[\leadsto 0.5 \cdot \color{blue}{\left(\left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right) \cdot \left(\frac{1}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \left|im\right|\right)\right)\right)}\]
    19. Simplified19.4

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

    if 7.387383225171874e+137 < re

    1. Initial program 61.9

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

      \[\leadsto 0.5 \cdot \sqrt{2.0 \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/61.9

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{2.0 \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-div61.9

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0 \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. Simplified48.6

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0 \cdot \left(im \cdot im + 0\right)}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    7. Using strategy rm
    8. Applied sqrt-prod48.6

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{2.0} \cdot \sqrt{im \cdot im + 0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
    9. Applied associate-/l*48.6

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{2.0}}{\frac{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}{\sqrt{im \cdot im + 0}}}}\]
    10. Simplified48.3

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0}}{\color{blue}{\frac{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}{\left|im\right|}}}\]
    11. Using strategy rm
    12. Applied div-inv48.3

      \[\leadsto 0.5 \cdot \frac{\sqrt{2.0}}{\color{blue}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \frac{1}{\left|im\right|}}}\]
    13. Applied add-cube-cbrt48.3

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right) \cdot \sqrt[3]{\sqrt{2.0}}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re} \cdot \frac{1}{\left|im\right|}}\]
    14. Applied times-frac48.3

      \[\leadsto 0.5 \cdot \color{blue}{\left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \frac{\sqrt[3]{\sqrt{2.0}}}{\frac{1}{\left|im\right|}}\right)}\]
    15. Simplified48.3

      \[\leadsto 0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}} \cdot \color{blue}{\left(\sqrt[3]{\sqrt{2.0}} \cdot \left|im\right|\right)}\right)\]
    16. Taylor expanded around inf 9.4

      \[\leadsto 0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{\color{blue}{re} + re}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \left|im\right|\right)\right)\]
  3. Recombined 5 regimes into one program.
  4. Final simplification17.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -4.544356418821128 \cdot 10^{+64}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le -1.2465139226076545 \cdot 10^{-304}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{elif}\;re \le 8.828385981385365 \cdot 10^{-228}:\\ \;\;\;\;0.5 \cdot \sqrt{\left(im - re\right) \cdot 2.0}\\ \mathbf{elif}\;re \le 7.387383225171874 \cdot 10^{+137}:\\ \;\;\;\;0.5 \cdot \left(\frac{\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + \sqrt{im \cdot im + re \cdot re}}} \cdot \left(\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(\frac{\sqrt[3]{\sqrt{2.0}} \cdot \sqrt[3]{\sqrt{2.0}}}{\sqrt{re + re}} \cdot \left(\left|im\right| \cdot \sqrt[3]{\sqrt{2.0}}\right)\right)\\ \end{array}\]

Reproduce

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