#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 r18618 = 0.5f;
        float r18619 = 2.0f;
        float r18620 = re;
        float r18621 = r18620 * r18620;
        float r18622 = im;
        float r18623 = r18622 * r18622;
        float r18624 = r18621 + r18623;
        float r18625 = sqrt(r18624);
        float r18626 = r18625 + r18620;
        float r18627 = r18619 * r18626;
        float r18628 = sqrt(r18627);
        float r18629 = r18618 * r18628;
        return r18629;
}

double f_id(double re, double im) {
        double r18630 = 0.5;
        double r18631 = 2.0;
        double r18632 = re;
        double r18633 = r18632 * r18632;
        double r18634 = im;
        double r18635 = r18634 * r18634;
        double r18636 = r18633 + r18635;
        double r18637 = sqrt(r18636);
        double r18638 = r18637 + r18632;
        double r18639 = r18631 * r18638;
        double r18640 = sqrt(r18639);
        double r18641 = r18630 * r18640;
        return r18641;
}


double f_of(float re, float im) {
        float r18642 = re;
        float r18643 = -2.1982211190207934e-11f;
        bool r18644 = r18642 <= r18643;
        float r18645 = 0.5f;
        float r18646 = 2.0f;
        float r18647 = im;
        float r18648 = r18646 * r18647;
        float r18649 = r18648 * r18647;
        float r18650 = sqrt(r18649);
        float r18651 = r18642 * r18642;
        float r18652 = r18647 * r18647;
        float r18653 = r18651 + r18652;
        float r18654 = sqrt(r18653);
        float r18655 = r18654 - r18642;
        float r18656 = sqrt(r18655);
        float r18657 = r18650 / r18656;
        float r18658 = r18645 * r18657;
        float r18659 = 283633231331328.0f;
        bool r18660 = r18642 <= r18659;
        float r18661 = r18642 * r18642;
        float r18662 = r18661 + r18652;
        float r18663 = sqrt(r18662);
        float r18664 = r18663 + r18642;
        float r18665 = r18646 * r18664;
        float r18666 = sqrt(r18665);
        float r18667 = r18645 * r18666;
        float r18668 = r18642 + r18642;
        float r18669 = r18646 * r18668;
        float r18670 = sqrt(r18669);
        float r18671 = r18645 * r18670;
        float r18672 = r18660 ? r18667 : r18671;
        float r18673 = r18644 ? r18658 : r18672;
        return r18673;
}

double f_od(double re, double im) {
        double r18674 = re;
        double r18675 = -2.1982211190207934e-11;
        bool r18676 = r18674 <= r18675;
        double r18677 = 0.5;
        double r18678 = 2.0;
        double r18679 = im;
        double r18680 = r18678 * r18679;
        double r18681 = r18680 * r18679;
        double r18682 = sqrt(r18681);
        double r18683 = r18674 * r18674;
        double r18684 = r18679 * r18679;
        double r18685 = r18683 + r18684;
        double r18686 = sqrt(r18685);
        double r18687 = r18686 - r18674;
        double r18688 = sqrt(r18687);
        double r18689 = r18682 / r18688;
        double r18690 = r18677 * r18689;
        double r18691 = 283633231331328.0;
        bool r18692 = r18674 <= r18691;
        double r18693 = r18674 * r18674;
        double r18694 = r18693 + r18684;
        double r18695 = sqrt(r18694);
        double r18696 = r18695 + r18674;
        double r18697 = r18678 * r18696;
        double r18698 = sqrt(r18697);
        double r18699 = r18677 * r18698;
        double r18700 = r18674 + r18674;
        double r18701 = r18678 * r18700;
        double r18702 = sqrt(r18701);
        double r18703 = r18677 * r18702;
        double r18704 = r18692 ? r18699 : r18703;
        double r18705 = r18676 ? r18690 : r18704;
        return r18705;
}

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 r18706, r18707, r18708, r18709, r18710, r18711, r18712, r18713, r18714, r18715, r18716, r18717;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18706, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18707, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init(r18711);
        mpfr_init(r18712);
        mpfr_init(r18713);
        mpfr_init(r18714);
        mpfr_init(r18715);
        mpfr_init(r18716);
        mpfr_init(r18717);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18708, re, MPFR_RNDN);
        mpfr_mul(r18709, r18708, r18708, MPFR_RNDN);
        mpfr_set_d(r18710, im, MPFR_RNDN);
        mpfr_mul(r18711, r18710, r18710, MPFR_RNDN);
        mpfr_add(r18712, r18709, r18711, MPFR_RNDN);
        mpfr_sqrt(r18713, r18712, MPFR_RNDN);
        mpfr_add(r18714, r18713, r18708, MPFR_RNDN);
        mpfr_mul(r18715, r18707, r18714, MPFR_RNDN);
        mpfr_sqrt(r18716, r18715, MPFR_RNDN);
        mpfr_mul(r18717, r18706, r18716, MPFR_RNDN);
        return mpfr_get_d(r18717, MPFR_RNDN);
}

