#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 r19583 = 0.5f;
        float r19584 = 2.0f;
        float r19585 = re;
        float r19586 = r19585 * r19585;
        float r19587 = im;
        float r19588 = r19587 * r19587;
        float r19589 = r19586 + r19588;
        float r19590 = sqrt(r19589);
        float r19591 = r19590 + r19585;
        float r19592 = r19584 * r19591;
        float r19593 = sqrt(r19592);
        float r19594 = r19583 * r19593;
        return r19594;
}

double f_id(double re, double im) {
        double r19595 = 0.5;
        double r19596 = 2.0;
        double r19597 = re;
        double r19598 = r19597 * r19597;
        double r19599 = im;
        double r19600 = r19599 * r19599;
        double r19601 = r19598 + r19600;
        double r19602 = sqrt(r19601);
        double r19603 = r19602 + r19597;
        double r19604 = r19596 * r19603;
        double r19605 = sqrt(r19604);
        double r19606 = r19595 * r19605;
        return r19606;
}


double f_of(float re, float im) {
        float r19607 = re;
        float r19608 = -8.68041930647669e-252f;
        bool r19609 = r19607 <= r19608;
        float r19610 = 0.5f;
        float r19611 = 2.0f;
        float r19612 = im;
        float r19613 = r19611 * r19612;
        float r19614 = r19613 * r19612;
        float r19615 = sqrt(r19614);
        float r19616 = r19607 * r19607;
        float r19617 = r19612 * r19612;
        float r19618 = r19616 + r19617;
        float r19619 = sqrt(r19618);
        float r19620 = r19619 - r19607;
        float r19621 = sqrt(r19620);
        float r19622 = r19615 / r19621;
        float r19623 = r19610 * r19622;
        float r19624 = 1.9727183986347288e-223f;
        bool r19625 = r19607 <= r19624;
        float r19626 = r19612 + r19607;
        float r19627 = r19611 * r19626;
        float r19628 = sqrt(r19627);
        float r19629 = r19610 * r19628;
        float r19630 = 3.873554890065949e+113f;
        bool r19631 = r19607 <= r19630;
        float r19632 = sqrt(r19619);
        float r19633 = r19632 * r19632;
        float r19634 = r19633 + r19607;
        float r19635 = r19611 * r19634;
        float r19636 = sqrt(r19635);
        float r19637 = r19610 * r19636;
        float r19638 = r19607 + r19607;
        float r19639 = r19611 * r19638;
        float r19640 = sqrt(r19639);
        float r19641 = r19610 * r19640;
        float r19642 = r19631 ? r19637 : r19641;
        float r19643 = r19625 ? r19629 : r19642;
        float r19644 = r19609 ? r19623 : r19643;
        return r19644;
}

double f_od(double re, double im) {
        double r19645 = re;
        double r19646 = -8.68041930647669e-252;
        bool r19647 = r19645 <= r19646;
        double r19648 = 0.5;
        double r19649 = 2.0;
        double r19650 = im;
        double r19651 = r19649 * r19650;
        double r19652 = r19651 * r19650;
        double r19653 = sqrt(r19652);
        double r19654 = r19645 * r19645;
        double r19655 = r19650 * r19650;
        double r19656 = r19654 + r19655;
        double r19657 = sqrt(r19656);
        double r19658 = r19657 - r19645;
        double r19659 = sqrt(r19658);
        double r19660 = r19653 / r19659;
        double r19661 = r19648 * r19660;
        double r19662 = 1.9727183986347288e-223;
        bool r19663 = r19645 <= r19662;
        double r19664 = r19650 + r19645;
        double r19665 = r19649 * r19664;
        double r19666 = sqrt(r19665);
        double r19667 = r19648 * r19666;
        double r19668 = 3.873554890065949e+113;
        bool r19669 = r19645 <= r19668;
        double r19670 = sqrt(r19657);
        double r19671 = r19670 * r19670;
        double r19672 = r19671 + r19645;
        double r19673 = r19649 * r19672;
        double r19674 = sqrt(r19673);
        double r19675 = r19648 * r19674;
        double r19676 = r19645 + r19645;
        double r19677 = r19649 * r19676;
        double r19678 = sqrt(r19677);
        double r19679 = r19648 * r19678;
        double r19680 = r19669 ? r19675 : r19679;
        double r19681 = r19663 ? r19667 : r19680;
        double r19682 = r19647 ? r19661 : r19681;
        return r19682;
}

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 r19683, r19684, r19685, r19686, r19687, r19688, r19689, r19690, r19691, r19692, r19693, r19694;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19683, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19684, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19685);
        mpfr_init(r19686);
        mpfr_init(r19687);
        mpfr_init(r19688);
        mpfr_init(r19689);
        mpfr_init(r19690);
        mpfr_init(r19691);
        mpfr_init(r19692);
        mpfr_init(r19693);
        mpfr_init(r19694);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19685, re, MPFR_RNDN);
        mpfr_mul(r19686, r19685, r19685, MPFR_RNDN);
        mpfr_set_d(r19687, im, MPFR_RNDN);
        mpfr_mul(r19688, r19687, r19687, MPFR_RNDN);
        mpfr_add(r19689, r19686, r19688, MPFR_RNDN);
        mpfr_sqrt(r19690, r19689, MPFR_RNDN);
        mpfr_add(r19691, r19690, r19685, MPFR_RNDN);
        mpfr_mul(r19692, r19684, r19691, MPFR_RNDN);
        mpfr_sqrt(r19693, r19692, MPFR_RNDN);
        mpfr_mul(r19694, r19683, r19693, MPFR_RNDN);
        return mpfr_get_d(r19694, MPFR_RNDN);
}

