#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2-ancestry mixing, positive discriminant";

double f_if(float g, float h, float a) {
        float r10673 = 1;
        float r10674 = 2;
        float r10675 = a;
        float r10676 = r10674 * r10675;
        float r10677 = r10673 / r10676;
        float r10678 = g;
        float r10679 = -r10678;
        float r10680 = r10678 * r10678;
        float r10681 = h;
        float r10682 = r10681 * r10681;
        float r10683 = r10680 - r10682;
        float r10684 = sqrt(r10683);
        float r10685 = r10679 + r10684;
        float r10686 = r10677 * r10685;
        float r10687 = cbrt(r10686);
        float r10688 = r10679 - r10684;
        float r10689 = r10677 * r10688;
        float r10690 = cbrt(r10689);
        float r10691 = r10687 + r10690;
        return r10691;
}

double f_id(double g, double h, double a) {
        double r10692 = 1;
        double r10693 = 2;
        double r10694 = a;
        double r10695 = r10693 * r10694;
        double r10696 = r10692 / r10695;
        double r10697 = g;
        double r10698 = -r10697;
        double r10699 = r10697 * r10697;
        double r10700 = h;
        double r10701 = r10700 * r10700;
        double r10702 = r10699 - r10701;
        double r10703 = sqrt(r10702);
        double r10704 = r10698 + r10703;
        double r10705 = r10696 * r10704;
        double r10706 = cbrt(r10705);
        double r10707 = r10698 - r10703;
        double r10708 = r10696 * r10707;
        double r10709 = cbrt(r10708);
        double r10710 = r10706 + r10709;
        return r10710;
}


double f_of(float g, float h, float a) {
        float r10711 = g;
        float r10712 = -1.6375144062156446e-169;
        bool r10713 = r10711 <= r10712;
        float r10714 = 1;
        float r10715 = 2;
        float r10716 = a;
        float r10717 = r10715 * r10716;
        float r10718 = r10714 / r10717;
        float r10719 = -r10711;
        float r10720 = r10711 * r10711;
        float r10721 = h;
        float r10722 = r10721 * r10721;
        float r10723 = r10720 - r10722;
        float r10724 = sqrt(r10723);
        float r10725 = r10719 + r10724;
        float r10726 = r10718 * r10725;
        float r10727 = cbrt(r10726);
        float r10728 = r10724 - r10711;
        float r10729 = r10722 / r10728;
        float r10730 = r10718 * r10729;
        float r10731 = cbrt(r10730);
        float r10732 = r10727 + r10731;
        float r10733 = r10719 - r10724;
        float r10734 = r10722 / r10733;
        float r10735 = r10718 * r10734;
        float r10736 = cbrt(r10735);
        float r10737 = r10718 * r10733;
        float r10738 = cbrt(r10737);
        float r10739 = r10736 + r10738;
        float r10740 = r10713 ? r10732 : r10739;
        return r10740;
}

