#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.sqrt on complex, real part";

double f_if(float re, float im) {
        float r38688 = 0.5;
        float r38689 = 2.0;
        float r38690 = re;
        float r38691 = r38690 * r38690;
        float r38692 = im;
        float r38693 = r38692 * r38692;
        float r38694 = r38691 + r38693;
        float r38695 = sqrt(r38694);
        float r38696 = r38695 + r38690;
        float r38697 = r38689 * r38696;
        float r38698 = sqrt(r38697);
        float r38699 = r38688 * r38698;
        return r38699;
}

double f_id(double re, double im) {
        double r38700 = 0.5;
        double r38701 = 2.0;
        double r38702 = re;
        double r38703 = r38702 * r38702;
        double r38704 = im;
        double r38705 = r38704 * r38704;
        double r38706 = r38703 + r38705;
        double r38707 = sqrt(r38706);
        double r38708 = r38707 + r38702;
        double r38709 = r38701 * r38708;
        double r38710 = sqrt(r38709);
        double r38711 = r38700 * r38710;
        return r38711;
}


double f_of(float re, float im) {
        float r38712 = re;
        float r38713 = -9.5730411458898e+118;
        bool r38714 = r38712 <= r38713;
        float r38715 = 0.5;
        float r38716 = im;
        float r38717 = 2.0;
        float r38718 = r38716 * r38717;
        float r38719 = r38718 * r38716;
        float r38720 = sqrt(r38719);
        float r38721 = -r38712;
        float r38722 = r38721 - r38712;
        float r38723 = sqrt(r38722);
        float r38724 = r38720 / r38723;
        float r38725 = r38715 * r38724;
        float r38726 = 1.480001709415914e-303;
        bool r38727 = r38712 <= r38726;
        float r38728 = sqrt(r38717);
        float r38729 = 1;
        float r38730 = sqrt(r38729);
        float r38731 = r38728 / r38730;
        float r38732 = fabs(r38716);
        float r38733 = r38716 * r38716;
        float r38734 = r38712 * r38712;
        float r38735 = r38733 + r38734;
        float r38736 = sqrt(r38735);
        float r38737 = r38736 - r38712;
        float r38738 = sqrt(r38737);
        float r38739 = r38732 / r38738;
        float r38740 = r38731 * r38739;
        float r38741 = r38715 * r38740;
        float r38742 = 1.1415449837537338e-08;
        bool r38743 = r38712 <= r38742;
        float r38744 = r38734 + r38733;
        float r38745 = sqrt(r38744);
        float r38746 = sqrt(r38745);
        float r38747 = r38746 * r38746;
        float r38748 = r38747 + r38712;
        float r38749 = r38717 * r38748;
        float r38750 = sqrt(r38749);
        float r38751 = r38715 * r38750;
        float r38752 = r38712 + r38712;
        float r38753 = r38717 * r38752;
        float r38754 = sqrt(r38753);
        float r38755 = r38715 * r38754;
        float r38756 = r38743 ? r38751 : r38755;
        float r38757 = r38727 ? r38741 : r38756;
        float r38758 = r38714 ? r38725 : r38757;
        return r38758;
}

