#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 r18683 = 0.5f;
        float r18684 = 2.0f;
        float r18685 = re;
        float r18686 = r18685 * r18685;
        float r18687 = im;
        float r18688 = r18687 * r18687;
        float r18689 = r18686 + r18688;
        float r18690 = sqrt(r18689);
        float r18691 = r18690 + r18685;
        float r18692 = r18684 * r18691;
        float r18693 = sqrt(r18692);
        float r18694 = r18683 * r18693;
        return r18694;
}

double f_id(double re, double im) {
        double r18695 = 0.5;
        double r18696 = 2.0;
        double r18697 = re;
        double r18698 = r18697 * r18697;
        double r18699 = im;
        double r18700 = r18699 * r18699;
        double r18701 = r18698 + r18700;
        double r18702 = sqrt(r18701);
        double r18703 = r18702 + r18697;
        double r18704 = r18696 * r18703;
        double r18705 = sqrt(r18704);
        double r18706 = r18695 * r18705;
        return r18706;
}


double f_of(float re, float im) {
        float r18707 = re;
        float r18708 = -6.188124430018562e-21f;
        bool r18709 = r18707 <= r18708;
        float r18710 = 0.5f;
        float r18711 = 2.0f;
        float r18712 = im;
        float r18713 = r18711 * r18712;
        float r18714 = r18713 * r18712;
        float r18715 = sqrt(r18714);
        float r18716 = r18707 * r18707;
        float r18717 = r18712 * r18712;
        float r18718 = r18716 + r18717;
        float r18719 = sqrt(r18718);
        float r18720 = r18719 - r18707;
        float r18721 = sqrt(r18720);
        float r18722 = r18715 / r18721;
        float r18723 = r18710 * r18722;
        float r18724 = 2556882583552.0f;
        bool r18725 = r18707 <= r18724;
        float r18726 = sqrt(r18719);
        float r18727 = r18726 * r18726;
        float r18728 = r18727 + r18707;
        float r18729 = r18711 * r18728;
        float r18730 = sqrt(r18729);
        float r18731 = r18710 * r18730;
        float r18732 = r18707 + r18707;
        float r18733 = r18711 * r18732;
        float r18734 = sqrt(r18733);
        float r18735 = r18710 * r18734;
        float r18736 = r18725 ? r18731 : r18735;
        float r18737 = r18709 ? r18723 : r18736;
        return r18737;
}

double f_od(double re, double im) {
        double r18738 = re;
        double r18739 = -6.188124430018562e-21;
        bool r18740 = r18738 <= r18739;
        double r18741 = 0.5;
        double r18742 = 2.0;
        double r18743 = im;
        double r18744 = r18742 * r18743;
        double r18745 = r18744 * r18743;
        double r18746 = sqrt(r18745);
        double r18747 = r18738 * r18738;
        double r18748 = r18743 * r18743;
        double r18749 = r18747 + r18748;
        double r18750 = sqrt(r18749);
        double r18751 = r18750 - r18738;
        double r18752 = sqrt(r18751);
        double r18753 = r18746 / r18752;
        double r18754 = r18741 * r18753;
        double r18755 = 2556882583552.0;
        bool r18756 = r18738 <= r18755;
        double r18757 = sqrt(r18750);
        double r18758 = r18757 * r18757;
        double r18759 = r18758 + r18738;
        double r18760 = r18742 * r18759;
        double r18761 = sqrt(r18760);
        double r18762 = r18741 * r18761;
        double r18763 = r18738 + r18738;
        double r18764 = r18742 * r18763;
        double r18765 = sqrt(r18764);
        double r18766 = r18741 * r18765;
        double r18767 = r18756 ? r18762 : r18766;
        double r18768 = r18740 ? r18754 : r18767;
        return r18768;
}

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 r18769, r18770, r18771, r18772, r18773, r18774, r18775, r18776, r18777, r18778, r18779, r18780;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18769, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18770, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18771);
        mpfr_init(r18772);
        mpfr_init(r18773);
        mpfr_init(r18774);
        mpfr_init(r18775);
        mpfr_init(r18776);
        mpfr_init(r18777);
        mpfr_init(r18778);
        mpfr_init(r18779);
        mpfr_init(r18780);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18771, re, MPFR_RNDN);
        mpfr_mul(r18772, r18771, r18771, MPFR_RNDN);
        mpfr_set_d(r18773, im, MPFR_RNDN);
        mpfr_mul(r18774, r18773, r18773, MPFR_RNDN);
        mpfr_add(r18775, r18772, r18774, MPFR_RNDN);
        mpfr_sqrt(r18776, r18775, MPFR_RNDN);
        mpfr_add(r18777, r18776, r18771, MPFR_RNDN);
        mpfr_mul(r18778, r18770, r18777, MPFR_RNDN);
        mpfr_sqrt(r18779, r18778, MPFR_RNDN);
        mpfr_mul(r18780, r18769, r18779, MPFR_RNDN);
        return mpfr_get_d(r18780, MPFR_RNDN);
}

