#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 r38508 = 0.5;
        float r38509 = 2.0;
        float r38510 = re;
        float r38511 = r38510 * r38510;
        float r38512 = im;
        float r38513 = r38512 * r38512;
        float r38514 = r38511 + r38513;
        float r38515 = sqrt(r38514);
        float r38516 = r38515 + r38510;
        float r38517 = r38509 * r38516;
        float r38518 = sqrt(r38517);
        float r38519 = r38508 * r38518;
        return r38519;
}

double f_id(double re, double im) {
        double r38520 = 0.5;
        double r38521 = 2.0;
        double r38522 = re;
        double r38523 = r38522 * r38522;
        double r38524 = im;
        double r38525 = r38524 * r38524;
        double r38526 = r38523 + r38525;
        double r38527 = sqrt(r38526);
        double r38528 = r38527 + r38522;
        double r38529 = r38521 * r38528;
        double r38530 = sqrt(r38529);
        double r38531 = r38520 * r38530;
        return r38531;
}


double f_of(float re, float im) {
        float r38532 = re;
        float r38533 = -5.324819773967279e+125;
        bool r38534 = r38532 <= r38533;
        float r38535 = 0.5;
        float r38536 = im;
        float r38537 = 2.0;
        float r38538 = r38536 * r38537;
        float r38539 = r38538 * r38536;
        float r38540 = sqrt(r38539);
        float r38541 = -r38532;
        float r38542 = r38541 - r38532;
        float r38543 = sqrt(r38542);
        float r38544 = r38540 / r38543;
        float r38545 = r38535 * r38544;
        float r38546 = -3.36851212655227e-310;
        bool r38547 = r38532 <= r38546;
        float r38548 = sqrt(r38537);
        float r38549 = 1;
        float r38550 = sqrt(r38549);
        float r38551 = r38548 / r38550;
        float r38552 = fabs(r38536);
        float r38553 = r38536 * r38536;
        float r38554 = r38532 * r38532;
        float r38555 = r38553 + r38554;
        float r38556 = sqrt(r38555);
        float r38557 = r38556 - r38532;
        float r38558 = sqrt(r38557);
        float r38559 = r38552 / r38558;
        float r38560 = r38551 * r38559;
        float r38561 = r38535 * r38560;
        float r38562 = 1.0701985037934348e-08;
        bool r38563 = r38532 <= r38562;
        float r38564 = r38554 + r38553;
        float r38565 = sqrt(r38564);
        float r38566 = sqrt(r38565);
        float r38567 = r38566 * r38566;
        float r38568 = r38567 + r38532;
        float r38569 = r38537 * r38568;
        float r38570 = sqrt(r38569);
        float r38571 = r38535 * r38570;
        float r38572 = r38532 + r38532;
        float r38573 = r38537 * r38572;
        float r38574 = sqrt(r38573);
        float r38575 = r38535 * r38574;
        float r38576 = r38563 ? r38571 : r38575;
        float r38577 = r38547 ? r38561 : r38576;
        float r38578 = r38534 ? r38545 : r38577;
        return r38578;
}