double f_od(double re, double im) {
        double r38759 = re;
        double r38760 = -9.5730411458898e+118;
        bool r38761 = r38759 <= r38760;
        double r38762 = 0.5;
        double r38763 = im;
        double r38764 = 2.0;
        double r38765 = r38763 * r38764;
        double r38766 = r38765 * r38763;
        double r38767 = sqrt(r38766);
        double r38768 = -r38759;
        double r38769 = r38768 - r38759;
        double r38770 = sqrt(r38769);
        double r38771 = r38767 / r38770;
        double r38772 = r38762 * r38771;
        double r38773 = 1.480001709415914e-303;
        bool r38774 = r38759 <= r38773;
        double r38775 = sqrt(r38764);
        double r38776 = 1;
        double r38777 = sqrt(r38776);
        double r38778 = r38775 / r38777;
        double r38779 = fabs(r38763);
        double r38780 = r38763 * r38763;
        double r38781 = r38759 * r38759;
        double r38782 = r38780 + r38781;
        double r38783 = sqrt(r38782);
        double r38784 = r38783 - r38759;
        double r38785 = sqrt(r38784);
        double r38786 = r38779 / r38785;
        double r38787 = r38778 * r38786;
        double r38788 = r38762 * r38787;
        double r38789 = 1.1415449837537338e-08;
        bool r38790 = r38759 <= r38789;
        double r38791 = r38781 + r38780;
        double r38792 = sqrt(r38791);
        double r38793 = sqrt(r38792);
        double r38794 = r38793 * r38793;
        double r38795 = r38794 + r38759;
        double r38796 = r38764 * r38795;
        double r38797 = sqrt(r38796);
        double r38798 = r38762 * r38797;
        double r38799 = r38759 + r38759;
        double r38800 = r38764 * r38799;
        double r38801 = sqrt(r38800);
        double r38802 = r38762 * r38801;
        double r38803 = r38790 ? r38798 : r38802;
        double r38804 = r38774 ? r38788 : r38803;
        double r38805 = r38761 ? r38772 : r38804;
        return r38805;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r38806, r38807, r38808, r38809, r38810, r38811, r38812, r38813, r38814, r38815, r38816, r38817;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init_set_str(r38806, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38807, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38808);
        mpfr_init(r38809);
        mpfr_init(r38810);
        mpfr_init(r38811);
        mpfr_init(r38812);
        mpfr_init(r38813);
        mpfr_init(r38814);
        mpfr_init(r38815);
        mpfr_init(r38816);
        mpfr_init(r38817);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r38808, re, MPFR_RNDN);
        mpfr_mul(r38809, r38808, r38808, MPFR_RNDN);
        mpfr_set_d(r38810, im, MPFR_RNDN);
        mpfr_mul(r38811, r38810, r38810, MPFR_RNDN);
        mpfr_add(r38812, r38809, r38811, MPFR_RNDN);
        mpfr_sqrt(r38813, r38812, MPFR_RNDN);
        mpfr_add(r38814, r38813, r38808, MPFR_RNDN);
        mpfr_mul(r38815, r38807, r38814, MPFR_RNDN);
        mpfr_sqrt(r38816, r38815, MPFR_RNDN);
        mpfr_mul(r38817, r38806, r38816, MPFR_RNDN);
        return mpfr_get_d(r38817, MPFR_RNDN);
}

static mpfr_t r38818, r38819, r38820, r38821, r38822, r38823, r38824, r38825, r38826, r38827, r38828, r38829, r38830, r38831, r38832, r38833, r38834, r38835, r38836, r38837, r38838, r38839, r38840, r38841, r38842, r38843, r38844, r38845, r38846, r38847, r38848, r38849, r38850, r38851, r38852, r38853, r38854, r38855, r38856, r38857, r38858, r38859, r38860, r38861, r38862, r38863, r38864;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38818);
        mpfr_init_set_str(r38819, "-9.5730411458898e+118", 10, MPFR_RNDN);
        mpfr_init(r38820);
        mpfr_init_set_str(r38821, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38822);
        mpfr_init_set_str(r38823, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38824);
        mpfr_init(r38825);
        mpfr_init(r38826);
        mpfr_init(r38827);
        mpfr_init(r38828);
        mpfr_init(r38829);
        mpfr_init(r38830);
        mpfr_init(r38831);
        mpfr_init_set_str(r38832, "1.480001709415914e-303", 10, MPFR_RNDN);
        mpfr_init(r38833);
        mpfr_init(r38834);
        mpfr_init_set_str(r38835, "1", 10, MPFR_RNDN);
        mpfr_init(r38836);
        mpfr_init(r38837);
        mpfr_init(r38838);
        mpfr_init(r38839);
        mpfr_init(r38840);
        mpfr_init(r38841);
        mpfr_init(r38842);
        mpfr_init(r38843);
        mpfr_init(r38844);
        mpfr_init(r38845);
        mpfr_init(r38846);
        mpfr_init(r38847);
        mpfr_init_set_str(r38848, "1.1415449837537338e-08", 10, MPFR_RNDN);
        mpfr_init(r38849);
        mpfr_init(r38850);
        mpfr_init(r38851);
        mpfr_init(r38852);
        mpfr_init(r38853);
        mpfr_init(r38854);
        mpfr_init(r38855);
        mpfr_init(r38856);
        mpfr_init(r38857);
        mpfr_init(r38858);
        mpfr_init(r38859);
        mpfr_init(r38860);
        mpfr_init(r38861);
        mpfr_init(r38862);
        mpfr_init(r38863);
        mpfr_init(r38864);
}

