#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 r18739 = 0.5f;
        float r18740 = 2.0f;
        float r18741 = re;
        float r18742 = r18741 * r18741;
        float r18743 = im;
        float r18744 = r18743 * r18743;
        float r18745 = r18742 + r18744;
        float r18746 = sqrt(r18745);
        float r18747 = r18746 + r18741;
        float r18748 = r18740 * r18747;
        float r18749 = sqrt(r18748);
        float r18750 = r18739 * r18749;
        return r18750;
}

double f_id(double re, double im) {
        double r18751 = 0.5;
        double r18752 = 2.0;
        double r18753 = re;
        double r18754 = r18753 * r18753;
        double r18755 = im;
        double r18756 = r18755 * r18755;
        double r18757 = r18754 + r18756;
        double r18758 = sqrt(r18757);
        double r18759 = r18758 + r18753;
        double r18760 = r18752 * r18759;
        double r18761 = sqrt(r18760);
        double r18762 = r18751 * r18761;
        return r18762;
}


double f_of(float re, float im) {
        float r18763 = re;
        float r18764 = -8.311217662803249e-19f;
        bool r18765 = r18763 <= r18764;
        float r18766 = 0.5f;
        float r18767 = 2.0f;
        float r18768 = im;
        float r18769 = r18767 * r18768;
        float r18770 = r18769 * r18768;
        float r18771 = sqrt(r18770);
        float r18772 = r18763 * r18763;
        float r18773 = r18768 * r18768;
        float r18774 = r18772 + r18773;
        float r18775 = sqrt(r18774);
        float r18776 = r18775 - r18763;
        float r18777 = sqrt(r18776);
        float r18778 = r18771 / r18777;
        float r18779 = r18766 * r18778;
        float r18780 = 43888257531904.0f;
        bool r18781 = r18763 <= r18780;
        float r18782 = r18763 * r18763;
        float r18783 = r18782 + r18773;
        float r18784 = sqrt(r18783);
        float r18785 = r18784 + r18763;
        float r18786 = r18767 * r18785;
        float r18787 = sqrt(r18786);
        float r18788 = r18766 * r18787;
        float r18789 = r18763 + r18763;
        float r18790 = r18767 * r18789;
        float r18791 = sqrt(r18790);
        float r18792 = r18766 * r18791;
        float r18793 = r18781 ? r18788 : r18792;
        float r18794 = r18765 ? r18779 : r18793;
        return r18794;
}

double f_od(double re, double im) {
        double r18795 = re;
        double r18796 = -8.311217662803249e-19;
        bool r18797 = r18795 <= r18796;
        double r18798 = 0.5;
        double r18799 = 2.0;
        double r18800 = im;
        double r18801 = r18799 * r18800;
        double r18802 = r18801 * r18800;
        double r18803 = sqrt(r18802);
        double r18804 = r18795 * r18795;
        double r18805 = r18800 * r18800;
        double r18806 = r18804 + r18805;
        double r18807 = sqrt(r18806);
        double r18808 = r18807 - r18795;
        double r18809 = sqrt(r18808);
        double r18810 = r18803 / r18809;
        double r18811 = r18798 * r18810;
        double r18812 = 43888257531904.0;
        bool r18813 = r18795 <= r18812;
        double r18814 = r18795 * r18795;
        double r18815 = r18814 + r18805;
        double r18816 = sqrt(r18815);
        double r18817 = r18816 + r18795;
        double r18818 = r18799 * r18817;
        double r18819 = sqrt(r18818);
        double r18820 = r18798 * r18819;
        double r18821 = r18795 + r18795;
        double r18822 = r18799 * r18821;
        double r18823 = sqrt(r18822);
        double r18824 = r18798 * r18823;
        double r18825 = r18813 ? r18820 : r18824;
        double r18826 = r18797 ? r18811 : r18825;
        return r18826;
}

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 r18827, r18828, r18829, r18830, r18831, r18832, r18833, r18834, r18835, r18836, r18837, r18838;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18827, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18828, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18829);
        mpfr_init(r18830);
        mpfr_init(r18831);
        mpfr_init(r18832);
        mpfr_init(r18833);
        mpfr_init(r18834);
        mpfr_init(r18835);
        mpfr_init(r18836);
        mpfr_init(r18837);
        mpfr_init(r18838);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18829, re, MPFR_RNDN);
        mpfr_mul(r18830, r18829, r18829, MPFR_RNDN);
        mpfr_set_d(r18831, im, MPFR_RNDN);
        mpfr_mul(r18832, r18831, r18831, MPFR_RNDN);
        mpfr_add(r18833, r18830, r18832, MPFR_RNDN);
        mpfr_sqrt(r18834, r18833, MPFR_RNDN);
        mpfr_add(r18835, r18834, r18829, MPFR_RNDN);
        mpfr_mul(r18836, r18828, r18835, MPFR_RNDN);
        mpfr_sqrt(r18837, r18836, MPFR_RNDN);
        mpfr_mul(r18838, r18827, r18837, MPFR_RNDN);
        return mpfr_get_d(r18838, MPFR_RNDN);
}