static mpfr_t r18718, r18719, r18720, r18721, r18722, r18723, r18724, r18725, r18726, r18727, r18728, r18729, r18730, r18731, r18732, r18733, r18734, r18735, r18736, r18737, r18738, r18739, r18740, r18741, r18742, r18743, r18744, r18745, r18746, r18747, r18748, r18749;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18718);
        mpfr_init_set_str(r18719, "-2.1982211f-11", 10, MPFR_RNDN);
        mpfr_init(r18720);
        mpfr_init_set_str(r18721, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18722, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18723);
        mpfr_init(r18724);
        mpfr_init(r18725);
        mpfr_init(r18726);
        mpfr_init(r18727);
        mpfr_init(r18728);
        mpfr_init(r18729);
        mpfr_init(r18730);
        mpfr_init(r18731);
        mpfr_init(r18732);
        mpfr_init(r18733);
        mpfr_init(r18734);
        mpfr_init_set_str(r18735, "2.8363323f+14", 10, MPFR_RNDN);
        mpfr_init(r18736);
        mpfr_init(r18737);
        mpfr_init(r18738);
        mpfr_init(r18739);
        mpfr_init(r18740);
        mpfr_init(r18741);
        mpfr_init(r18742);
        mpfr_init(r18743);
        mpfr_init(r18744);
        mpfr_init(r18745);
        mpfr_init(r18746);
        mpfr_init(r18747);
        mpfr_init(r18748);
        mpfr_init(r18749);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18718, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18720, mpfr_cmp(r18718, r18719) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18723, im, MPFR_RNDN);
        mpfr_mul(r18724, r18722, r18723, MPFR_RNDN);
        mpfr_mul(r18725, r18724, r18723, MPFR_RNDN);
        mpfr_sqrt(r18726, r18725, MPFR_RNDN);
        mpfr_sqr(r18727, r18718, MPFR_RNDN);
        mpfr_mul(r18728, r18723, r18723, MPFR_RNDN);
        mpfr_add(r18729, r18727, r18728, MPFR_RNDN);
        mpfr_sqrt(r18730, r18729, MPFR_RNDN);
        mpfr_sub(r18731, r18730, r18718, MPFR_RNDN);
        mpfr_sqrt(r18732, r18731, MPFR_RNDN);
        mpfr_div(r18733, r18726, r18732, MPFR_RNDN);
        mpfr_mul(r18734, r18721, r18733, MPFR_RNDN);
        ;
        mpfr_set_si(r18736, mpfr_cmp(r18718, r18735) <= 0, MPFR_RNDN);
        mpfr_mul(r18737, r18718, r18718, MPFR_RNDN);
        mpfr_add(r18738, r18737, r18728, MPFR_RNDN);
        mpfr_sqrt(r18739, r18738, MPFR_RNDN);
        mpfr_add(r18740, r18739, r18718, MPFR_RNDN);
        mpfr_mul(r18741, r18722, r18740, MPFR_RNDN);
        mpfr_sqrt(r18742, r18741, MPFR_RNDN);
        mpfr_mul(r18743, r18721, r18742, MPFR_RNDN);
        mpfr_add(r18744, r18718, r18718, MPFR_RNDN);
        mpfr_mul(r18745, r18722, r18744, MPFR_RNDN);
        mpfr_sqrt(r18746, r18745, MPFR_RNDN);
        mpfr_mul(r18747, r18721, r18746, MPFR_RNDN);
        if (mpfr_get_si(r18736, MPFR_RNDN)) { mpfr_set(r18748, r18743, MPFR_RNDN); } else { mpfr_set(r18748, r18747, MPFR_RNDN); };
        if (mpfr_get_si(r18720, MPFR_RNDN)) { mpfr_set(r18749, r18734, MPFR_RNDN); } else { mpfr_set(r18749, r18748, MPFR_RNDN); };
        return mpfr_get_d(r18749, MPFR_RNDN);
}