double f_od(double re, double im) {
        double r38579 = re;
        double r38580 = -5.324819773967279e+125;
        bool r38581 = r38579 <= r38580;
        double r38582 = 0.5;
        double r38583 = im;
        double r38584 = 2.0;
        double r38585 = r38583 * r38584;
        double r38586 = r38585 * r38583;
        double r38587 = sqrt(r38586);
        double r38588 = -r38579;
        double r38589 = r38588 - r38579;
        double r38590 = sqrt(r38589);
        double r38591 = r38587 / r38590;
        double r38592 = r38582 * r38591;
        double r38593 = -3.36851212655227e-310;
        bool r38594 = r38579 <= r38593;
        double r38595 = sqrt(r38584);
        double r38596 = 1;
        double r38597 = sqrt(r38596);
        double r38598 = r38595 / r38597;
        double r38599 = fabs(r38583);
        double r38600 = r38583 * r38583;
        double r38601 = r38579 * r38579;
        double r38602 = r38600 + r38601;
        double r38603 = sqrt(r38602);
        double r38604 = r38603 - r38579;
        double r38605 = sqrt(r38604);
        double r38606 = r38599 / r38605;
        double r38607 = r38598 * r38606;
        double r38608 = r38582 * r38607;
        double r38609 = 1.0701985037934348e-08;
        bool r38610 = r38579 <= r38609;
        double r38611 = r38601 + r38600;
        double r38612 = sqrt(r38611);
        double r38613 = sqrt(r38612);
        double r38614 = r38613 * r38613;
        double r38615 = r38614 + r38579;
        double r38616 = r38584 * r38615;
        double r38617 = sqrt(r38616);
        double r38618 = r38582 * r38617;
        double r38619 = r38579 + r38579;
        double r38620 = r38584 * r38619;
        double r38621 = sqrt(r38620);
        double r38622 = r38582 * r38621;
        double r38623 = r38610 ? r38618 : r38622;
        double r38624 = r38594 ? r38608 : r38623;
        double r38625 = r38581 ? r38592 : r38624;
        return r38625;
}

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 r38626, r38627, r38628, r38629, r38630, r38631, r38632, r38633, r38634, r38635, r38636, r38637;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r38626, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r38627, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38628);
        mpfr_init(r38629);
        mpfr_init(r38630);
        mpfr_init(r38631);
        mpfr_init(r38632);
        mpfr_init(r38633);
        mpfr_init(r38634);
        mpfr_init(r38635);
        mpfr_init(r38636);
        mpfr_init(r38637);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r38628, re, MPFR_RNDN);
        mpfr_mul(r38629, r38628, r38628, MPFR_RNDN);
        mpfr_set_d(r38630, im, MPFR_RNDN);
        mpfr_mul(r38631, r38630, r38630, MPFR_RNDN);
        mpfr_add(r38632, r38629, r38631, MPFR_RNDN);
        mpfr_sqrt(r38633, r38632, MPFR_RNDN);
        mpfr_add(r38634, r38633, r38628, MPFR_RNDN);
        mpfr_mul(r38635, r38627, r38634, MPFR_RNDN);
        mpfr_sqrt(r38636, r38635, MPFR_RNDN);
        mpfr_mul(r38637, r38626, r38636, MPFR_RNDN);
        return mpfr_get_d(r38637, MPFR_RNDN);
}

static mpfr_t r38638, r38639, r38640, r38641, r38642, r38643, r38644, r38645, r38646, r38647, r38648, r38649, r38650, r38651, r38652, r38653, r38654, r38655, r38656, r38657, r38658, r38659, r38660, r38661, r38662, r38663, r38664, r38665, r38666, r38667, r38668, r38669, r38670, r38671, r38672, r38673, r38674, r38675, r38676, r38677, r38678, r38679, r38680, r38681, r38682, r38683, r38684;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38638);
        mpfr_init_set_str(r38639, "-5.324819773967279e+125", 10, MPFR_RNDN);
        mpfr_init(r38640);
        mpfr_init_set_str(r38641, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38642);
        mpfr_init_set_str(r38643, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38644);
        mpfr_init(r38645);
        mpfr_init(r38646);
        mpfr_init(r38647);
        mpfr_init(r38648);
        mpfr_init(r38649);
        mpfr_init(r38650);
        mpfr_init(r38651);
        mpfr_init_set_str(r38652, "-3.36851212655227e-310", 10, MPFR_RNDN);
        mpfr_init(r38653);
        mpfr_init(r38654);
        mpfr_init_set_str(r38655, "1", 10, MPFR_RNDN);
        mpfr_init(r38656);
        mpfr_init(r38657);
        mpfr_init(r38658);
        mpfr_init(r38659);
        mpfr_init(r38660);
        mpfr_init(r38661);
        mpfr_init(r38662);
        mpfr_init(r38663);
        mpfr_init(r38664);
        mpfr_init(r38665);
        mpfr_init(r38666);
        mpfr_init(r38667);
        mpfr_init_set_str(r38668, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38669);
        mpfr_init(r38670);
        mpfr_init(r38671);
        mpfr_init(r38672);
        mpfr_init(r38673);
        mpfr_init(r38674);
        mpfr_init(r38675);
        mpfr_init(r38676);
        mpfr_init(r38677);
        mpfr_init(r38678);
        mpfr_init(r38679);
        mpfr_init(r38680);
        mpfr_init(r38681);
        mpfr_init(r38682);
        mpfr_init(r38683);
        mpfr_init(r38684);
}

