#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 r11246 = 0.5f;
        float r11247 = 2.0f;
        float r11248 = re;
        float r11249 = r11248 * r11248;
        float r11250 = im;
        float r11251 = r11250 * r11250;
        float r11252 = r11249 + r11251;
        float r11253 = sqrt(r11252);
        float r11254 = r11253 + r11248;
        float r11255 = r11247 * r11254;
        float r11256 = sqrt(r11255);
        float r11257 = r11246 * r11256;
        return r11257;
}

double f_id(double re, double im) {
        double r11258 = 0.5;
        double r11259 = 2.0;
        double r11260 = re;
        double r11261 = r11260 * r11260;
        double r11262 = im;
        double r11263 = r11262 * r11262;
        double r11264 = r11261 + r11263;
        double r11265 = sqrt(r11264);
        double r11266 = r11265 + r11260;
        double r11267 = r11259 * r11266;
        double r11268 = sqrt(r11267);
        double r11269 = r11258 * r11268;
        return r11269;
}


double f_of(float re, float im) {
        float r11270 = re;
        float r11271 = im;
        float r11272 = hypot(r11270, r11271);
        float r11273 = 2.0f;
        float r11274 = r11270 * r11273;
        float r11275 = fma(r11272, r11273, r11274);
        float r11276 = sqrt(r11275);
        float r11277 = 0.5f;
        float r11278 = r11276 * r11277;
        return r11278;
}

double f_od(double re, double im) {
        double r11279 = re;
        double r11280 = im;
        double r11281 = hypot(r11279, r11280);
        double r11282 = 2.0;
        double r11283 = r11279 * r11282;
        double r11284 = fma(r11281, r11282, r11283);
        double r11285 = sqrt(r11284);
        double r11286 = 0.5;
        double r11287 = r11285 * r11286;
        return r11287;
}

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 r11288, r11289, r11290, r11291, r11292, r11293, r11294, r11295, r11296, r11297, r11298, r11299;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r11288, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11289, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11290);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
        mpfr_init(r11295);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init(r11299);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r11290, re, MPFR_RNDN);
        mpfr_mul(r11291, r11290, r11290, MPFR_RNDN);
        mpfr_set_d(r11292, im, MPFR_RNDN);
        mpfr_mul(r11293, r11292, r11292, MPFR_RNDN);
        mpfr_add(r11294, r11291, r11293, MPFR_RNDN);
        mpfr_sqrt(r11295, r11294, MPFR_RNDN);
        mpfr_add(r11296, r11295, r11290, MPFR_RNDN);
        mpfr_mul(r11297, r11289, r11296, MPFR_RNDN);
        mpfr_sqrt(r11298, r11297, MPFR_RNDN);
        mpfr_mul(r11299, r11288, r11298, MPFR_RNDN);
        return mpfr_get_d(r11299, MPFR_RNDN);
}

static mpfr_t r11300, r11301, r11302, r11303, r11304, r11305, r11306, r11307, r11308;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init_set_str(r11303, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11304);
        mpfr_init(r11305);
        mpfr_init(r11306);
        mpfr_init_set_str(r11307, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11308);
}

double f_fm(double re, double im) {
        mpfr_set_d(r11300, re, MPFR_RNDN);
        mpfr_set_d(r11301, im, MPFR_RNDN);
        mpfr_hypot(r11302, r11300, r11301, MPFR_RNDN);
        ;
        mpfr_mul(r11304, r11300, r11303, MPFR_RNDN);
        mpfr_fma(r11305, r11302, r11303, r11304, MPFR_RNDN);
        mpfr_sqrt(r11306, r11305, MPFR_RNDN);
        ;
        mpfr_mul(r11308, r11306, r11307, MPFR_RNDN);
        return mpfr_get_d(r11308, MPFR_RNDN);
}

static mpfr_t r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init_set_str(r11312, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11313);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init_set_str(r11316, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11317);
}

double f_dm(double re, double im) {
        mpfr_set_d(r11309, re, MPFR_RNDN);
        mpfr_set_d(r11310, im, MPFR_RNDN);
        mpfr_hypot(r11311, r11309, r11310, MPFR_RNDN);
        ;
        mpfr_mul(r11313, r11309, r11312, MPFR_RNDN);
        mpfr_fma(r11314, r11311, r11312, r11313, MPFR_RNDN);
        mpfr_sqrt(r11315, r11314, MPFR_RNDN);
        ;
        mpfr_mul(r11317, r11315, r11316, MPFR_RNDN);
        return mpfr_get_d(r11317, MPFR_RNDN);
}