static mpfr_t r18750, r18751, r18752, r18753, r18754, r18755, r18756, r18757, r18758, r18759, r18760, r18761, r18762, r18763, r18764, r18765, r18766, r18767, r18768, r18769, r18770, r18771, r18772, r18773, r18774, r18775, r18776, r18777, r18778, r18779, r18780, r18781;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18750);
        mpfr_init_set_str(r18751, "-2.1982211f-11", 10, MPFR_RNDN);
        mpfr_init(r18752);
        mpfr_init_set_str(r18753, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18754, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18755);
        mpfr_init(r18756);
        mpfr_init(r18757);
        mpfr_init(r18758);
        mpfr_init(r18759);
        mpfr_init(r18760);
        mpfr_init(r18761);
        mpfr_init(r18762);
        mpfr_init(r18763);
        mpfr_init(r18764);
        mpfr_init(r18765);
        mpfr_init(r18766);
        mpfr_init_set_str(r18767, "2.8363323f+14", 10, MPFR_RNDN);
        mpfr_init(r18768);
        mpfr_init(r18769);
        mpfr_init(r18770);
        mpfr_init(r18771);
        mpfr_init(r18772);
        mpfr_init(r18773);
        mpfr_init(r18774);
        mpfr_init(r18775);
        mpfr_init(r18776);
        mpfr_init(r18777);
        mpfr_init(r18778);
        mpfr_init(r18779);
        mpfr_init(r18780);
        mpfr_init(r18781);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18750, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18752, mpfr_cmp(r18750, r18751) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18755, im, MPFR_RNDN);
        mpfr_mul(r18756, r18754, r18755, MPFR_RNDN);
        mpfr_mul(r18757, r18756, r18755, MPFR_RNDN);
        mpfr_sqrt(r18758, r18757, MPFR_RNDN);
        mpfr_sqr(r18759, r18750, MPFR_RNDN);
        mpfr_mul(r18760, r18755, r18755, MPFR_RNDN);
        mpfr_add(r18761, r18759, r18760, MPFR_RNDN);
        mpfr_sqrt(r18762, r18761, MPFR_RNDN);
        mpfr_sub(r18763, r18762, r18750, MPFR_RNDN);
        mpfr_sqrt(r18764, r18763, MPFR_RNDN);
        mpfr_div(r18765, r18758, r18764, MPFR_RNDN);
        mpfr_mul(r18766, r18753, r18765, MPFR_RNDN);
        ;
        mpfr_set_si(r18768, mpfr_cmp(r18750, r18767) <= 0, MPFR_RNDN);
        mpfr_mul(r18769, r18750, r18750, MPFR_RNDN);
        mpfr_add(r18770, r18769, r18760, MPFR_RNDN);
        mpfr_sqrt(r18771, r18770, MPFR_RNDN);
        mpfr_add(r18772, r18771, r18750, MPFR_RNDN);
        mpfr_mul(r18773, r18754, r18772, MPFR_RNDN);
        mpfr_sqrt(r18774, r18773, MPFR_RNDN);
        mpfr_mul(r18775, r18753, r18774, MPFR_RNDN);
        mpfr_add(r18776, r18750, r18750, MPFR_RNDN);
        mpfr_mul(r18777, r18754, r18776, MPFR_RNDN);
        mpfr_sqrt(r18778, r18777, MPFR_RNDN);
        mpfr_mul(r18779, r18753, r18778, MPFR_RNDN);
        if (mpfr_get_si(r18768, MPFR_RNDN)) { mpfr_set(r18780, r18775, MPFR_RNDN); } else { mpfr_set(r18780, r18779, MPFR_RNDN); };
        if (mpfr_get_si(r18752, MPFR_RNDN)) { mpfr_set(r18781, r18766, MPFR_RNDN); } else { mpfr_set(r18781, r18780, MPFR_RNDN); };
        return mpfr_get_d(r18781, MPFR_RNDN);
}

