#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 r19551 = 0.5f;
        float r19552 = 2.0f;
        float r19553 = re;
        float r19554 = r19553 * r19553;
        float r19555 = im;
        float r19556 = r19555 * r19555;
        float r19557 = r19554 + r19556;
        float r19558 = sqrt(r19557);
        float r19559 = r19558 + r19553;
        float r19560 = r19552 * r19559;
        float r19561 = sqrt(r19560);
        float r19562 = r19551 * r19561;
        return r19562;
}

double f_id(double re, double im) {
        double r19563 = 0.5;
        double r19564 = 2.0;
        double r19565 = re;
        double r19566 = r19565 * r19565;
        double r19567 = im;
        double r19568 = r19567 * r19567;
        double r19569 = r19566 + r19568;
        double r19570 = sqrt(r19569);
        double r19571 = r19570 + r19565;
        double r19572 = r19564 * r19571;
        double r19573 = sqrt(r19572);
        double r19574 = r19563 * r19573;
        return r19574;
}


double f_of(float re, float im) {
        float r19575 = re;
        float r19576 = -5.001969231040948e+151f;
        bool r19577 = r19575 <= r19576;
        float r19578 = 0.5f;
        float r19579 = im;
        float r19580 = r19579 * r19579;
        float r19581 = 2.0f;
        float r19582 = r19580 * r19581;
        float r19583 = sqrt(r19582);
        float r19584 = r19578 * r19583;
        float r19585 = -r19575;
        float r19586 = r19585 - r19575;
        float r19587 = sqrt(r19586);
        float r19588 = r19584 / r19587;
        float r19589 = 4.633757336962986e-280f;
        bool r19590 = r19575 <= r19589;
        float r19591 = r19575 * r19575;
        float r19592 = r19591 + r19580;
        float r19593 = sqrt(r19592);
        float r19594 = r19593 - r19575;
        float r19595 = r19580 / r19594;
        float r19596 = r19581 * r19595;
        float r19597 = sqrt(r19596);
        float r19598 = r19578 * r19597;
        float r19599 = 9.113198184177213e-181f;
        bool r19600 = r19575 <= r19599;
        float r19601 = r19579 + r19575;
        float r19602 = r19581 * r19601;
        float r19603 = sqrt(r19602);
        float r19604 = r19578 * r19603;
        float r19605 = 2.8291641631335695e-146f;
        bool r19606 = r19575 <= r19605;
        float r19607 = r19575 + r19575;
        float r19608 = r19581 * r19607;
        float r19609 = sqrt(r19608);
        float r19610 = r19578 * r19609;
        float r19611 = r19606 ? r19598 : r19610;
        float r19612 = r19600 ? r19604 : r19611;
        float r19613 = r19590 ? r19598 : r19612;
        float r19614 = r19577 ? r19588 : r19613;
        return r19614;
}