static mpfr_t r18781, r18782, r18783, r18784, r18785, r18786, r18787, r18788, r18789, r18790, r18791, r18792, r18793, r18794, r18795, r18796, r18797, r18798, r18799, r18800, r18801, r18802, r18803, r18804, r18805, r18806, r18807, r18808, r18809, r18810, r18811;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18781);
        mpfr_init_set_str(r18782, "-6.1881244f-21", 10, MPFR_RNDN);
        mpfr_init(r18783);
        mpfr_init_set_str(r18784, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18785, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18786);
        mpfr_init(r18787);
        mpfr_init(r18788);
        mpfr_init(r18789);
        mpfr_init(r18790);
        mpfr_init(r18791);
        mpfr_init(r18792);
        mpfr_init(r18793);
        mpfr_init(r18794);
        mpfr_init(r18795);
        mpfr_init(r18796);
        mpfr_init(r18797);
        mpfr_init_set_str(r18798, "2.5568826f+12", 10, MPFR_RNDN);
        mpfr_init(r18799);
        mpfr_init(r18800);
        mpfr_init(r18801);
        mpfr_init(r18802);
        mpfr_init(r18803);
        mpfr_init(r18804);
        mpfr_init(r18805);
        mpfr_init(r18806);
        mpfr_init(r18807);
        mpfr_init(r18808);
        mpfr_init(r18809);
        mpfr_init(r18810);
        mpfr_init(r18811);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18781, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18783, mpfr_cmp(r18781, r18782) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18786, im, MPFR_RNDN);
        mpfr_mul(r18787, r18785, r18786, MPFR_RNDN);
        mpfr_mul(r18788, r18787, r18786, MPFR_RNDN);
        mpfr_sqrt(r18789, r18788, MPFR_RNDN);
        mpfr_sqr(r18790, r18781, MPFR_RNDN);
        mpfr_mul(r18791, r18786, r18786, MPFR_RNDN);
        mpfr_add(r18792, r18790, r18791, MPFR_RNDN);
        mpfr_sqrt(r18793, r18792, MPFR_RNDN);
        mpfr_sub(r18794, r18793, r18781, MPFR_RNDN);
        mpfr_sqrt(r18795, r18794, MPFR_RNDN);
        mpfr_div(r18796, r18789, r18795, MPFR_RNDN);
        mpfr_mul(r18797, r18784, r18796, MPFR_RNDN);
        ;
        mpfr_set_si(r18799, mpfr_cmp(r18781, r18798) <= 0, MPFR_RNDN);
        mpfr_sqrt(r18800, r18793, MPFR_RNDN);
        mpfr_sqr(r18801, r18800, MPFR_RNDN);
        mpfr_add(r18802, r18801, r18781, MPFR_RNDN);
        mpfr_mul(r18803, r18785, r18802, MPFR_RNDN);
        mpfr_sqrt(r18804, r18803, MPFR_RNDN);
        mpfr_mul(r18805, r18784, r18804, MPFR_RNDN);
        mpfr_add(r18806, r18781, r18781, MPFR_RNDN);
        mpfr_mul(r18807, r18785, r18806, MPFR_RNDN);
        mpfr_sqrt(r18808, r18807, MPFR_RNDN);
        mpfr_mul(r18809, r18784, r18808, MPFR_RNDN);
        if (mpfr_get_si(r18799, MPFR_RNDN)) { mpfr_set(r18810, r18805, MPFR_RNDN); } else { mpfr_set(r18810, r18809, MPFR_RNDN); };
        if (mpfr_get_si(r18783, MPFR_RNDN)) { mpfr_set(r18811, r18797, MPFR_RNDN); } else { mpfr_set(r18811, r18810, MPFR_RNDN); };
        return mpfr_get_d(r18811, MPFR_RNDN);
}