double f_fm(double re, double im) {
        mpfr_set_d(r38638, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38640, mpfr_cmp(r38638, r38639) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38642, im, MPFR_RNDN);
        ;
        mpfr_mul(r38644, r38642, r38643, MPFR_RNDN);
        mpfr_mul(r38645, r38644, r38642, MPFR_RNDN);
        mpfr_sqrt(r38646, r38645, MPFR_RNDN);
        mpfr_neg(r38647, r38638, MPFR_RNDN);
        mpfr_sub(r38648, r38647, r38638, MPFR_RNDN);
        mpfr_sqrt(r38649, r38648, MPFR_RNDN);
        mpfr_div(r38650, r38646, r38649, MPFR_RNDN);
        mpfr_mul(r38651, r38641, r38650, MPFR_RNDN);
        ;
        mpfr_set_si(r38653, mpfr_cmp(r38638, r38652) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38654, r38643, MPFR_RNDN);
        ;
        mpfr_sqrt(r38656, r38655, MPFR_RNDN);
        mpfr_div(r38657, r38654, r38656, MPFR_RNDN);
        mpfr_abs(r38658, r38642, MPFR_RNDN);
        mpfr_mul(r38659, r38642, r38642, MPFR_RNDN);
        mpfr_mul(r38660, r38638, r38638, MPFR_RNDN);
        mpfr_add(r38661, r38659, r38660, MPFR_RNDN);
        mpfr_sqrt(r38662, r38661, MPFR_RNDN);
        mpfr_sub(r38663, r38662, r38638, MPFR_RNDN);
        mpfr_sqrt(r38664, r38663, MPFR_RNDN);
        mpfr_div(r38665, r38658, r38664, MPFR_RNDN);
        mpfr_mul(r38666, r38657, r38665, MPFR_RNDN);
        mpfr_mul(r38667, r38641, r38666, MPFR_RNDN);
        ;
        mpfr_set_si(r38669, mpfr_cmp(r38638, r38668) <= 0, MPFR_RNDN);
        mpfr_add(r38670, r38660, r38659, MPFR_RNDN);
        mpfr_sqrt(r38671, r38670, MPFR_RNDN);
        mpfr_sqrt(r38672, r38671, MPFR_RNDN);
        mpfr_mul(r38673, r38672, r38672, MPFR_RNDN);
        mpfr_add(r38674, r38673, r38638, MPFR_RNDN);
        mpfr_mul(r38675, r38643, r38674, MPFR_RNDN);
        mpfr_sqrt(r38676, r38675, MPFR_RNDN);
        mpfr_mul(r38677, r38641, r38676, MPFR_RNDN);
        mpfr_add(r38678, r38638, r38638, MPFR_RNDN);
        mpfr_mul(r38679, r38643, r38678, MPFR_RNDN);
        mpfr_sqrt(r38680, r38679, MPFR_RNDN);
        mpfr_mul(r38681, r38641, r38680, MPFR_RNDN);
        if (mpfr_get_si(r38669, MPFR_RNDN)) { mpfr_set(r38682, r38677, MPFR_RNDN); } else { mpfr_set(r38682, r38681, MPFR_RNDN); };
        if (mpfr_get_si(r38653, MPFR_RNDN)) { mpfr_set(r38683, r38667, MPFR_RNDN); } else { mpfr_set(r38683, r38682, MPFR_RNDN); };
        if (mpfr_get_si(r38640, MPFR_RNDN)) { mpfr_set(r38684, r38651, MPFR_RNDN); } else { mpfr_set(r38684, r38683, MPFR_RNDN); };
        return mpfr_get_d(r38684, MPFR_RNDN);
}

static mpfr_t r38685, r38686, r38687, r38688, r38689, r38690, r38691, r38692, r38693, r38694, r38695, r38696, r38697, r38698, r38699, r38700, r38701, r38702, r38703, r38704, r38705, r38706, r38707, r38708, r38709, r38710, r38711, r38712, r38713, r38714, r38715, r38716, r38717, r38718, r38719, r38720, r38721, r38722, r38723, r38724, r38725, r38726, r38727, r38728, r38729, r38730, r38731;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r38685);
        mpfr_init_set_str(r38686, "-5.324819773967279e+125", 10, MPFR_RNDN);
        mpfr_init(r38687);
        mpfr_init_set_str(r38688, "0.5", 10, MPFR_RNDN);
        mpfr_init(r38689);
        mpfr_init_set_str(r38690, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38691);
        mpfr_init(r38692);
        mpfr_init(r38693);
        mpfr_init(r38694);
        mpfr_init(r38695);
        mpfr_init(r38696);
        mpfr_init(r38697);
        mpfr_init(r38698);
        mpfr_init_set_str(r38699, "-3.36851212655227e-310", 10, MPFR_RNDN);
        mpfr_init(r38700);
        mpfr_init(r38701);
        mpfr_init_set_str(r38702, "1", 10, MPFR_RNDN);
        mpfr_init(r38703);
        mpfr_init(r38704);
        mpfr_init(r38705);
        mpfr_init(r38706);
        mpfr_init(r38707);
        mpfr_init(r38708);
        mpfr_init(r38709);
        mpfr_init(r38710);
        mpfr_init(r38711);
        mpfr_init(r38712);
        mpfr_init(r38713);
        mpfr_init(r38714);
        mpfr_init_set_str(r38715, "1.0701985037934348e-08", 10, MPFR_RNDN);
        mpfr_init(r38716);
        mpfr_init(r38717);
        mpfr_init(r38718);
        mpfr_init(r38719);
        mpfr_init(r38720);
        mpfr_init(r38721);
        mpfr_init(r38722);
        mpfr_init(r38723);
        mpfr_init(r38724);
        mpfr_init(r38725);
        mpfr_init(r38726);
        mpfr_init(r38727);
        mpfr_init(r38728);
        mpfr_init(r38729);
        mpfr_init(r38730);
        mpfr_init(r38731);
}