double f_od(double re, double im) {
        double r19615 = re;
        double r19616 = -5.001969231040948e+151;
        bool r19617 = r19615 <= r19616;
        double r19618 = 0.5;
        double r19619 = im;
        double r19620 = r19619 * r19619;
        double r19621 = 2.0;
        double r19622 = r19620 * r19621;
        double r19623 = sqrt(r19622);
        double r19624 = r19618 * r19623;
        double r19625 = -r19615;
        double r19626 = r19625 - r19615;
        double r19627 = sqrt(r19626);
        double r19628 = r19624 / r19627;
        double r19629 = 4.633757336962986e-280;
        bool r19630 = r19615 <= r19629;
        double r19631 = r19615 * r19615;
        double r19632 = r19631 + r19620;
        double r19633 = sqrt(r19632);
        double r19634 = r19633 - r19615;
        double r19635 = r19620 / r19634;
        double r19636 = r19621 * r19635;
        double r19637 = sqrt(r19636);
        double r19638 = r19618 * r19637;
        double r19639 = 9.113198184177213e-181;
        bool r19640 = r19615 <= r19639;
        double r19641 = r19619 + r19615;
        double r19642 = r19621 * r19641;
        double r19643 = sqrt(r19642);
        double r19644 = r19618 * r19643;
        double r19645 = 2.8291641631335695e-146;
        bool r19646 = r19615 <= r19645;
        double r19647 = r19615 + r19615;
        double r19648 = r19621 * r19647;
        double r19649 = sqrt(r19648);
        double r19650 = r19618 * r19649;
        double r19651 = r19646 ? r19638 : r19650;
        double r19652 = r19640 ? r19644 : r19651;
        double r19653 = r19630 ? r19638 : r19652;
        double r19654 = r19617 ? r19628 : r19653;
        return r19654;
}

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 r19655, r19656, r19657, r19658, r19659, r19660, r19661, r19662, r19663, r19664, r19665, r19666;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19655, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19656, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19657);
        mpfr_init(r19658);
        mpfr_init(r19659);
        mpfr_init(r19660);
        mpfr_init(r19661);
        mpfr_init(r19662);
        mpfr_init(r19663);
        mpfr_init(r19664);
        mpfr_init(r19665);
        mpfr_init(r19666);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19657, re, MPFR_RNDN);
        mpfr_mul(r19658, r19657, r19657, MPFR_RNDN);
        mpfr_set_d(r19659, im, MPFR_RNDN);
        mpfr_mul(r19660, r19659, r19659, MPFR_RNDN);
        mpfr_add(r19661, r19658, r19660, MPFR_RNDN);
        mpfr_sqrt(r19662, r19661, MPFR_RNDN);
        mpfr_add(r19663, r19662, r19657, MPFR_RNDN);
        mpfr_mul(r19664, r19656, r19663, MPFR_RNDN);
        mpfr_sqrt(r19665, r19664, MPFR_RNDN);
        mpfr_mul(r19666, r19655, r19665, MPFR_RNDN);
        return mpfr_get_d(r19666, MPFR_RNDN);
}