static mpfr_t r18839, r18840, r18841, r18842, r18843, r18844, r18845, r18846, r18847, r18848, r18849, r18850, r18851, r18852, r18853, r18854, r18855, r18856, r18857, r18858, r18859, r18860, r18861, r18862, r18863, r18864, r18865, r18866, r18867, r18868, r18869, r18870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18839);
        mpfr_init_set_str(r18840, "-8.3112177f-19", 10, MPFR_RNDN);
        mpfr_init(r18841);
        mpfr_init_set_str(r18842, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18843, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18844);
        mpfr_init(r18845);
        mpfr_init(r18846);
        mpfr_init(r18847);
        mpfr_init(r18848);
        mpfr_init(r18849);
        mpfr_init(r18850);
        mpfr_init(r18851);
        mpfr_init(r18852);
        mpfr_init(r18853);
        mpfr_init(r18854);
        mpfr_init(r18855);
        mpfr_init_set_str(r18856, "4.3888258f+13", 10, MPFR_RNDN);
        mpfr_init(r18857);
        mpfr_init(r18858);
        mpfr_init(r18859);
        mpfr_init(r18860);
        mpfr_init(r18861);
        mpfr_init(r18862);
        mpfr_init(r18863);
        mpfr_init(r18864);
        mpfr_init(r18865);
        mpfr_init(r18866);
        mpfr_init(r18867);
        mpfr_init(r18868);
        mpfr_init(r18869);
        mpfr_init(r18870);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18839, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18841, mpfr_cmp(r18839, r18840) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18844, im, MPFR_RNDN);
        mpfr_mul(r18845, r18843, r18844, MPFR_RNDN);
        mpfr_mul(r18846, r18845, r18844, MPFR_RNDN);
        mpfr_sqrt(r18847, r18846, MPFR_RNDN);
        mpfr_sqr(r18848, r18839, MPFR_RNDN);
        mpfr_mul(r18849, r18844, r18844, MPFR_RNDN);
        mpfr_add(r18850, r18848, r18849, MPFR_RNDN);
        mpfr_sqrt(r18851, r18850, MPFR_RNDN);
        mpfr_sub(r18852, r18851, r18839, MPFR_RNDN);
        mpfr_sqrt(r18853, r18852, MPFR_RNDN);
        mpfr_div(r18854, r18847, r18853, MPFR_RNDN);
        mpfr_mul(r18855, r18842, r18854, MPFR_RNDN);
        ;
        mpfr_set_si(r18857, mpfr_cmp(r18839, r18856) <= 0, MPFR_RNDN);
        mpfr_mul(r18858, r18839, r18839, MPFR_RNDN);
        mpfr_add(r18859, r18858, r18849, MPFR_RNDN);
        mpfr_sqrt(r18860, r18859, MPFR_RNDN);
        mpfr_add(r18861, r18860, r18839, MPFR_RNDN);
        mpfr_mul(r18862, r18843, r18861, MPFR_RNDN);
        mpfr_sqrt(r18863, r18862, MPFR_RNDN);
        mpfr_mul(r18864, r18842, r18863, MPFR_RNDN);
        mpfr_add(r18865, r18839, r18839, MPFR_RNDN);
        mpfr_mul(r18866, r18843, r18865, MPFR_RNDN);
        mpfr_sqrt(r18867, r18866, MPFR_RNDN);
        mpfr_mul(r18868, r18842, r18867, MPFR_RNDN);
        if (mpfr_get_si(r18857, MPFR_RNDN)) { mpfr_set(r18869, r18864, MPFR_RNDN); } else { mpfr_set(r18869, r18868, MPFR_RNDN); };
        if (mpfr_get_si(r18841, MPFR_RNDN)) { mpfr_set(r18870, r18855, MPFR_RNDN); } else { mpfr_set(r18870, r18869, MPFR_RNDN); };
        return mpfr_get_d(r18870, MPFR_RNDN);
}

