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

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

double f_if(float g, float h) {
        float r10685 = 2.0f;
        float r10686 = atan2(1.0, 0.0);
        float r10687 = r10685 * r10686;
        float r10688 = 3.0f;
        float r10689 = r10687 / r10688;
        float r10690 = g;
        float r10691 = -r10690;
        float r10692 = h;
        float r10693 = r10691 / r10692;
        float r10694 = acos(r10693);
        float r10695 = r10694 / r10688;
        float r10696 = r10689 + r10695;
        float r10697 = cos(r10696);
        float r10698 = r10685 * r10697;
        return r10698;
}

double f_id(double g, double h) {
        double r10699 = 2.0;
        double r10700 = atan2(1.0, 0.0);
        double r10701 = r10699 * r10700;
        double r10702 = 3.0;
        double r10703 = r10701 / r10702;
        double r10704 = g;
        double r10705 = -r10704;
        double r10706 = h;
        double r10707 = r10705 / r10706;
        double r10708 = acos(r10707);
        double r10709 = r10708 / r10702;
        double r10710 = r10703 + r10709;
        double r10711 = cos(r10710);
        double r10712 = r10699 * r10711;
        return r10712;
}


double f_of(float g, float h) {
        float r10713 = 1.0f;
        float r10714 = 2.0f;
        float r10715 = r10713 + r10714;
        float r10716 = atan2(1.0, 0.0);
        float r10717 = 3.0f;
        float r10718 = r10716 / r10717;
        float r10719 = r10715 * r10718;
        float r10720 = cos(r10719);
        float r10721 = g;
        float r10722 = h;
        float r10723 = r10721 / r10722;
        float r10724 = acos(r10723);
        float r10725 = r10724 / r10717;
        float r10726 = cos(r10725);
        float r10727 = r10720 * r10726;
        float r10728 = r10716 * r10714;
        float r10729 = r10728 / r10717;
        float r10730 = r10729 + r10718;
        float r10731 = sin(r10730);
        float r10732 = sin(r10725);
        float r10733 = r10731 * r10732;
        float r10734 = r10727 + r10733;
        float r10735 = r10734 * r10714;
        return r10735;
}

double f_od(double g, double h) {
        double r10736 = 1.0;
        double r10737 = 2.0;
        double r10738 = r10736 + r10737;
        double r10739 = atan2(1.0, 0.0);
        double r10740 = 3.0;
        double r10741 = r10739 / r10740;
        double r10742 = r10738 * r10741;
        double r10743 = cos(r10742);
        double r10744 = g;
        double r10745 = h;
        double r10746 = r10744 / r10745;
        double r10747 = acos(r10746);
        double r10748 = r10747 / r10740;
        double r10749 = cos(r10748);
        double r10750 = r10743 * r10749;
        double r10751 = r10739 * r10737;
        double r10752 = r10751 / r10740;
        double r10753 = r10752 + r10741;
        double r10754 = sin(r10753);
        double r10755 = sin(r10748);
        double r10756 = r10754 * r10755;
        double r10757 = r10750 + r10756;
        double r10758 = r10757 * r10737;
        return r10758;
}

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 r10759, r10760, r10761, r10762, r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770, r10771, r10772;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10759, "2", 10, MPFR_RNDN);
        mpfr_init(r10760);
        mpfr_init(r10761);
        mpfr_init_set_str(r10762, "3", 10, MPFR_RNDN);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r10760, MPFR_RNDN);
        mpfr_mul(r10761, r10759, r10760, MPFR_RNDN);
        ;
        mpfr_div(r10763, r10761, r10762, MPFR_RNDN);
        mpfr_set_d(r10764, g, MPFR_RNDN);
        mpfr_neg(r10765, r10764, MPFR_RNDN);
        mpfr_set_d(r10766, h, MPFR_RNDN);
        mpfr_div(r10767, r10765, r10766, MPFR_RNDN);
        mpfr_acos(r10768, r10767, MPFR_RNDN);
        mpfr_div(r10769, r10768, r10762, MPFR_RNDN);
        mpfr_add(r10770, r10763, r10769, MPFR_RNDN);
        mpfr_cos(r10771, r10770, MPFR_RNDN);
        mpfr_mul(r10772, r10759, r10771, MPFR_RNDN);
        return mpfr_get_d(r10772, MPFR_RNDN);
}