static mpfr_t r19667, r19668, r19669, r19670, r19671, r19672, r19673, r19674, r19675, r19676, r19677, r19678, r19679, r19680, r19681, r19682, r19683, r19684, r19685, r19686, r19687, r19688, r19689, r19690, r19691, r19692, r19693, r19694, r19695, r19696, r19697, r19698, r19699, r19700, r19701, r19702, r19703, r19704, r19705, r19706;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19667);
        mpfr_init_set_str(r19668, "-5.001969231040948e+151", 10, MPFR_RNDN);
        mpfr_init(r19669);
        mpfr_init_set_str(r19670, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19671);
        mpfr_init(r19672);
        mpfr_init_set_str(r19673, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19674);
        mpfr_init(r19675);
        mpfr_init(r19676);
        mpfr_init(r19677);
        mpfr_init(r19678);
        mpfr_init(r19679);
        mpfr_init(r19680);
        mpfr_init_set_str(r19681, "4.633757336962986e-280", 10, MPFR_RNDN);
        mpfr_init(r19682);
        mpfr_init(r19683);
        mpfr_init(r19684);
        mpfr_init(r19685);
        mpfr_init(r19686);
        mpfr_init(r19687);
        mpfr_init(r19688);
        mpfr_init(r19689);
        mpfr_init(r19690);
        mpfr_init_set_str(r19691, "9.113198184177213e-181", 10, MPFR_RNDN);
        mpfr_init(r19692);
        mpfr_init(r19693);
        mpfr_init(r19694);
        mpfr_init(r19695);
        mpfr_init(r19696);
        mpfr_init_set_str(r19697, "2.8291641631335695e-146", 10, MPFR_RNDN);
        mpfr_init(r19698);
        mpfr_init(r19699);
        mpfr_init(r19700);
        mpfr_init(r19701);
        mpfr_init(r19702);
        mpfr_init(r19703);
        mpfr_init(r19704);
        mpfr_init(r19705);
        mpfr_init(r19706);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19667, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19669, mpfr_cmp(r19667, r19668) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19671, im, MPFR_RNDN);
        mpfr_mul(r19672, r19671, r19671, MPFR_RNDN);
        ;
        mpfr_mul(r19674, r19672, r19673, MPFR_RNDN);
        mpfr_sqrt(r19675, r19674, MPFR_RNDN);
        mpfr_mul(r19676, r19670, r19675, MPFR_RNDN);
        mpfr_neg(r19677, r19667, MPFR_RNDN);
        mpfr_sub(r19678, r19677, r19667, MPFR_RNDN);
        mpfr_sqrt(r19679, r19678, MPFR_RNDN);
        mpfr_div(r19680, r19676, r19679, MPFR_RNDN);
        ;
        mpfr_set_si(r19682, mpfr_cmp(r19667, r19681) <= 0, MPFR_RNDN);
        mpfr_sqr(r19683, r19667, MPFR_RNDN);
        mpfr_add(r19684, r19683, r19672, MPFR_RNDN);
        mpfr_sqrt(r19685, r19684, MPFR_RNDN);
        mpfr_sub(r19686, r19685, r19667, MPFR_RNDN);
        mpfr_div(r19687, r19672, r19686, MPFR_RNDN);
        mpfr_mul(r19688, r19673, r19687, MPFR_RNDN);
        mpfr_sqrt(r19689, r19688, MPFR_RNDN);
        mpfr_mul(r19690, r19670, r19689, MPFR_RNDN);
        ;
        mpfr_set_si(r19692, mpfr_cmp(r19667, r19691) <= 0, MPFR_RNDN);
        mpfr_add(r19693, r19671, r19667, MPFR_RNDN);
        mpfr_mul(r19694, r19673, r19693, MPFR_RNDN);
        mpfr_sqrt(r19695, r19694, MPFR_RNDN);
        mpfr_mul(r19696, r19670, r19695, MPFR_RNDN);
        ;
        mpfr_set_si(r19698, mpfr_cmp(r19667, r19697) <= 0, MPFR_RNDN);
        mpfr_add(r19699, r19667, r19667, MPFR_RNDN);
        mpfr_mul(r19700, r19673, r19699, MPFR_RNDN);
        mpfr_sqrt(r19701, r19700, MPFR_RNDN);
        mpfr_mul(r19702, r19670, r19701, MPFR_RNDN);
        if (mpfr_get_si(r19698, MPFR_RNDN)) { mpfr_set(r19703, r19690, MPFR_RNDN); } else { mpfr_set(r19703, r19702, MPFR_RNDN); };
        if (mpfr_get_si(r19692, MPFR_RNDN)) { mpfr_set(r19704, r19696, MPFR_RNDN); } else { mpfr_set(r19704, r19703, MPFR_RNDN); };
        if (mpfr_get_si(r19682, MPFR_RNDN)) { mpfr_set(r19705, r19690, MPFR_RNDN); } else { mpfr_set(r19705, r19704, MPFR_RNDN); };
        if (mpfr_get_si(r19669, MPFR_RNDN)) { mpfr_set(r19706, r19680, MPFR_RNDN); } else { mpfr_set(r19706, r19705, MPFR_RNDN); };
        return mpfr_get_d(r19706, MPFR_RNDN);
}