double f_od(double g, double h, double a) {
        double r10741 = g;
        double r10742 = -1.6375144062156446e-169;
        bool r10743 = r10741 <= r10742;
        double r10744 = 1;
        double r10745 = 2;
        double r10746 = a;
        double r10747 = r10745 * r10746;
        double r10748 = r10744 / r10747;
        double r10749 = -r10741;
        double r10750 = r10741 * r10741;
        double r10751 = h;
        double r10752 = r10751 * r10751;
        double r10753 = r10750 - r10752;
        double r10754 = sqrt(r10753);
        double r10755 = r10749 + r10754;
        double r10756 = r10748 * r10755;
        double r10757 = cbrt(r10756);
        double r10758 = r10754 - r10741;
        double r10759 = r10752 / r10758;
        double r10760 = r10748 * r10759;
        double r10761 = cbrt(r10760);
        double r10762 = r10757 + r10761;
        double r10763 = r10749 - r10754;
        double r10764 = r10752 / r10763;
        double r10765 = r10748 * r10764;
        double r10766 = cbrt(r10765);
        double r10767 = r10748 * r10763;
        double r10768 = cbrt(r10767);
        double r10769 = r10766 + r10768;
        double r10770 = r10743 ? r10762 : r10769;
        return r10770;
}

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 r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10771, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10772, "2", 10, MPFR_RNDN);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init(r10780);
        mpfr_init(r10781);
        mpfr_init(r10782);
        mpfr_init(r10783);
        mpfr_init(r10784);
        mpfr_init(r10785);
        mpfr_init(r10786);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10773, a, MPFR_RNDN);
        mpfr_mul(r10774, r10772, r10773, MPFR_RNDN);
        mpfr_div(r10775, r10771, r10774, MPFR_RNDN);
        mpfr_set_d(r10776, g, MPFR_RNDN);
        mpfr_neg(r10777, r10776, MPFR_RNDN);
        mpfr_mul(r10778, r10776, r10776, MPFR_RNDN);
        mpfr_set_d(r10779, h, MPFR_RNDN);
        mpfr_mul(r10780, r10779, r10779, MPFR_RNDN);
        mpfr_sub(r10781, r10778, r10780, MPFR_RNDN);
        mpfr_sqrt(r10782, r10781, MPFR_RNDN);
        mpfr_add(r10783, r10777, r10782, MPFR_RNDN);
        mpfr_mul(r10784, r10775, r10783, MPFR_RNDN);
        mpfr_cbrt(r10785, r10784, MPFR_RNDN);
        mpfr_sub(r10786, r10777, r10782, MPFR_RNDN);
        mpfr_mul(r10787, r10775, r10786, MPFR_RNDN);
        mpfr_cbrt(r10788, r10787, MPFR_RNDN);
        mpfr_add(r10789, r10785, r10788, MPFR_RNDN);
        return mpfr_get_d(r10789, MPFR_RNDN);
}

static mpfr_t r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10790);
        mpfr_init_set_str(r10791, "-1.6375144062156446e-169", 10, MPFR_RNDN);
        mpfr_init(r10792);
        mpfr_init_set_str(r10793, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10794, "2", 10, MPFR_RNDN);
        mpfr_init(r10795);
        mpfr_init(r10796);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init(r10808);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        mpfr_init(r10812);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init(r10819);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r10790, g, MPFR_RNDN);
        ;
        mpfr_set_si(r10792, mpfr_cmp(r10790, r10791) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10795, a, MPFR_RNDN);
        mpfr_mul(r10796, r10794, r10795, MPFR_RNDN);
        mpfr_div(r10797, r10793, r10796, MPFR_RNDN);
        mpfr_neg(r10798, r10790, MPFR_RNDN);
        mpfr_mul(r10799, r10790, r10790, MPFR_RNDN);
        mpfr_set_d(r10800, h, MPFR_RNDN);
        mpfr_mul(r10801, r10800, r10800, MPFR_RNDN);
        mpfr_sub(r10802, r10799, r10801, MPFR_RNDN);
        mpfr_sqrt(r10803, r10802, MPFR_RNDN);
        mpfr_add(r10804, r10798, r10803, MPFR_RNDN);
        mpfr_mul(r10805, r10797, r10804, MPFR_RNDN);
        mpfr_cbrt(r10806, r10805, MPFR_RNDN);
        mpfr_sub(r10807, r10803, r10790, MPFR_RNDN);
        mpfr_div(r10808, r10801, r10807, MPFR_RNDN);
        mpfr_mul(r10809, r10797, r10808, MPFR_RNDN);
        mpfr_cbrt(r10810, r10809, MPFR_RNDN);
        mpfr_add(r10811, r10806, r10810, MPFR_RNDN);
        mpfr_sub(r10812, r10798, r10803, MPFR_RNDN);
        mpfr_div(r10813, r10801, r10812, MPFR_RNDN);
        mpfr_mul(r10814, r10797, r10813, MPFR_RNDN);
        mpfr_cbrt(r10815, r10814, MPFR_RNDN);
        mpfr_mul(r10816, r10797, r10812, MPFR_RNDN);
        mpfr_cbrt(r10817, r10816, MPFR_RNDN);
        mpfr_add(r10818, r10815, r10817, MPFR_RNDN);
        if (mpfr_get_si(r10792, MPFR_RNDN)) { mpfr_set(r10819, r10811, MPFR_RNDN); } else { mpfr_set(r10819, r10818, MPFR_RNDN); };
        return mpfr_get_d(r10819, MPFR_RNDN);
}

