#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 r19571 = 0.5f;
        float r19572 = 2.0f;
        float r19573 = re;
        float r19574 = r19573 * r19573;
        float r19575 = im;
        float r19576 = r19575 * r19575;
        float r19577 = r19574 + r19576;
        float r19578 = sqrt(r19577);
        float r19579 = r19578 + r19573;
        float r19580 = r19572 * r19579;
        float r19581 = sqrt(r19580);
        float r19582 = r19571 * r19581;
        return r19582;
}

double f_id(double re, double im) {
        double r19583 = 0.5;
        double r19584 = 2.0;
        double r19585 = re;
        double r19586 = r19585 * r19585;
        double r19587 = im;
        double r19588 = r19587 * r19587;
        double r19589 = r19586 + r19588;
        double r19590 = sqrt(r19589);
        double r19591 = r19590 + r19585;
        double r19592 = r19584 * r19591;
        double r19593 = sqrt(r19592);
        double r19594 = r19583 * r19593;
        return r19594;
}


double f_of(float re, float im) {
        float r19595 = re;
        float r19596 = -1.6250953579070478e-38f;
        bool r19597 = r19595 <= r19596;
        float r19598 = 0.5f;
        float r19599 = 2.0f;
        float r19600 = im;
        float r19601 = r19599 * r19600;
        float r19602 = r19601 * r19600;
        float r19603 = sqrt(r19602);
        float r19604 = r19595 * r19595;
        float r19605 = r19600 * r19600;
        float r19606 = r19604 + r19605;
        float r19607 = sqrt(r19606);
        float r19608 = r19607 - r19595;
        float r19609 = sqrt(r19608);
        float r19610 = r19603 / r19609;
        float r19611 = r19598 * r19610;
        float r19612 = 3277798768640.0f;
        bool r19613 = r19595 <= r19612;
        float r19614 = cbrt(r19606);
        float r19615 = r19614 * (r19614 * r19614);
        float r19616 = sqrt(r19615);
        float r19617 = r19616 + r19595;
        float r19618 = r19599 * r19617;
        float r19619 = sqrt(r19618);
        float r19620 = r19598 * r19619;
        float r19621 = r19595 + r19595;
        float r19622 = r19599 * r19621;
        float r19623 = sqrt(r19622);
        float r19624 = r19598 * r19623;
        float r19625 = r19613 ? r19620 : r19624;
        float r19626 = r19597 ? r19611 : r19625;
        return r19626;
}

double f_od(double re, double im) {
        double r19627 = re;
        double r19628 = -1.6250953579070478e-38;
        bool r19629 = r19627 <= r19628;
        double r19630 = 0.5;
        double r19631 = 2.0;
        double r19632 = im;
        double r19633 = r19631 * r19632;
        double r19634 = r19633 * r19632;
        double r19635 = sqrt(r19634);
        double r19636 = r19627 * r19627;
        double r19637 = r19632 * r19632;
        double r19638 = r19636 + r19637;
        double r19639 = sqrt(r19638);
        double r19640 = r19639 - r19627;
        double r19641 = sqrt(r19640);
        double r19642 = r19635 / r19641;
        double r19643 = r19630 * r19642;
        double r19644 = 3277798768640.0;
        bool r19645 = r19627 <= r19644;
        double r19646 = cbrt(r19638);
        double r19647 = r19646 * (r19646 * r19646);
        double r19648 = sqrt(r19647);
        double r19649 = r19648 + r19627;
        double r19650 = r19631 * r19649;
        double r19651 = sqrt(r19650);
        double r19652 = r19630 * r19651;
        double r19653 = r19627 + r19627;
        double r19654 = r19631 * r19653;
        double r19655 = sqrt(r19654);
        double r19656 = r19630 * r19655;
        double r19657 = r19645 ? r19652 : r19656;
        double r19658 = r19629 ? r19643 : r19657;
        return r19658;
}

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 r19659, r19660, r19661, r19662, r19663, r19664, r19665, r19666, r19667, r19668, r19669, r19670;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19659, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19660, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19661);
        mpfr_init(r19662);
        mpfr_init(r19663);
        mpfr_init(r19664);
        mpfr_init(r19665);
        mpfr_init(r19666);
        mpfr_init(r19667);
        mpfr_init(r19668);
        mpfr_init(r19669);
        mpfr_init(r19670);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19661, re, MPFR_RNDN);
        mpfr_mul(r19662, r19661, r19661, MPFR_RNDN);
        mpfr_set_d(r19663, im, MPFR_RNDN);
        mpfr_mul(r19664, r19663, r19663, MPFR_RNDN);
        mpfr_add(r19665, r19662, r19664, MPFR_RNDN);
        mpfr_sqrt(r19666, r19665, MPFR_RNDN);
        mpfr_add(r19667, r19666, r19661, MPFR_RNDN);
        mpfr_mul(r19668, r19660, r19667, MPFR_RNDN);
        mpfr_sqrt(r19669, r19668, MPFR_RNDN);
        mpfr_mul(r19670, r19659, r19669, MPFR_RNDN);
        return mpfr_get_d(r19670, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19671);
        mpfr_init_set_str(r19672, "-1.6250954f-38", 10, MPFR_RNDN);
        mpfr_init(r19673);
        mpfr_init_set_str(r19674, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19675, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19676);
        mpfr_init(r19677);
        mpfr_init(r19678);
        mpfr_init(r19679);
        mpfr_init(r19680);
        mpfr_init(r19681);
        mpfr_init(r19682);
        mpfr_init(r19683);
        mpfr_init(r19684);
        mpfr_init(r19685);
        mpfr_init(r19686);
        mpfr_init(r19687);
        mpfr_init_set_str(r19688, "3.2777988f+12", 10, MPFR_RNDN);
        mpfr_init(r19689);
        mpfr_init(r19690);
        mpfr_init(r19691);
        mpfr_init(r19692);
        mpfr_init(r19693);
        mpfr_init(r19694);
        mpfr_init(r19695);
        mpfr_init(r19696);
        mpfr_init(r19697);
        mpfr_init(r19698);
        mpfr_init(r19699);
        mpfr_init(r19700);
        mpfr_init(r19701);
        mpfr_init(r19702);
}

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

static mpfr_t 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, r19733, r19734;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19703);
        mpfr_init_set_str(r19704, "-1.6250954f-38", 10, MPFR_RNDN);
        mpfr_init(r19705);
        mpfr_init_set_str(r19706, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19707, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19708);
        mpfr_init(r19709);
        mpfr_init(r19710);
        mpfr_init(r19711);
        mpfr_init(r19712);
        mpfr_init(r19713);
        mpfr_init(r19714);
        mpfr_init(r19715);
        mpfr_init(r19716);
        mpfr_init(r19717);
        mpfr_init(r19718);
        mpfr_init(r19719);
        mpfr_init_set_str(r19720, "3.2777988f+12", 10, MPFR_RNDN);
        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);
        mpfr_init(r19733);
        mpfr_init(r19734);
}

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

