#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 r19735 = 0.5f;
        float r19736 = 2.0f;
        float r19737 = re;
        float r19738 = r19737 * r19737;
        float r19739 = im;
        float r19740 = r19739 * r19739;
        float r19741 = r19738 + r19740;
        float r19742 = sqrt(r19741);
        float r19743 = r19742 + r19737;
        float r19744 = r19736 * r19743;
        float r19745 = sqrt(r19744);
        float r19746 = r19735 * r19745;
        return r19746;
}

double f_id(double re, double im) {
        double r19747 = 0.5;
        double r19748 = 2.0;
        double r19749 = re;
        double r19750 = r19749 * r19749;
        double r19751 = im;
        double r19752 = r19751 * r19751;
        double r19753 = r19750 + r19752;
        double r19754 = sqrt(r19753);
        double r19755 = r19754 + r19749;
        double r19756 = r19748 * r19755;
        double r19757 = sqrt(r19756);
        double r19758 = r19747 * r19757;
        return r19758;
}


double f_of(float re, float im) {
        float r19759 = re;
        float r19760 = -1.1296621561050415f;
        bool r19761 = r19759 <= r19760;
        float r19762 = 0.5f;
        float r19763 = im;
        float r19764 = r19763 * r19763;
        float r19765 = 2.0f;
        float r19766 = r19764 * r19765;
        float r19767 = sqrt(r19766);
        float r19768 = r19762 * r19767;
        float r19769 = -r19759;
        float r19770 = r19769 - r19759;
        float r19771 = sqrt(r19770);
        float r19772 = r19768 / r19771;
        float r19773 = 2.60800705641956e+19f;
        bool r19774 = r19759 <= r19773;
        float r19775 = r19759 * r19759;
        float r19776 = r19775 + r19764;
        float r19777 = sqrt(r19776);
        float r19778 = r19759 + r19777;
        float r19779 = sqrt(r19778);
        float r19780 = r19779 * r19779;
        float r19781 = r19765 * r19780;
        float r19782 = sqrt(r19781);
        float r19783 = r19762 * r19782;
        float r19784 = r19759 + r19759;
        float r19785 = r19765 * r19784;
        float r19786 = sqrt(r19785);
        float r19787 = r19762 * r19786;
        float r19788 = r19774 ? r19783 : r19787;
        float r19789 = r19761 ? r19772 : r19788;
        return r19789;
}

double f_od(double re, double im) {
        double r19790 = re;
        double r19791 = -1.1296621561050415;
        bool r19792 = r19790 <= r19791;
        double r19793 = 0.5;
        double r19794 = im;
        double r19795 = r19794 * r19794;
        double r19796 = 2.0;
        double r19797 = r19795 * r19796;
        double r19798 = sqrt(r19797);
        double r19799 = r19793 * r19798;
        double r19800 = -r19790;
        double r19801 = r19800 - r19790;
        double r19802 = sqrt(r19801);
        double r19803 = r19799 / r19802;
        double r19804 = 2.60800705641956e+19;
        bool r19805 = r19790 <= r19804;
        double r19806 = r19790 * r19790;
        double r19807 = r19806 + r19795;
        double r19808 = sqrt(r19807);
        double r19809 = r19790 + r19808;
        double r19810 = sqrt(r19809);
        double r19811 = r19810 * r19810;
        double r19812 = r19796 * r19811;
        double r19813 = sqrt(r19812);
        double r19814 = r19793 * r19813;
        double r19815 = r19790 + r19790;
        double r19816 = r19796 * r19815;
        double r19817 = sqrt(r19816);
        double r19818 = r19793 * r19817;
        double r19819 = r19805 ? r19814 : r19818;
        double r19820 = r19792 ? r19803 : r19819;
        return r19820;
}

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 r19821, r19822, r19823, r19824, r19825, r19826, r19827, r19828, r19829, r19830, r19831, r19832;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19821, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19822, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19823);
        mpfr_init(r19824);
        mpfr_init(r19825);
        mpfr_init(r19826);
        mpfr_init(r19827);
        mpfr_init(r19828);
        mpfr_init(r19829);
        mpfr_init(r19830);
        mpfr_init(r19831);
        mpfr_init(r19832);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19823, re, MPFR_RNDN);
        mpfr_mul(r19824, r19823, r19823, MPFR_RNDN);
        mpfr_set_d(r19825, im, MPFR_RNDN);
        mpfr_mul(r19826, r19825, r19825, MPFR_RNDN);
        mpfr_add(r19827, r19824, r19826, MPFR_RNDN);
        mpfr_sqrt(r19828, r19827, MPFR_RNDN);
        mpfr_add(r19829, r19828, r19823, MPFR_RNDN);
        mpfr_mul(r19830, r19822, r19829, MPFR_RNDN);
        mpfr_sqrt(r19831, r19830, MPFR_RNDN);
        mpfr_mul(r19832, r19821, r19831, MPFR_RNDN);
        return mpfr_get_d(r19832, MPFR_RNDN);
}