static mpfr_t r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827, r10828, r10829, r10830, r10831, r10832, r10833, r10834, r10835, r10836, r10837, r10838, r10839, r10840, r10841, r10842, r10843, r10844, r10845, r10846, r10847, r10848, r10849;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10820);
        mpfr_init_set_str(r10821, "-1.6375144062156446e-169", 10, MPFR_RNDN);
        mpfr_init(r10822);
        mpfr_init_set_str(r10823, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10824, "2", 10, MPFR_RNDN);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init(r10828);
        mpfr_init(r10829);
        mpfr_init(r10830);
        mpfr_init(r10831);
        mpfr_init(r10832);
        mpfr_init(r10833);
        mpfr_init(r10834);
        mpfr_init(r10835);
        mpfr_init(r10836);
        mpfr_init(r10837);
        mpfr_init(r10838);
        mpfr_init(r10839);
        mpfr_init(r10840);
        mpfr_init(r10841);
        mpfr_init(r10842);
        mpfr_init(r10843);
        mpfr_init(r10844);
        mpfr_init(r10845);
        mpfr_init(r10846);
        mpfr_init(r10847);
        mpfr_init(r10848);
        mpfr_init(r10849);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r10820, g, MPFR_RNDN);
        ;
        mpfr_set_si(r10822, mpfr_cmp(r10820, r10821) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10825, a, MPFR_RNDN);
        mpfr_mul(r10826, r10824, r10825, MPFR_RNDN);
        mpfr_div(r10827, r10823, r10826, MPFR_RNDN);
        mpfr_neg(r10828, r10820, MPFR_RNDN);
        mpfr_mul(r10829, r10820, r10820, MPFR_RNDN);
        mpfr_set_d(r10830, h, MPFR_RNDN);
        mpfr_mul(r10831, r10830, r10830, MPFR_RNDN);
        mpfr_sub(r10832, r10829, r10831, MPFR_RNDN);
        mpfr_sqrt(r10833, r10832, MPFR_RNDN);
        mpfr_add(r10834, r10828, r10833, MPFR_RNDN);
        mpfr_mul(r10835, r10827, r10834, MPFR_RNDN);
        mpfr_cbrt(r10836, r10835, MPFR_RNDN);
        mpfr_sub(r10837, r10833, r10820, MPFR_RNDN);
        mpfr_div(r10838, r10831, r10837, MPFR_RNDN);
        mpfr_mul(r10839, r10827, r10838, MPFR_RNDN);
        mpfr_cbrt(r10840, r10839, MPFR_RNDN);
        mpfr_add(r10841, r10836, r10840, MPFR_RNDN);
        mpfr_sub(r10842, r10828, r10833, MPFR_RNDN);
        mpfr_div(r10843, r10831, r10842, MPFR_RNDN);
        mpfr_mul(r10844, r10827, r10843, MPFR_RNDN);
        mpfr_cbrt(r10845, r10844, MPFR_RNDN);
        mpfr_mul(r10846, r10827, r10842, MPFR_RNDN);
        mpfr_cbrt(r10847, r10846, MPFR_RNDN);
        mpfr_add(r10848, r10845, r10847, MPFR_RNDN);
        if (mpfr_get_si(r10822, MPFR_RNDN)) { mpfr_set(r10849, r10841, MPFR_RNDN); } else { mpfr_set(r10849, r10848, MPFR_RNDN); };
        return mpfr_get_d(r10849, MPFR_RNDN);
}