static mpfr_t r18871, r18872, r18873, r18874, r18875, r18876, r18877, r18878, r18879, r18880, r18881, r18882, r18883, r18884, r18885, r18886, r18887, r18888, r18889, r18890, r18891, r18892, r18893, r18894, r18895, r18896, r18897, r18898, r18899, r18900, r18901, r18902;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18871);
        mpfr_init_set_str(r18872, "-8.3112177f-19", 10, MPFR_RNDN);
        mpfr_init(r18873);
        mpfr_init_set_str(r18874, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18875, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18876);
        mpfr_init(r18877);
        mpfr_init(r18878);
        mpfr_init(r18879);
        mpfr_init(r18880);
        mpfr_init(r18881);
        mpfr_init(r18882);
        mpfr_init(r18883);
        mpfr_init(r18884);
        mpfr_init(r18885);
        mpfr_init(r18886);
        mpfr_init(r18887);
        mpfr_init_set_str(r18888, "4.3888258f+13", 10, MPFR_RNDN);
        mpfr_init(r18889);
        mpfr_init(r18890);
        mpfr_init(r18891);
        mpfr_init(r18892);
        mpfr_init(r18893);
        mpfr_init(r18894);
        mpfr_init(r18895);
        mpfr_init(r18896);
        mpfr_init(r18897);
        mpfr_init(r18898);
        mpfr_init(r18899);
        mpfr_init(r18900);
        mpfr_init(r18901);
        mpfr_init(r18902);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18871, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18873, mpfr_cmp(r18871, r18872) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18876, im, MPFR_RNDN);
        mpfr_mul(r18877, r18875, r18876, MPFR_RNDN);
        mpfr_mul(r18878, r18877, r18876, MPFR_RNDN);
        mpfr_sqrt(r18879, r18878, MPFR_RNDN);
        mpfr_sqr(r18880, r18871, MPFR_RNDN);
        mpfr_mul(r18881, r18876, r18876, MPFR_RNDN);
        mpfr_add(r18882, r18880, r18881, MPFR_RNDN);
        mpfr_sqrt(r18883, r18882, MPFR_RNDN);
        mpfr_sub(r18884, r18883, r18871, MPFR_RNDN);
        mpfr_sqrt(r18885, r18884, MPFR_RNDN);
        mpfr_div(r18886, r18879, r18885, MPFR_RNDN);
        mpfr_mul(r18887, r18874, r18886, MPFR_RNDN);
        ;
        mpfr_set_si(r18889, mpfr_cmp(r18871, r18888) <= 0, MPFR_RNDN);
        mpfr_mul(r18890, r18871, r18871, MPFR_RNDN);
        mpfr_add(r18891, r18890, r18881, MPFR_RNDN);
        mpfr_sqrt(r18892, r18891, MPFR_RNDN);
        mpfr_add(r18893, r18892, r18871, MPFR_RNDN);
        mpfr_mul(r18894, r18875, r18893, MPFR_RNDN);
        mpfr_sqrt(r18895, r18894, MPFR_RNDN);
        mpfr_mul(r18896, r18874, r18895, MPFR_RNDN);
        mpfr_add(r18897, r18871, r18871, MPFR_RNDN);
        mpfr_mul(r18898, r18875, r18897, MPFR_RNDN);
        mpfr_sqrt(r18899, r18898, MPFR_RNDN);
        mpfr_mul(r18900, r18874, r18899, MPFR_RNDN);
        if (mpfr_get_si(r18889, MPFR_RNDN)) { mpfr_set(r18901, r18896, MPFR_RNDN); } else { mpfr_set(r18901, r18900, MPFR_RNDN); };
        if (mpfr_get_si(r18873, MPFR_RNDN)) { mpfr_set(r18902, r18887, MPFR_RNDN); } else { mpfr_set(r18902, r18901, MPFR_RNDN); };
        return mpfr_get_d(r18902, MPFR_RNDN);
}