static mpfr_t r19707, r19708, r19709, r19710, r19711, r19712, r19713, r19714, r19715, r19716, r19717, r19718, r19719, r19720, r19721, r19722, r19723, r19724, r19725, r19726, r19727, r19728, r19729, r19730, r19731, r19732, r19733, r19734, r19735, r19736, r19737, r19738, r19739, r19740, r19741, r19742, r19743, r19744, r19745, r19746;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19707);
        mpfr_init_set_str(r19708, "-5.001969231040948e+151", 10, MPFR_RNDN);
        mpfr_init(r19709);
        mpfr_init_set_str(r19710, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19711);
        mpfr_init(r19712);
        mpfr_init_set_str(r19713, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19714);
        mpfr_init(r19715);
        mpfr_init(r19716);
        mpfr_init(r19717);
        mpfr_init(r19718);
        mpfr_init(r19719);
        mpfr_init(r19720);
        mpfr_init_set_str(r19721, "4.633757336962986e-280", 10, MPFR_RNDN);
        mpfr_init(r19722);
        mpfr_init(r19723);
        mpfr_init(r19724);
        mpfr_init(r19725);
        mpfr_init(r19726);
        mpfr_init(r19727);
        mpfr_init(r19728);
        mpfr_init(r19729);
        mpfr_init(r19730);
        mpfr_init_set_str(r19731, "9.113198184177213e-181", 10, MPFR_RNDN);
        mpfr_init(r19732);
        mpfr_init(r19733);
        mpfr_init(r19734);
        mpfr_init(r19735);
        mpfr_init(r19736);
        mpfr_init_set_str(r19737, "2.8291641631335695e-146", 10, MPFR_RNDN);
        mpfr_init(r19738);
        mpfr_init(r19739);
        mpfr_init(r19740);
        mpfr_init(r19741);
        mpfr_init(r19742);
        mpfr_init(r19743);
        mpfr_init(r19744);
        mpfr_init(r19745);
        mpfr_init(r19746);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19707, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19709, mpfr_cmp(r19707, r19708) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19711, im, MPFR_RNDN);
        mpfr_mul(r19712, r19711, r19711, MPFR_RNDN);
        ;
        mpfr_mul(r19714, r19712, r19713, MPFR_RNDN);
        mpfr_sqrt(r19715, r19714, MPFR_RNDN);
        mpfr_mul(r19716, r19710, r19715, MPFR_RNDN);
        mpfr_neg(r19717, r19707, MPFR_RNDN);
        mpfr_sub(r19718, r19717, r19707, MPFR_RNDN);
        mpfr_sqrt(r19719, r19718, MPFR_RNDN);
        mpfr_div(r19720, r19716, r19719, MPFR_RNDN);
        ;
        mpfr_set_si(r19722, mpfr_cmp(r19707, r19721) <= 0, MPFR_RNDN);
        mpfr_sqr(r19723, r19707, MPFR_RNDN);
        mpfr_add(r19724, r19723, r19712, MPFR_RNDN);
        mpfr_sqrt(r19725, r19724, MPFR_RNDN);
        mpfr_sub(r19726, r19725, r19707, MPFR_RNDN);
        mpfr_div(r19727, r19712, r19726, MPFR_RNDN);
        mpfr_mul(r19728, r19713, r19727, MPFR_RNDN);
        mpfr_sqrt(r19729, r19728, MPFR_RNDN);
        mpfr_mul(r19730, r19710, r19729, MPFR_RNDN);
        ;
        mpfr_set_si(r19732, mpfr_cmp(r19707, r19731) <= 0, MPFR_RNDN);
        mpfr_add(r19733, r19711, r19707, MPFR_RNDN);
        mpfr_mul(r19734, r19713, r19733, MPFR_RNDN);
        mpfr_sqrt(r19735, r19734, MPFR_RNDN);
        mpfr_mul(r19736, r19710, r19735, MPFR_RNDN);
        ;
        mpfr_set_si(r19738, mpfr_cmp(r19707, r19737) <= 0, MPFR_RNDN);
        mpfr_add(r19739, r19707, r19707, MPFR_RNDN);
        mpfr_mul(r19740, r19713, r19739, MPFR_RNDN);
        mpfr_sqrt(r19741, r19740, MPFR_RNDN);
        mpfr_mul(r19742, r19710, r19741, MPFR_RNDN);
        if (mpfr_get_si(r19738, MPFR_RNDN)) { mpfr_set(r19743, r19730, MPFR_RNDN); } else { mpfr_set(r19743, r19742, MPFR_RNDN); };
        if (mpfr_get_si(r19732, MPFR_RNDN)) { mpfr_set(r19744, r19736, MPFR_RNDN); } else { mpfr_set(r19744, r19743, MPFR_RNDN); };
        if (mpfr_get_si(r19722, MPFR_RNDN)) { mpfr_set(r19745, r19730, MPFR_RNDN); } else { mpfr_set(r19745, r19744, MPFR_RNDN); };
        if (mpfr_get_si(r19709, MPFR_RNDN)) { mpfr_set(r19746, r19720, MPFR_RNDN); } else { mpfr_set(r19746, r19745, MPFR_RNDN); };
        return mpfr_get_d(r19746, MPFR_RNDN);
}

