#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 r18551 = 0.5f;
        float r18552 = 2.0f;
        float r18553 = re;
        float r18554 = r18553 * r18553;
        float r18555 = im;
        float r18556 = r18555 * r18555;
        float r18557 = r18554 + r18556;
        float r18558 = sqrt(r18557);
        float r18559 = r18558 + r18553;
        float r18560 = r18552 * r18559;
        float r18561 = sqrt(r18560);
        float r18562 = r18551 * r18561;
        return r18562;
}

double f_id(double re, double im) {
        double r18563 = 0.5;
        double r18564 = 2.0;
        double r18565 = re;
        double r18566 = r18565 * r18565;
        double r18567 = im;
        double r18568 = r18567 * r18567;
        double r18569 = r18566 + r18568;
        double r18570 = sqrt(r18569);
        double r18571 = r18570 + r18565;
        double r18572 = r18564 * r18571;
        double r18573 = sqrt(r18572);
        double r18574 = r18563 * r18573;
        return r18574;
}


double f_of(float re, float im) {
        float r18575 = 0.5f;
        float r18576 = re;
        float r18577 = im;
        float r18578 = hypot(r18576, r18577);
        float r18579 = 2.0f;
        float r18580 = r18579 * r18576;
        float r18581 = fma(r18578, r18579, r18580);
        float r18582 = sqrt(r18581);
        float r18583 = r18575 * r18582;
        return r18583;
}

double f_od(double re, double im) {
        double r18584 = 0.5;
        double r18585 = re;
        double r18586 = im;
        double r18587 = hypot(r18585, r18586);
        double r18588 = 2.0;
        double r18589 = r18588 * r18585;
        double r18590 = fma(r18587, r18588, r18589);
        double r18591 = sqrt(r18590);
        double r18592 = r18584 * r18591;
        return r18592;
}

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 r18593, r18594, r18595, r18596, r18597, r18598, r18599, r18600, r18601, r18602, r18603, r18604;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18593, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18594, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18595);
        mpfr_init(r18596);
        mpfr_init(r18597);
        mpfr_init(r18598);
        mpfr_init(r18599);
        mpfr_init(r18600);
        mpfr_init(r18601);
        mpfr_init(r18602);
        mpfr_init(r18603);
        mpfr_init(r18604);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18595, re, MPFR_RNDN);
        mpfr_mul(r18596, r18595, r18595, MPFR_RNDN);
        mpfr_set_d(r18597, im, MPFR_RNDN);
        mpfr_mul(r18598, r18597, r18597, MPFR_RNDN);
        mpfr_add(r18599, r18596, r18598, MPFR_RNDN);
        mpfr_sqrt(r18600, r18599, MPFR_RNDN);
        mpfr_add(r18601, r18600, r18595, MPFR_RNDN);
        mpfr_mul(r18602, r18594, r18601, MPFR_RNDN);
        mpfr_sqrt(r18603, r18602, MPFR_RNDN);
        mpfr_mul(r18604, r18593, r18603, MPFR_RNDN);
        return mpfr_get_d(r18604, MPFR_RNDN);
}

static mpfr_t r18605, r18606, r18607, r18608, r18609, r18610, r18611, r18612, r18613;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18605, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18606);
        mpfr_init(r18607);
        mpfr_init(r18608);
        mpfr_init_set_str(r18609, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18610);
        mpfr_init(r18611);
        mpfr_init(r18612);
        mpfr_init(r18613);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r18606, re, MPFR_RNDN);
        mpfr_set_d(r18607, im, MPFR_RNDN);
        mpfr_hypot(r18608, r18606, r18607, MPFR_RNDN);
        ;
        mpfr_mul(r18610, r18609, r18606, MPFR_RNDN);
        mpfr_fma(r18611, r18608, r18609, r18610, MPFR_RNDN);
        mpfr_sqrt(r18612, r18611, MPFR_RNDN);
        mpfr_mul(r18613, r18605, r18612, MPFR_RNDN);
        return mpfr_get_d(r18613, MPFR_RNDN);
}

static mpfr_t r18614, r18615, r18616, r18617, r18618, r18619, r18620, r18621, r18622;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18614, "0.5", 10, MPFR_RNDN);
        mpfr_init(r18615);
        mpfr_init(r18616);
        mpfr_init(r18617);
        mpfr_init_set_str(r18618, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18619);
        mpfr_init(r18620);
        mpfr_init(r18621);
        mpfr_init(r18622);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r18615, re, MPFR_RNDN);
        mpfr_set_d(r18616, im, MPFR_RNDN);
        mpfr_hypot(r18617, r18615, r18616, MPFR_RNDN);
        ;
        mpfr_mul(r18619, r18618, r18615, MPFR_RNDN);
        mpfr_fma(r18620, r18617, r18618, r18619, MPFR_RNDN);
        mpfr_sqrt(r18621, r18620, MPFR_RNDN);
        mpfr_mul(r18622, r18614, r18621, MPFR_RNDN);
        return mpfr_get_d(r18622, MPFR_RNDN);
}

