#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 r26934 = 2;
        float r26935 = atan2(1.0, 0.0);
        float r26936 = r26934 * r26935;
        float r26937 = 3;
        float r26938 = r26936 / r26937;
        float r26939 = g;
        float r26940 = -r26939;
        float r26941 = h;
        float r26942 = r26940 / r26941;
        float r26943 = acos(r26942);
        float r26944 = r26943 / r26937;
        float r26945 = r26938 + r26944;
        float r26946 = cos(r26945);
        float r26947 = r26934 * r26946;
        return r26947;
}

double f_id(double g, double h) {
        double r26948 = 2;
        double r26949 = atan2(1.0, 0.0);
        double r26950 = r26948 * r26949;
        double r26951 = 3;
        double r26952 = r26950 / r26951;
        double r26953 = g;
        double r26954 = -r26953;
        double r26955 = h;
        double r26956 = r26954 / r26955;
        double r26957 = acos(r26956);
        double r26958 = r26957 / r26951;
        double r26959 = r26952 + r26958;
        double r26960 = cos(r26959);
        double r26961 = r26948 * r26960;
        return r26961;
}


double f_of(float g, float h) {
        float r26962 = 2;
        float r26963 = g;
        float r26964 = h;
        float r26965 = r26963 / r26964;
        float r26966 = acos(r26965);
        float r26967 = 3;
        float r26968 = r26966 / r26967;
        float r26969 = cos(r26968);
        float r26970 = 1;
        float r26971 = r26962 + r26970;
        float r26972 = atan2(1.0, 0.0);
        float r26973 = r26972 / r26967;
        float r26974 = r26971 * r26973;
        float r26975 = cos(r26974);
        float r26976 = r26969 * r26975;
        float r26977 = sin(r26968);
        float r26978 = sin(r26974);
        float r26979 = r26977 * r26978;
        float r26980 = r26976 + r26979;
        float r26981 = r26962 * r26980;
        return r26981;
}

double f_od(double g, double h) {
        double r26982 = 2;
        double r26983 = g;
        double r26984 = h;
        double r26985 = r26983 / r26984;
        double r26986 = acos(r26985);
        double r26987 = 3;
        double r26988 = r26986 / r26987;
        double r26989 = cos(r26988);
        double r26990 = 1;
        double r26991 = r26982 + r26990;
        double r26992 = atan2(1.0, 0.0);
        double r26993 = r26992 / r26987;
        double r26994 = r26991 * r26993;
        double r26995 = cos(r26994);
        double r26996 = r26989 * r26995;
        double r26997 = sin(r26988);
        double r26998 = sin(r26994);
        double r26999 = r26997 * r26998;
        double r27000 = r26996 + r26999;
        double r27001 = r26982 * r27000;
        return r27001;
}

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 r27002, r27003, r27004, r27005, r27006, r27007, r27008, r27009, r27010, r27011, r27012, r27013, r27014, r27015;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27002, "2", 10, MPFR_RNDN);
        mpfr_init(r27003);
        mpfr_init(r27004);
        mpfr_init_set_str(r27005, "3", 10, MPFR_RNDN);
        mpfr_init(r27006);
        mpfr_init(r27007);
        mpfr_init(r27008);
        mpfr_init(r27009);
        mpfr_init(r27010);
        mpfr_init(r27011);
        mpfr_init(r27012);
        mpfr_init(r27013);
        mpfr_init(r27014);
        mpfr_init(r27015);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r27003, MPFR_RNDN);
        mpfr_mul(r27004, r27002, r27003, MPFR_RNDN);
        ;
        mpfr_div(r27006, r27004, r27005, MPFR_RNDN);
        mpfr_set_d(r27007, g, MPFR_RNDN);
        mpfr_neg(r27008, r27007, MPFR_RNDN);
        mpfr_set_d(r27009, h, MPFR_RNDN);
        mpfr_div(r27010, r27008, r27009, MPFR_RNDN);
        mpfr_acos(r27011, r27010, MPFR_RNDN);
        mpfr_div(r27012, r27011, r27005, MPFR_RNDN);
        mpfr_add(r27013, r27006, r27012, MPFR_RNDN);
        mpfr_cos(r27014, r27013, MPFR_RNDN);
        mpfr_mul(r27015, r27002, r27014, MPFR_RNDN);
        return mpfr_get_d(r27015, MPFR_RNDN);
}