double f_fm(double re, double im) {
        mpfr_set_d(r38818, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38820, mpfr_cmp(r38818, r38819) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38822, im, MPFR_RNDN);
        ;
        mpfr_mul(r38824, r38822, r38823, MPFR_RNDN);
        mpfr_mul(r38825, r38824, r38822, MPFR_RNDN);
        mpfr_sqrt(r38826, r38825, MPFR_RNDN);
        mpfr_neg(r38827, r38818, MPFR_RNDN);
        mpfr_sub(r38828, r38827, r38818, MPFR_RNDN);
        mpfr_sqrt(r38829, r38828, MPFR_RNDN);
        mpfr_div(r38830, r38826, r38829, MPFR_RNDN);
        mpfr_mul(r38831, r38821, r38830, MPFR_RNDN);
        ;
        mpfr_set_si(r38833, mpfr_cmp(r38818, r38832) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38834, r38823, MPFR_RNDN);
        ;
        mpfr_sqrt(r38836, r38835, MPFR_RNDN);
        mpfr_div(r38837, r38834, r38836, MPFR_RNDN);
        mpfr_abs(r38838, r38822, MPFR_RNDN);
        mpfr_mul(r38839, r38822, r38822, MPFR_RNDN);
        mpfr_mul(r38840, r38818, r38818, MPFR_RNDN);
        mpfr_add(r38841, r38839, r38840, MPFR_RNDN);
        mpfr_sqrt(r38842, r38841, MPFR_RNDN);
        mpfr_sub(r38843, r38842, r38818, MPFR_RNDN);
        mpfr_sqrt(r38844, r38843, MPFR_RNDN);
        mpfr_div(r38845, r38838, r38844, MPFR_RNDN);
        mpfr_mul(r38846, r38837, r38845, MPFR_RNDN);
        mpfr_mul(r38847, r38821, r38846, MPFR_RNDN);
        ;
        mpfr_set_si(r38849, mpfr_cmp(r38818, r38848) <= 0, MPFR_RNDN);
        mpfr_add(r38850, r38840, r38839, MPFR_RNDN);
        mpfr_sqrt(r38851, r38850, MPFR_RNDN);
        mpfr_sqrt(r38852, r38851, MPFR_RNDN);
        mpfr_mul(r38853, r38852, r38852, MPFR_RNDN);
        mpfr_add(r38854, r38853, r38818, MPFR_RNDN);
        mpfr_mul(r38855, r38823, r38854, MPFR_RNDN);
        mpfr_sqrt(r38856, r38855, MPFR_RNDN);
        mpfr_mul(r38857, r38821, r38856, MPFR_RNDN);
        mpfr_add(r38858, r38818, r38818, MPFR_RNDN);
        mpfr_mul(r38859, r38823, r38858, MPFR_RNDN);
        mpfr_sqrt(r38860, r38859, MPFR_RNDN);
        mpfr_mul(r38861, r38821, r38860, MPFR_RNDN);
        if (mpfr_get_si(r38849, MPFR_RNDN)) { mpfr_set(r38862, r38857, MPFR_RNDN); } else { mpfr_set(r38862, r38861, MPFR_RNDN); };
        if (mpfr_get_si(r38833, MPFR_RNDN)) { mpfr_set(r38863, r38847, MPFR_RNDN); } else { mpfr_set(r38863, r38862, MPFR_RNDN); };
        if (mpfr_get_si(r38820, MPFR_RNDN)) { mpfr_set(r38864, r38831, MPFR_RNDN); } else { mpfr_set(r38864, r38863, MPFR_RNDN); };
        return mpfr_get_d(r38864, MPFR_RNDN);
}

static mpfr_t r38865, r38866, r38867, r38868, r38869, r38870, r38871, r38872, r38873, r38874, r38875, r38876, r38877, r38878, r38879, r38880, r38881, r38882, r38883, r38884, r38885, r38886, r38887, r38888, r38889, r38890, r38891, r38892, r38893, r38894, r38895, r38896, r38897, r38898, r38899, r38900, r38901, r38902, r38903, r38904, r38905, r38906, r38907, r38908, r38909, r38910, r38911;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38865);
        mpfr_init_set_str(r38866, "-9.5730411458898e+118", 10, MPFR_RNDN);
        mpfr_init(r38867);
        mpfr_init_set_str(r38868, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38869);
        mpfr_init_set_str(r38870, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38871);
        mpfr_init(r38872);
        mpfr_init(r38873);
        mpfr_init(r38874);
        mpfr_init(r38875);
        mpfr_init(r38876);
        mpfr_init(r38877);
        mpfr_init(r38878);
        mpfr_init_set_str(r38879, "1.480001709415914e-303", 10, MPFR_RNDN);
        mpfr_init(r38880);
        mpfr_init(r38881);
        mpfr_init_set_str(r38882, "1", 10, MPFR_RNDN);
        mpfr_init(r38883);
        mpfr_init(r38884);
        mpfr_init(r38885);
        mpfr_init(r38886);
        mpfr_init(r38887);
        mpfr_init(r38888);
        mpfr_init(r38889);
        mpfr_init(r38890);
        mpfr_init(r38891);
        mpfr_init(r38892);
        mpfr_init(r38893);
        mpfr_init(r38894);
        mpfr_init_set_str(r38895, "1.1415449837537338e-08", 10, MPFR_RNDN);
        mpfr_init(r38896);
        mpfr_init(r38897);
        mpfr_init(r38898);
        mpfr_init(r38899);
        mpfr_init(r38900);
        mpfr_init(r38901);
        mpfr_init(r38902);
        mpfr_init(r38903);
        mpfr_init(r38904);
        mpfr_init(r38905);
        mpfr_init(r38906);
        mpfr_init(r38907);
        mpfr_init(r38908);
        mpfr_init(r38909);
        mpfr_init(r38910);
        mpfr_init(r38911);
}

