#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 r11788 = 0.5;
        float r11789 = 2.0;
        float r11790 = re;
        float r11791 = r11790 * r11790;
        float r11792 = im;
        float r11793 = r11792 * r11792;
        float r11794 = r11791 + r11793;
        float r11795 = sqrt(r11794);
        float r11796 = r11795 + r11790;
        float r11797 = r11789 * r11796;
        float r11798 = sqrt(r11797);
        float r11799 = r11788 * r11798;
        return r11799;
}

double f_id(double re, double im) {
        double r11800 = 0.5;
        double r11801 = 2.0;
        double r11802 = re;
        double r11803 = r11802 * r11802;
        double r11804 = im;
        double r11805 = r11804 * r11804;
        double r11806 = r11803 + r11805;
        double r11807 = sqrt(r11806);
        double r11808 = r11807 + r11802;
        double r11809 = r11801 * r11808;
        double r11810 = sqrt(r11809);
        double r11811 = r11800 * r11810;
        return r11811;
}


double f_of(float re, float im) {
        float r11812 = 0.5;
        float r11813 = 2.0;
        float r11814 = re;
        float r11815 = im;
        float r11816 = hypot(r11814, r11815);
        float r11817 = r11814 * r11813;
        float r11818 = fma(r11813, r11816, r11817);
        float r11819 = sqrt(r11818);
        float r11820 = r11812 * r11819;
        return r11820;
}

double f_od(double re, double im) {
        double r11821 = 0.5;
        double r11822 = 2.0;
        double r11823 = re;
        double r11824 = im;
        double r11825 = hypot(r11823, r11824);
        double r11826 = r11823 * r11822;
        double r11827 = fma(r11822, r11825, r11826);
        double r11828 = sqrt(r11827);
        double r11829 = r11821 * r11828;
        return r11829;
}

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 r11830, r11831, r11832, r11833, r11834, r11835, r11836, r11837, r11838, r11839, r11840, r11841;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11830, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11831, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11832);
        mpfr_init(r11833);
        mpfr_init(r11834);
        mpfr_init(r11835);
        mpfr_init(r11836);
        mpfr_init(r11837);
        mpfr_init(r11838);
        mpfr_init(r11839);
        mpfr_init(r11840);
        mpfr_init(r11841);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r11832, re, MPFR_RNDN);
        mpfr_mul(r11833, r11832, r11832, MPFR_RNDN);
        mpfr_set_d(r11834, im, MPFR_RNDN);
        mpfr_mul(r11835, r11834, r11834, MPFR_RNDN);
        mpfr_add(r11836, r11833, r11835, MPFR_RNDN);
        mpfr_sqrt(r11837, r11836, MPFR_RNDN);
        mpfr_add(r11838, r11837, r11832, MPFR_RNDN);
        mpfr_mul(r11839, r11831, r11838, MPFR_RNDN);
        mpfr_sqrt(r11840, r11839, MPFR_RNDN);
        mpfr_mul(r11841, r11830, r11840, MPFR_RNDN);
        return mpfr_get_d(r11841, MPFR_RNDN);
}

static mpfr_t r11842, r11843, r11844, r11845, r11846, r11847, r11848, r11849, r11850;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11842, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11843, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11844);
        mpfr_init(r11845);
        mpfr_init(r11846);
        mpfr_init(r11847);
        mpfr_init(r11848);
        mpfr_init(r11849);
        mpfr_init(r11850);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_set_d(r11844, re, MPFR_RNDN);
        mpfr_set_d(r11845, im, MPFR_RNDN);
        mpfr_hypot(r11846, r11844, r11845, MPFR_RNDN);
        mpfr_mul(r11847, r11844, r11843, MPFR_RNDN);
        mpfr_fma(r11848, r11843, r11846, r11847, MPFR_RNDN);
        mpfr_sqrt(r11849, r11848, MPFR_RNDN);
        mpfr_mul(r11850, r11842, r11849, MPFR_RNDN);
        return mpfr_get_d(r11850, MPFR_RNDN);
}

static mpfr_t r11851, r11852, r11853, r11854, r11855, r11856, r11857, r11858, r11859;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11851, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11852, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11853);
        mpfr_init(r11854);
        mpfr_init(r11855);
        mpfr_init(r11856);
        mpfr_init(r11857);
        mpfr_init(r11858);
        mpfr_init(r11859);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_set_d(r11853, re, MPFR_RNDN);
        mpfr_set_d(r11854, im, MPFR_RNDN);
        mpfr_hypot(r11855, r11853, r11854, MPFR_RNDN);
        mpfr_mul(r11856, r11853, r11852, MPFR_RNDN);
        mpfr_fma(r11857, r11852, r11855, r11856, MPFR_RNDN);
        mpfr_sqrt(r11858, r11857, MPFR_RNDN);
        mpfr_mul(r11859, r11851, r11858, MPFR_RNDN);
        return mpfr_get_d(r11859, MPFR_RNDN);
}