static mpfr_t r27016, r27017, r27018, r27019, r27020, r27021, r27022, r27023, r27024, r27025, r27026, r27027, r27028, r27029, r27030, r27031, r27032, r27033, r27034, r27035;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27016, "2", 10, MPFR_RNDN);
        mpfr_init(r27017);
        mpfr_init(r27018);
        mpfr_init(r27019);
        mpfr_init(r27020);
        mpfr_init_set_str(r27021, "3", 10, MPFR_RNDN);
        mpfr_init(r27022);
        mpfr_init(r27023);
        mpfr_init_set_str(r27024, "1", 10, MPFR_RNDN);
        mpfr_init(r27025);
        mpfr_init(r27026);
        mpfr_init(r27027);
        mpfr_init(r27028);
        mpfr_init(r27029);
        mpfr_init(r27030);
        mpfr_init(r27031);
        mpfr_init(r27032);
        mpfr_init(r27033);
        mpfr_init(r27034);
        mpfr_init(r27035);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r27017, g, MPFR_RNDN);
        mpfr_set_d(r27018, h, MPFR_RNDN);
        mpfr_div(r27019, r27017, r27018, MPFR_RNDN);
        mpfr_acos(r27020, r27019, MPFR_RNDN);
        ;
        mpfr_div(r27022, r27020, r27021, MPFR_RNDN);
        mpfr_cos(r27023, r27022, MPFR_RNDN);
        ;
        mpfr_add(r27025, r27016, r27024, MPFR_RNDN);
        mpfr_const_pi(r27026, MPFR_RNDN);
        mpfr_div(r27027, r27026, r27021, MPFR_RNDN);
        mpfr_mul(r27028, r27025, r27027, MPFR_RNDN);
        mpfr_cos(r27029, r27028, MPFR_RNDN);
        mpfr_mul(r27030, r27023, r27029, MPFR_RNDN);
        mpfr_sin(r27031, r27022, MPFR_RNDN);
        mpfr_sin(r27032, r27028, MPFR_RNDN);
        mpfr_mul(r27033, r27031, r27032, MPFR_RNDN);
        mpfr_add(r27034, r27030, r27033, MPFR_RNDN);
        mpfr_mul(r27035, r27016, r27034, MPFR_RNDN);
        return mpfr_get_d(r27035, MPFR_RNDN);
}

static mpfr_t r27036, r27037, r27038, r27039, r27040, r27041, r27042, r27043, r27044, r27045, r27046, r27047, r27048, r27049, r27050, r27051, r27052, r27053, r27054, r27055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27036, "2", 10, MPFR_RNDN);
        mpfr_init(r27037);
        mpfr_init(r27038);
        mpfr_init(r27039);
        mpfr_init(r27040);
        mpfr_init_set_str(r27041, "3", 10, MPFR_RNDN);
        mpfr_init(r27042);
        mpfr_init(r27043);
        mpfr_init_set_str(r27044, "1", 10, MPFR_RNDN);
        mpfr_init(r27045);
        mpfr_init(r27046);
        mpfr_init(r27047);
        mpfr_init(r27048);
        mpfr_init(r27049);
        mpfr_init(r27050);
        mpfr_init(r27051);
        mpfr_init(r27052);
        mpfr_init(r27053);
        mpfr_init(r27054);
        mpfr_init(r27055);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r27037, g, MPFR_RNDN);
        mpfr_set_d(r27038, h, MPFR_RNDN);
        mpfr_div(r27039, r27037, r27038, MPFR_RNDN);
        mpfr_acos(r27040, r27039, MPFR_RNDN);
        ;
        mpfr_div(r27042, r27040, r27041, MPFR_RNDN);
        mpfr_cos(r27043, r27042, MPFR_RNDN);
        ;
        mpfr_add(r27045, r27036, r27044, MPFR_RNDN);
        mpfr_const_pi(r27046, MPFR_RNDN);
        mpfr_div(r27047, r27046, r27041, MPFR_RNDN);
        mpfr_mul(r27048, r27045, r27047, MPFR_RNDN);
        mpfr_cos(r27049, r27048, MPFR_RNDN);
        mpfr_mul(r27050, r27043, r27049, MPFR_RNDN);
        mpfr_sin(r27051, r27042, MPFR_RNDN);
        mpfr_sin(r27052, r27048, MPFR_RNDN);
        mpfr_mul(r27053, r27051, r27052, MPFR_RNDN);
        mpfr_add(r27054, r27050, r27053, MPFR_RNDN);
        mpfr_mul(r27055, r27036, r27054, MPFR_RNDN);
        return mpfr_get_d(r27055, MPFR_RNDN);
}