static mpfr_t r19695, r19696, r19697, r19698, r19699, r19700, r19701, r19702, r19703, r19704, r19705, r19706, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19695);
        mpfr_init_set_str(r19696, "-8.68041930647669e-252", 10, MPFR_RNDN);
        mpfr_init(r19697);
        mpfr_init_set_str(r19698, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19699, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19700);
        mpfr_init(r19701);
        mpfr_init(r19702);
        mpfr_init(r19703);
        mpfr_init(r19704);
        mpfr_init(r19705);
        mpfr_init(r19706);
        mpfr_init(r19707);
        mpfr_init(r19708);
        mpfr_init(r19709);
        mpfr_init(r19710);
        mpfr_init(r19711);
        mpfr_init_set_str(r19712, "1.9727183986347288e-223", 10, MPFR_RNDN);
        mpfr_init(r19713);
        mpfr_init(r19714);
        mpfr_init(r19715);
        mpfr_init(r19716);
        mpfr_init(r19717);
        mpfr_init_set_str(r19718, "3.873554890065949e+113", 10, MPFR_RNDN);
        mpfr_init(r19719);
        mpfr_init(r19720);
        mpfr_init(r19721);
        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(r19731);
        mpfr_init(r19732);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19695, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19697, mpfr_cmp(r19695, r19696) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19700, im, MPFR_RNDN);
        mpfr_mul(r19701, r19699, r19700, MPFR_RNDN);
        mpfr_mul(r19702, r19701, r19700, MPFR_RNDN);
        mpfr_sqrt(r19703, r19702, MPFR_RNDN);
        mpfr_sqr(r19704, r19695, MPFR_RNDN);
        mpfr_mul(r19705, r19700, r19700, MPFR_RNDN);
        mpfr_add(r19706, r19704, r19705, MPFR_RNDN);
        mpfr_sqrt(r19707, r19706, MPFR_RNDN);
        mpfr_sub(r19708, r19707, r19695, MPFR_RNDN);
        mpfr_sqrt(r19709, r19708, MPFR_RNDN);
        mpfr_div(r19710, r19703, r19709, MPFR_RNDN);
        mpfr_mul(r19711, r19698, r19710, MPFR_RNDN);
        ;
        mpfr_set_si(r19713, mpfr_cmp(r19695, r19712) <= 0, MPFR_RNDN);
        mpfr_add(r19714, r19700, r19695, MPFR_RNDN);
        mpfr_mul(r19715, r19699, r19714, MPFR_RNDN);
        mpfr_sqrt(r19716, r19715, MPFR_RNDN);
        mpfr_mul(r19717, r19698, r19716, MPFR_RNDN);
        ;
        mpfr_set_si(r19719, mpfr_cmp(r19695, r19718) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19720, r19707, MPFR_RNDN);
        mpfr_sqr(r19721, r19720, MPFR_RNDN);
        mpfr_add(r19722, r19721, r19695, MPFR_RNDN);
        mpfr_mul(r19723, r19699, r19722, MPFR_RNDN);
        mpfr_sqrt(r19724, r19723, MPFR_RNDN);
        mpfr_mul(r19725, r19698, r19724, MPFR_RNDN);
        mpfr_add(r19726, r19695, r19695, MPFR_RNDN);
        mpfr_mul(r19727, r19699, r19726, MPFR_RNDN);
        mpfr_sqrt(r19728, r19727, MPFR_RNDN);
        mpfr_mul(r19729, r19698, r19728, MPFR_RNDN);
        if (mpfr_get_si(r19719, MPFR_RNDN)) { mpfr_set(r19730, r19725, MPFR_RNDN); } else { mpfr_set(r19730, r19729, MPFR_RNDN); };
        if (mpfr_get_si(r19713, MPFR_RNDN)) { mpfr_set(r19731, r19717, MPFR_RNDN); } else { mpfr_set(r19731, r19730, MPFR_RNDN); };
        if (mpfr_get_si(r19697, MPFR_RNDN)) { mpfr_set(r19732, r19711, MPFR_RNDN); } else { mpfr_set(r19732, r19731, MPFR_RNDN); };
        return mpfr_get_d(r19732, MPFR_RNDN);
}

