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

double f_id(double re, double im) {
        double r18147 = 0.5;
        double r18148 = 2.0;
        double r18149 = re;
        double r18150 = r18149 * r18149;
        double r18151 = im;
        double r18152 = r18151 * r18151;
        double r18153 = r18150 + r18152;
        double r18154 = sqrt(r18153);
        double r18155 = r18154 + r18149;
        double r18156 = r18148 * r18155;
        double r18157 = sqrt(r18156);
        double r18158 = r18147 * r18157;
        return r18158;
}


double f_of(float re, float im) {
        float r18159 = 0.5f;
        float r18160 = re;
        float r18161 = im;
        float r18162 = hypot(r18160, r18161);
        float r18163 = 2.0f;
        float r18164 = r18163 * r18160;
        float r18165 = fma(r18162, r18163, r18164);
        float r18166 = sqrt(r18165);
        float r18167 = r18159 * r18166;
        return r18167;
}

double f_od(double re, double im) {
        double r18168 = 0.5;
        double r18169 = re;
        double r18170 = im;
        double r18171 = hypot(r18169, r18170);
        double r18172 = 2.0;
        double r18173 = r18172 * r18169;
        double r18174 = fma(r18171, r18172, r18173);
        double r18175 = sqrt(r18174);
        double r18176 = r18168 * r18175;
        return r18176;
}

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 r18177, r18178, r18179, r18180, r18181, r18182, r18183, r18184, r18185, r18186, r18187, r18188;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18177, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18178, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18179);
        mpfr_init(r18180);
        mpfr_init(r18181);
        mpfr_init(r18182);
        mpfr_init(r18183);
        mpfr_init(r18184);
        mpfr_init(r18185);
        mpfr_init(r18186);
        mpfr_init(r18187);
        mpfr_init(r18188);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18179, re, MPFR_RNDN);
        mpfr_mul(r18180, r18179, r18179, MPFR_RNDN);
        mpfr_set_d(r18181, im, MPFR_RNDN);
        mpfr_mul(r18182, r18181, r18181, MPFR_RNDN);
        mpfr_add(r18183, r18180, r18182, MPFR_RNDN);
        mpfr_sqrt(r18184, r18183, MPFR_RNDN);
        mpfr_add(r18185, r18184, r18179, MPFR_RNDN);
        mpfr_mul(r18186, r18178, r18185, MPFR_RNDN);
        mpfr_sqrt(r18187, r18186, MPFR_RNDN);
        mpfr_mul(r18188, r18177, r18187, MPFR_RNDN);
        return mpfr_get_d(r18188, MPFR_RNDN);
}

static mpfr_t r18189, r18190, r18191, r18192, r18193, r18194, r18195, r18196, r18197;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18189, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18190);
        mpfr_init(r18191);
        mpfr_init(r18192);
        mpfr_init_set_str(r18193, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18194);
        mpfr_init(r18195);
        mpfr_init(r18196);
        mpfr_init(r18197);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r18190, re, MPFR_RNDN);
        mpfr_set_d(r18191, im, MPFR_RNDN);
        mpfr_hypot(r18192, r18190, r18191, MPFR_RNDN);
        ;
        mpfr_mul(r18194, r18193, r18190, MPFR_RNDN);
        mpfr_fma(r18195, r18192, r18193, r18194, MPFR_RNDN);
        mpfr_sqrt(r18196, r18195, MPFR_RNDN);
        mpfr_mul(r18197, r18189, r18196, MPFR_RNDN);
        return mpfr_get_d(r18197, MPFR_RNDN);
}

static mpfr_t r18198, r18199, r18200, r18201, r18202, r18203, r18204, r18205, r18206;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18198, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18199);
        mpfr_init(r18200);
        mpfr_init(r18201);
        mpfr_init_set_str(r18202, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18203);
        mpfr_init(r18204);
        mpfr_init(r18205);
        mpfr_init(r18206);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r18199, re, MPFR_RNDN);
        mpfr_set_d(r18200, im, MPFR_RNDN);
        mpfr_hypot(r18201, r18199, r18200, MPFR_RNDN);
        ;
        mpfr_mul(r18203, r18202, r18199, MPFR_RNDN);
        mpfr_fma(r18204, r18201, r18202, r18203, MPFR_RNDN);
        mpfr_sqrt(r18205, r18204, MPFR_RNDN);
        mpfr_mul(r18206, r18198, r18205, MPFR_RNDN);
        return mpfr_get_d(r18206, MPFR_RNDN);
}