double f_dm(double re, double im) {
        mpfr_set_d(r38685, re, MPFR_RNDN);
        ;
        mpfr_set_si(r38687, mpfr_cmp(r38685, r38686) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r38689, im, MPFR_RNDN);
        ;
        mpfr_mul(r38691, r38689, r38690, MPFR_RNDN);
        mpfr_mul(r38692, r38691, r38689, MPFR_RNDN);
        mpfr_sqrt(r38693, r38692, MPFR_RNDN);
        mpfr_neg(r38694, r38685, MPFR_RNDN);
        mpfr_sub(r38695, r38694, r38685, MPFR_RNDN);
        mpfr_sqrt(r38696, r38695, MPFR_RNDN);
        mpfr_div(r38697, r38693, r38696, MPFR_RNDN);
        mpfr_mul(r38698, r38688, r38697, MPFR_RNDN);
        ;
        mpfr_set_si(r38700, mpfr_cmp(r38685, r38699) <= 0, MPFR_RNDN);
        mpfr_sqrt(r38701, r38690, MPFR_RNDN);
        ;
        mpfr_sqrt(r38703, r38702, MPFR_RNDN);
        mpfr_div(r38704, r38701, r38703, MPFR_RNDN);
        mpfr_abs(r38705, r38689, MPFR_RNDN);
        mpfr_mul(r38706, r38689, r38689, MPFR_RNDN);
        mpfr_mul(r38707, r38685, r38685, MPFR_RNDN);
        mpfr_add(r38708, r38706, r38707, MPFR_RNDN);
        mpfr_sqrt(r38709, r38708, MPFR_RNDN);
        mpfr_sub(r38710, r38709, r38685, MPFR_RNDN);
        mpfr_sqrt(r38711, r38710, MPFR_RNDN);
        mpfr_div(r38712, r38705, r38711, MPFR_RNDN);
        mpfr_mul(r38713, r38704, r38712, MPFR_RNDN);
        mpfr_mul(r38714, r38688, r38713, MPFR_RNDN);
        ;
        mpfr_set_si(r38716, mpfr_cmp(r38685, r38715) <= 0, MPFR_RNDN);
        mpfr_add(r38717, r38707, r38706, MPFR_RNDN);
        mpfr_sqrt(r38718, r38717, MPFR_RNDN);
        mpfr_sqrt(r38719, r38718, MPFR_RNDN);
        mpfr_mul(r38720, r38719, r38719, MPFR_RNDN);
        mpfr_add(r38721, r38720, r38685, MPFR_RNDN);
        mpfr_mul(r38722, r38690, r38721, MPFR_RNDN);
        mpfr_sqrt(r38723, r38722, MPFR_RNDN);
        mpfr_mul(r38724, r38688, r38723, MPFR_RNDN);
        mpfr_add(r38725, r38685, r38685, MPFR_RNDN);
        mpfr_mul(r38726, r38690, r38725, MPFR_RNDN);
        mpfr_sqrt(r38727, r38726, MPFR_RNDN);
        mpfr_mul(r38728, r38688, r38727, MPFR_RNDN);
        if (mpfr_get_si(r38716, MPFR_RNDN)) { mpfr_set(r38729, r38724, MPFR_RNDN); } else { mpfr_set(r38729, r38728, MPFR_RNDN); };
        if (mpfr_get_si(r38700, MPFR_RNDN)) { mpfr_set(r38730, r38714, MPFR_RNDN); } else { mpfr_set(r38730, r38729, MPFR_RNDN); };
        if (mpfr_get_si(r38687, MPFR_RNDN)) { mpfr_set(r38731, r38698, MPFR_RNDN); } else { mpfr_set(r38731, r38730, MPFR_RNDN); };
        return mpfr_get_d(r38731, MPFR_RNDN);
}