static mpfr_t r19733, r19734, r19735, r19736, r19737, r19738, r19739, r19740, r19741, r19742, r19743, r19744, r19745, r19746, r19747, r19748, r19749, r19750, r19751, r19752, r19753, r19754, r19755, r19756, r19757, r19758, r19759, r19760, r19761, r19762, r19763, r19764, r19765, r19766, r19767, r19768, r19769, r19770;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19733);
        mpfr_init_set_str(r19734, "-8.68041930647669e-252", 10, MPFR_RNDN);
        mpfr_init(r19735);
        mpfr_init_set_str(r19736, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19737, "2.0", 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);
        mpfr_init(r19747);
        mpfr_init(r19748);
        mpfr_init(r19749);
        mpfr_init_set_str(r19750, "1.9727183986347288e-223", 10, MPFR_RNDN);
        mpfr_init(r19751);
        mpfr_init(r19752);
        mpfr_init(r19753);
        mpfr_init(r19754);
        mpfr_init(r19755);
        mpfr_init_set_str(r19756, "3.873554890065949e+113", 10, MPFR_RNDN);
        mpfr_init(r19757);
        mpfr_init(r19758);
        mpfr_init(r19759);
        mpfr_init(r19760);
        mpfr_init(r19761);
        mpfr_init(r19762);
        mpfr_init(r19763);
        mpfr_init(r19764);
        mpfr_init(r19765);
        mpfr_init(r19766);
        mpfr_init(r19767);
        mpfr_init(r19768);
        mpfr_init(r19769);
        mpfr_init(r19770);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19733, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19735, mpfr_cmp(r19733, r19734) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19738, im, MPFR_RNDN);
        mpfr_mul(r19739, r19737, r19738, MPFR_RNDN);
        mpfr_mul(r19740, r19739, r19738, MPFR_RNDN);
        mpfr_sqrt(r19741, r19740, MPFR_RNDN);
        mpfr_sqr(r19742, r19733, MPFR_RNDN);
        mpfr_mul(r19743, r19738, r19738, MPFR_RNDN);
        mpfr_add(r19744, r19742, r19743, MPFR_RNDN);
        mpfr_sqrt(r19745, r19744, MPFR_RNDN);
        mpfr_sub(r19746, r19745, r19733, MPFR_RNDN);
        mpfr_sqrt(r19747, r19746, MPFR_RNDN);
        mpfr_div(r19748, r19741, r19747, MPFR_RNDN);
        mpfr_mul(r19749, r19736, r19748, MPFR_RNDN);
        ;
        mpfr_set_si(r19751, mpfr_cmp(r19733, r19750) <= 0, MPFR_RNDN);
        mpfr_add(r19752, r19738, r19733, MPFR_RNDN);
        mpfr_mul(r19753, r19737, r19752, MPFR_RNDN);
        mpfr_sqrt(r19754, r19753, MPFR_RNDN);
        mpfr_mul(r19755, r19736, r19754, MPFR_RNDN);
        ;
        mpfr_set_si(r19757, mpfr_cmp(r19733, r19756) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19758, r19745, MPFR_RNDN);
        mpfr_sqr(r19759, r19758, MPFR_RNDN);
        mpfr_add(r19760, r19759, r19733, MPFR_RNDN);
        mpfr_mul(r19761, r19737, r19760, MPFR_RNDN);
        mpfr_sqrt(r19762, r19761, MPFR_RNDN);
        mpfr_mul(r19763, r19736, r19762, MPFR_RNDN);
        mpfr_add(r19764, r19733, r19733, MPFR_RNDN);
        mpfr_mul(r19765, r19737, r19764, MPFR_RNDN);
        mpfr_sqrt(r19766, r19765, MPFR_RNDN);
        mpfr_mul(r19767, r19736, r19766, MPFR_RNDN);
        if (mpfr_get_si(r19757, MPFR_RNDN)) { mpfr_set(r19768, r19763, MPFR_RNDN); } else { mpfr_set(r19768, r19767, MPFR_RNDN); };
        if (mpfr_get_si(r19751, MPFR_RNDN)) { mpfr_set(r19769, r19755, MPFR_RNDN); } else { mpfr_set(r19769, r19768, MPFR_RNDN); };
        if (mpfr_get_si(r19735, MPFR_RNDN)) { mpfr_set(r19770, r19749, MPFR_RNDN); } else { mpfr_set(r19770, r19769, MPFR_RNDN); };
        return mpfr_get_d(r19770, MPFR_RNDN);
}