static mpfr_t r10773, r10774, r10775, r10776, r10777, r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10773, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10774, "2", 10, MPFR_RNDN);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init_set_str(r10777, "3", 10, MPFR_RNDN);
        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);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_add(r10775, r10773, r10774, MPFR_RNDN);
        mpfr_const_pi(r10776, MPFR_RNDN);
        ;
        mpfr_div(r10778, r10776, r10777, MPFR_RNDN);
        mpfr_mul(r10779, r10775, r10778, MPFR_RNDN);
        mpfr_cos(r10780, r10779, MPFR_RNDN);
        mpfr_set_d(r10781, g, MPFR_RNDN);
        mpfr_set_d(r10782, h, MPFR_RNDN);
        mpfr_div(r10783, r10781, r10782, MPFR_RNDN);
        mpfr_acos(r10784, r10783, MPFR_RNDN);
        mpfr_div(r10785, r10784, r10777, MPFR_RNDN);
        mpfr_cos(r10786, r10785, MPFR_RNDN);
        mpfr_mul(r10787, r10780, r10786, MPFR_RNDN);
        mpfr_mul(r10788, r10776, r10774, MPFR_RNDN);
        mpfr_div(r10789, r10788, r10777, MPFR_RNDN);
        mpfr_add(r10790, r10789, r10778, MPFR_RNDN);
        mpfr_sin(r10791, r10790, MPFR_RNDN);
        mpfr_sin(r10792, r10785, MPFR_RNDN);
        mpfr_mul(r10793, r10791, r10792, MPFR_RNDN);
        mpfr_add(r10794, r10787, r10793, MPFR_RNDN);
        mpfr_mul(r10795, r10794, r10774, MPFR_RNDN);
        return mpfr_get_d(r10795, MPFR_RNDN);
}

static mpfr_t r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10796, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10797, "2", 10, MPFR_RNDN);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init_set_str(r10800, "3", 10, MPFR_RNDN);
        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);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_add(r10798, r10796, r10797, MPFR_RNDN);
        mpfr_const_pi(r10799, MPFR_RNDN);
        ;
        mpfr_div(r10801, r10799, r10800, MPFR_RNDN);
        mpfr_mul(r10802, r10798, r10801, MPFR_RNDN);
        mpfr_cos(r10803, r10802, MPFR_RNDN);
        mpfr_set_d(r10804, g, MPFR_RNDN);
        mpfr_set_d(r10805, h, MPFR_RNDN);
        mpfr_div(r10806, r10804, r10805, MPFR_RNDN);
        mpfr_acos(r10807, r10806, MPFR_RNDN);
        mpfr_div(r10808, r10807, r10800, MPFR_RNDN);
        mpfr_cos(r10809, r10808, MPFR_RNDN);
        mpfr_mul(r10810, r10803, r10809, MPFR_RNDN);
        mpfr_mul(r10811, r10799, r10797, MPFR_RNDN);
        mpfr_div(r10812, r10811, r10800, MPFR_RNDN);
        mpfr_add(r10813, r10812, r10801, MPFR_RNDN);
        mpfr_sin(r10814, r10813, MPFR_RNDN);
        mpfr_sin(r10815, r10808, MPFR_RNDN);
        mpfr_mul(r10816, r10814, r10815, MPFR_RNDN);
        mpfr_add(r10817, r10810, r10816, MPFR_RNDN);
        mpfr_mul(r10818, r10817, r10797, MPFR_RNDN);
        return mpfr_get_d(r10818, MPFR_RNDN);
}