double f_dm(double re, double im) {
        mpfr_set_d(r38865, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38867, mpfr_cmp(r38865, r38866) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38869, im, MPFR_RNDN);
        ;
        mpfr_mul(r38871, r38869, r38870, MPFR_RNDN);
        mpfr_mul(r38872, r38871, r38869, MPFR_RNDN);
        mpfr_sqrt(r38873, r38872, MPFR_RNDN);
        mpfr_neg(r38874, r38865, MPFR_RNDN);
        mpfr_sub(r38875, r38874, r38865, MPFR_RNDN);
        mpfr_sqrt(r38876, r38875, MPFR_RNDN);
        mpfr_div(r38877, r38873, r38876, MPFR_RNDN);
        mpfr_mul(r38878, r38868, r38877, MPFR_RNDN);
        ;
        mpfr_set_si(r38880, mpfr_cmp(r38865, r38879) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38881, r38870, MPFR_RNDN);
        ;
        mpfr_sqrt(r38883, r38882, MPFR_RNDN);
        mpfr_div(r38884, r38881, r38883, MPFR_RNDN);
        mpfr_abs(r38885, r38869, MPFR_RNDN);
        mpfr_mul(r38886, r38869, r38869, MPFR_RNDN);
        mpfr_mul(r38887, r38865, r38865, MPFR_RNDN);
        mpfr_add(r38888, r38886, r38887, MPFR_RNDN);
        mpfr_sqrt(r38889, r38888, MPFR_RNDN);
        mpfr_sub(r38890, r38889, r38865, MPFR_RNDN);
        mpfr_sqrt(r38891, r38890, MPFR_RNDN);
        mpfr_div(r38892, r38885, r38891, MPFR_RNDN);
        mpfr_mul(r38893, r38884, r38892, MPFR_RNDN);
        mpfr_mul(r38894, r38868, r38893, MPFR_RNDN);
        ;
        mpfr_set_si(r38896, mpfr_cmp(r38865, r38895) <= 0, MPFR_RNDN);
        mpfr_add(r38897, r38887, r38886, MPFR_RNDN);
        mpfr_sqrt(r38898, r38897, MPFR_RNDN);
        mpfr_sqrt(r38899, r38898, MPFR_RNDN);
        mpfr_mul(r38900, r38899, r38899, MPFR_RNDN);
        mpfr_add(r38901, r38900, r38865, MPFR_RNDN);
        mpfr_mul(r38902, r38870, r38901, MPFR_RNDN);
        mpfr_sqrt(r38903, r38902, MPFR_RNDN);
        mpfr_mul(r38904, r38868, r38903, MPFR_RNDN);
        mpfr_add(r38905, r38865, r38865, MPFR_RNDN);
        mpfr_mul(r38906, r38870, r38905, MPFR_RNDN);
        mpfr_sqrt(r38907, r38906, MPFR_RNDN);
        mpfr_mul(r38908, r38868, r38907, MPFR_RNDN);
        if (mpfr_get_si(r38896, MPFR_RNDN)) { mpfr_set(r38909, r38904, MPFR_RNDN); } else { mpfr_set(r38909, r38908, MPFR_RNDN); };
        if (mpfr_get_si(r38880, MPFR_RNDN)) { mpfr_set(r38910, r38894, MPFR_RNDN); } else { mpfr_set(r38910, r38909, MPFR_RNDN); };
        if (mpfr_get_si(r38867, MPFR_RNDN)) { mpfr_set(r38911, r38878, MPFR_RNDN); } else { mpfr_set(r38911, r38910, MPFR_RNDN); };
        return mpfr_get_d(r38911, MPFR_RNDN);
}

