#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 r18131 = 0.5f;
        float r18132 = 2.0f;
        float r18133 = re;
        float r18134 = r18133 * r18133;
        float r18135 = im;
        float r18136 = r18135 * r18135;
        float r18137 = r18134 + r18136;
        float r18138 = sqrt(r18137);
        float r18139 = r18138 + r18133;
        float r18140 = r18132 * r18139;
        float r18141 = sqrt(r18140);
        float r18142 = r18131 * r18141;
        return r18142;
}

double f_id(double re, double im) {
        double r18143 = 0.5;
        double r18144 = 2.0;
        double r18145 = re;
        double r18146 = r18145 * r18145;
        double r18147 = im;
        double r18148 = r18147 * r18147;
        double r18149 = r18146 + r18148;
        double r18150 = sqrt(r18149);
        double r18151 = r18150 + r18145;
        double r18152 = r18144 * r18151;
        double r18153 = sqrt(r18152);
        double r18154 = r18143 * r18153;
        return r18154;
}


double f_of(float re, float im) {
        float r18155 = 0.5f;
        float r18156 = re;
        float r18157 = im;
        float r18158 = hypot(r18156, r18157);
        float r18159 = 2.0f;
        float r18160 = r18159 * r18156;
        float r18161 = fma(r18158, r18159, r18160);
        float r18162 = sqrt(r18161);
        float r18163 = r18155 * r18162;
        return r18163;
}

double f_od(double re, double im) {
        double r18164 = 0.5;
        double r18165 = re;
        double r18166 = im;
        double r18167 = hypot(r18165, r18166);
        double r18168 = 2.0;
        double r18169 = r18168 * r18165;
        double r18170 = fma(r18167, r18168, r18169);
        double r18171 = sqrt(r18170);
        double r18172 = r18164 * r18171;
        return r18172;
}

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 r18173, r18174, r18175, r18176, r18177, r18178, r18179, r18180, r18181, r18182, r18183, r18184;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18173, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18174, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18175);
        mpfr_init(r18176);
        mpfr_init(r18177);
        mpfr_init(r18178);
        mpfr_init(r18179);
        mpfr_init(r18180);
        mpfr_init(r18181);
        mpfr_init(r18182);
        mpfr_init(r18183);
        mpfr_init(r18184);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18175, re, MPFR_RNDN);
        mpfr_mul(r18176, r18175, r18175, MPFR_RNDN);
        mpfr_set_d(r18177, im, MPFR_RNDN);
        mpfr_mul(r18178, r18177, r18177, MPFR_RNDN);
        mpfr_add(r18179, r18176, r18178, MPFR_RNDN);
        mpfr_sqrt(r18180, r18179, MPFR_RNDN);
        mpfr_add(r18181, r18180, r18175, MPFR_RNDN);
        mpfr_mul(r18182, r18174, r18181, MPFR_RNDN);
        mpfr_sqrt(r18183, r18182, MPFR_RNDN);
        mpfr_mul(r18184, r18173, r18183, MPFR_RNDN);
        return mpfr_get_d(r18184, MPFR_RNDN);
}

static mpfr_t r18185, r18186, r18187, r18188, r18189, r18190, r18191, r18192, r18193;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18185, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18186);
        mpfr_init(r18187);
        mpfr_init(r18188);
        mpfr_init_set_str(r18189, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18190);
        mpfr_init(r18191);
        mpfr_init(r18192);
        mpfr_init(r18193);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r18186, re, MPFR_RNDN);
        mpfr_set_d(r18187, im, MPFR_RNDN);
        mpfr_hypot(r18188, r18186, r18187, MPFR_RNDN);
        ;
        mpfr_mul(r18190, r18189, r18186, MPFR_RNDN);
        mpfr_fma(r18191, r18188, r18189, r18190, MPFR_RNDN);
        mpfr_sqrt(r18192, r18191, MPFR_RNDN);
        mpfr_mul(r18193, r18185, r18192, MPFR_RNDN);
        return mpfr_get_d(r18193, MPFR_RNDN);
}

static mpfr_t r18194, r18195, r18196, r18197, r18198, r18199, r18200, r18201, r18202;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18194, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18195);
        mpfr_init(r18196);
        mpfr_init(r18197);
        mpfr_init_set_str(r18198, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18199);
        mpfr_init(r18200);
        mpfr_init(r18201);
        mpfr_init(r18202);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r18195, re, MPFR_RNDN);
        mpfr_set_d(r18196, im, MPFR_RNDN);
        mpfr_hypot(r18197, r18195, r18196, MPFR_RNDN);
        ;
        mpfr_mul(r18199, r18198, r18195, MPFR_RNDN);
        mpfr_fma(r18200, r18197, r18198, r18199, MPFR_RNDN);
        mpfr_sqrt(r18201, r18200, MPFR_RNDN);
        mpfr_mul(r18202, r18194, r18201, MPFR_RNDN);
        return mpfr_get_d(r18202, MPFR_RNDN);
}