static mpfr_t r19833, r19834, r19835, r19836, r19837, r19838, r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854, r19855, r19856, r19857, r19858, r19859, r19860, r19861, r19862, r19863;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19833);
        mpfr_init_set_str(r19834, "-1.1296622f0", 10, MPFR_RNDN);
        mpfr_init(r19835);
        mpfr_init_set_str(r19836, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19837);
        mpfr_init(r19838);
        mpfr_init_set_str(r19839, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init(r19843);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init(r19846);
        mpfr_init_set_str(r19847, "2.608007f+19", 10, MPFR_RNDN);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init(r19857);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19833, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19835, mpfr_cmp(r19833, r19834) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19837, im, MPFR_RNDN);
        mpfr_mul(r19838, r19837, r19837, MPFR_RNDN);
        ;
        mpfr_mul(r19840, r19838, r19839, MPFR_RNDN);
        mpfr_sqrt(r19841, r19840, MPFR_RNDN);
        mpfr_mul(r19842, r19836, r19841, MPFR_RNDN);
        mpfr_neg(r19843, r19833, MPFR_RNDN);
        mpfr_sub(r19844, r19843, r19833, MPFR_RNDN);
        mpfr_sqrt(r19845, r19844, MPFR_RNDN);
        mpfr_div(r19846, r19842, r19845, MPFR_RNDN);
        ;
        mpfr_set_si(r19848, mpfr_cmp(r19833, r19847) <= 0, MPFR_RNDN);
        mpfr_sqr(r19849, r19833, MPFR_RNDN);
        mpfr_add(r19850, r19849, r19838, MPFR_RNDN);
        mpfr_sqrt(r19851, r19850, MPFR_RNDN);
        mpfr_add(r19852, r19833, r19851, MPFR_RNDN);
        mpfr_sqrt(r19853, r19852, MPFR_RNDN);
        mpfr_sqr(r19854, r19853, MPFR_RNDN);
        mpfr_mul(r19855, r19839, r19854, MPFR_RNDN);
        mpfr_sqrt(r19856, r19855, MPFR_RNDN);
        mpfr_mul(r19857, r19836, r19856, MPFR_RNDN);
        mpfr_add(r19858, r19833, r19833, MPFR_RNDN);
        mpfr_mul(r19859, r19839, r19858, MPFR_RNDN);
        mpfr_sqrt(r19860, r19859, MPFR_RNDN);
        mpfr_mul(r19861, r19836, r19860, MPFR_RNDN);
        if (mpfr_get_si(r19848, MPFR_RNDN)) { mpfr_set(r19862, r19857, MPFR_RNDN); } else { mpfr_set(r19862, r19861, MPFR_RNDN); };
        if (mpfr_get_si(r19835, MPFR_RNDN)) { mpfr_set(r19863, r19846, MPFR_RNDN); } else { mpfr_set(r19863, r19862, MPFR_RNDN); };
        return mpfr_get_d(r19863, MPFR_RNDN);
}

static mpfr_t r19864, r19865, r19866, r19867, r19868, r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877, r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887, r19888, r19889, r19890, r19891, r19892, r19893, r19894;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19864);
        mpfr_init_set_str(r19865, "-1.1296622f0", 10, MPFR_RNDN);
        mpfr_init(r19866);
        mpfr_init_set_str(r19867, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init_set_str(r19870, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19871);
        mpfr_init(r19872);
        mpfr_init(r19873);
        mpfr_init(r19874);
        mpfr_init(r19875);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init_set_str(r19878, "2.608007f+19", 10, MPFR_RNDN);
        mpfr_init(r19879);
        mpfr_init(r19880);
        mpfr_init(r19881);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init(r19890);
        mpfr_init(r19891);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19864, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19866, mpfr_cmp(r19864, r19865) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19868, im, MPFR_RNDN);
        mpfr_mul(r19869, r19868, r19868, MPFR_RNDN);
        ;
        mpfr_mul(r19871, r19869, r19870, MPFR_RNDN);
        mpfr_sqrt(r19872, r19871, MPFR_RNDN);
        mpfr_mul(r19873, r19867, r19872, MPFR_RNDN);
        mpfr_neg(r19874, r19864, MPFR_RNDN);
        mpfr_sub(r19875, r19874, r19864, MPFR_RNDN);
        mpfr_sqrt(r19876, r19875, MPFR_RNDN);
        mpfr_div(r19877, r19873, r19876, MPFR_RNDN);
        ;
        mpfr_set_si(r19879, mpfr_cmp(r19864, r19878) <= 0, MPFR_RNDN);
        mpfr_sqr(r19880, r19864, MPFR_RNDN);
        mpfr_add(r19881, r19880, r19869, MPFR_RNDN);
        mpfr_sqrt(r19882, r19881, MPFR_RNDN);
        mpfr_add(r19883, r19864, r19882, MPFR_RNDN);
        mpfr_sqrt(r19884, r19883, MPFR_RNDN);
        mpfr_sqr(r19885, r19884, MPFR_RNDN);
        mpfr_mul(r19886, r19870, r19885, MPFR_RNDN);
        mpfr_sqrt(r19887, r19886, MPFR_RNDN);
        mpfr_mul(r19888, r19867, r19887, MPFR_RNDN);
        mpfr_add(r19889, r19864, r19864, MPFR_RNDN);
        mpfr_mul(r19890, r19870, r19889, MPFR_RNDN);
        mpfr_sqrt(r19891, r19890, MPFR_RNDN);
        mpfr_mul(r19892, r19867, r19891, MPFR_RNDN);
        if (mpfr_get_si(r19879, MPFR_RNDN)) { mpfr_set(r19893, r19888, MPFR_RNDN); } else { mpfr_set(r19893, r19892, MPFR_RNDN); };
        if (mpfr_get_si(r19866, MPFR_RNDN)) { mpfr_set(r19894, r19877, MPFR_RNDN); } else { mpfr_set(r19894, r19893, MPFR_RNDN); };
        return mpfr_get_d(r19894, MPFR_RNDN);
}

