#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 r28171 = 0.5;
        float r28172 = 2.0;
        float r28173 = re;
        float r28174 = r28173 * r28173;
        float r28175 = im;
        float r28176 = r28175 * r28175;
        float r28177 = r28174 + r28176;
        float r28178 = sqrt(r28177);
        float r28179 = r28178 + r28173;
        float r28180 = r28172 * r28179;
        float r28181 = sqrt(r28180);
        float r28182 = r28171 * r28181;
        return r28182;
}

double f_id(double re, double im) {
        double r28183 = 0.5;
        double r28184 = 2.0;
        double r28185 = re;
        double r28186 = r28185 * r28185;
        double r28187 = im;
        double r28188 = r28187 * r28187;
        double r28189 = r28186 + r28188;
        double r28190 = sqrt(r28189);
        double r28191 = r28190 + r28185;
        double r28192 = r28184 * r28191;
        double r28193 = sqrt(r28192);
        double r28194 = r28183 * r28193;
        return r28194;
}


double f_of(float re, float im) {
        float r28195 = 0.5;
        float r28196 = re;
        float r28197 = im;
        float r28198 = hypot(r28196, r28197);
        float r28199 = 2.0;
        float r28200 = r28196 * r28199;
        float r28201 = fma(r28198, r28199, r28200);
        float r28202 = sqrt(r28201);
        float r28203 = r28195 * r28202;
        return r28203;
}

double f_od(double re, double im) {
        double r28204 = 0.5;
        double r28205 = re;
        double r28206 = im;
        double r28207 = hypot(r28205, r28206);
        double r28208 = 2.0;
        double r28209 = r28205 * r28208;
        double r28210 = fma(r28207, r28208, r28209);
        double r28211 = sqrt(r28210);
        double r28212 = r28204 * r28211;
        return r28212;
}

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 r28213, r28214, r28215, r28216, r28217, r28218, r28219, r28220, r28221, r28222, r28223, r28224;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28213, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28214, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28215);
        mpfr_init(r28216);
        mpfr_init(r28217);
        mpfr_init(r28218);
        mpfr_init(r28219);
        mpfr_init(r28220);
        mpfr_init(r28221);
        mpfr_init(r28222);
        mpfr_init(r28223);
        mpfr_init(r28224);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28215, re, MPFR_RNDN);
        mpfr_mul(r28216, r28215, r28215, MPFR_RNDN);
        mpfr_set_d(r28217, im, MPFR_RNDN);
        mpfr_mul(r28218, r28217, r28217, MPFR_RNDN);
        mpfr_add(r28219, r28216, r28218, MPFR_RNDN);
        mpfr_sqrt(r28220, r28219, MPFR_RNDN);
        mpfr_add(r28221, r28220, r28215, MPFR_RNDN);
        mpfr_mul(r28222, r28214, r28221, MPFR_RNDN);
        mpfr_sqrt(r28223, r28222, MPFR_RNDN);
        mpfr_mul(r28224, r28213, r28223, MPFR_RNDN);
        return mpfr_get_d(r28224, MPFR_RNDN);
}

static mpfr_t r28225, r28226, r28227, r28228, r28229, r28230, r28231, r28232, r28233;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28225, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28226);
        mpfr_init(r28227);
        mpfr_init(r28228);
        mpfr_init_set_str(r28229, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28230);
        mpfr_init(r28231);
        mpfr_init(r28232);
        mpfr_init(r28233);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r28226, re, MPFR_RNDN);
        mpfr_set_d(r28227, im, MPFR_RNDN);
        mpfr_hypot(r28228, r28226, r28227, MPFR_RNDN);
        ;
        mpfr_mul(r28230, r28226, r28229, MPFR_RNDN);
        mpfr_fma(r28231, r28228, r28229, r28230, MPFR_RNDN);
        mpfr_sqrt(r28232, r28231, MPFR_RNDN);
        mpfr_mul(r28233, r28225, r28232, MPFR_RNDN);
        return mpfr_get_d(r28233, MPFR_RNDN);
}

static mpfr_t r28234, r28235, r28236, r28237, r28238, r28239, r28240, r28241, r28242;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r28234, "0.5", 10, MPFR_RNDN);
        mpfr_init(r28235);
        mpfr_init(r28236);
        mpfr_init(r28237);
        mpfr_init_set_str(r28238, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28239);
        mpfr_init(r28240);
        mpfr_init(r28241);
        mpfr_init(r28242);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r28235, re, MPFR_RNDN);
        mpfr_set_d(r28236, im, MPFR_RNDN);
        mpfr_hypot(r28237, r28235, r28236, MPFR_RNDN);
        ;
        mpfr_mul(r28239, r28235, r28238, MPFR_RNDN);
        mpfr_fma(r28240, r28237, r28238, r28239, MPFR_RNDN);
        mpfr_sqrt(r28241, r28240, MPFR_RNDN);
        mpfr_mul(r28242, r28234, r28241, MPFR_RNDN);
        return mpfr_get_d(r28242, MPFR_RNDN);
}