static mpfr_t r18812, r18813, r18814, r18815, r18816, r18817, r18818, r18819, r18820, r18821, r18822, r18823, r18824, r18825, r18826, r18827, r18828, r18829, r18830, r18831, r18832, r18833, r18834, r18835, r18836, r18837, r18838, r18839, r18840, r18841, r18842;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18812);
        mpfr_init_set_str(r18813, "-6.1881244f-21", 10, MPFR_RNDN);
        mpfr_init(r18814);
        mpfr_init_set_str(r18815, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18816, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18817);
        mpfr_init(r18818);
        mpfr_init(r18819);
        mpfr_init(r18820);
        mpfr_init(r18821);
        mpfr_init(r18822);
        mpfr_init(r18823);
        mpfr_init(r18824);
        mpfr_init(r18825);
        mpfr_init(r18826);
        mpfr_init(r18827);
        mpfr_init(r18828);
        mpfr_init_set_str(r18829, "2.5568826f+12", 10, MPFR_RNDN);
        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);
        mpfr_init(r18839);
        mpfr_init(r18840);
        mpfr_init(r18841);
        mpfr_init(r18842);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18812, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18814, mpfr_cmp(r18812, r18813) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18817, im, MPFR_RNDN);
        mpfr_mul(r18818, r18816, r18817, MPFR_RNDN);
        mpfr_mul(r18819, r18818, r18817, MPFR_RNDN);
        mpfr_sqrt(r18820, r18819, MPFR_RNDN);
        mpfr_sqr(r18821, r18812, MPFR_RNDN);
        mpfr_mul(r18822, r18817, r18817, MPFR_RNDN);
        mpfr_add(r18823, r18821, r18822, MPFR_RNDN);
        mpfr_sqrt(r18824, r18823, MPFR_RNDN);
        mpfr_sub(r18825, r18824, r18812, MPFR_RNDN);
        mpfr_sqrt(r18826, r18825, MPFR_RNDN);
        mpfr_div(r18827, r18820, r18826, MPFR_RNDN);
        mpfr_mul(r18828, r18815, r18827, MPFR_RNDN);
        ;
        mpfr_set_si(r18830, mpfr_cmp(r18812, r18829) <= 0, MPFR_RNDN);
        mpfr_sqrt(r18831, r18824, MPFR_RNDN);
        mpfr_sqr(r18832, r18831, MPFR_RNDN);
        mpfr_add(r18833, r18832, r18812, MPFR_RNDN);
        mpfr_mul(r18834, r18816, r18833, MPFR_RNDN);
        mpfr_sqrt(r18835, r18834, MPFR_RNDN);
        mpfr_mul(r18836, r18815, r18835, MPFR_RNDN);
        mpfr_add(r18837, r18812, r18812, MPFR_RNDN);
        mpfr_mul(r18838, r18816, r18837, MPFR_RNDN);
        mpfr_sqrt(r18839, r18838, MPFR_RNDN);
        mpfr_mul(r18840, r18815, r18839, MPFR_RNDN);
        if (mpfr_get_si(r18830, MPFR_RNDN)) { mpfr_set(r18841, r18836, MPFR_RNDN); } else { mpfr_set(r18841, r18840, MPFR_RNDN); };
        if (mpfr_get_si(r18814, MPFR_RNDN)) { mpfr_set(r18842, r18828, MPFR_RNDN); } else { mpfr_set(r18842, r18841, MPFR_RNDN); };
        return mpfr_get_d(r18842, MPFR_RNDN);
}

