#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 r10948 = 2;
        float r10949 = atan2(1.0, 0.0);
        float r10950 = r10948 * r10949;
        float r10951 = 3;
        float r10952 = r10950 / r10951;
        float r10953 = g;
        float r10954 = -r10953;
        float r10955 = h;
        float r10956 = r10954 / r10955;
        float r10957 = acos(r10956);
        float r10958 = r10957 / r10951;
        float r10959 = r10952 + r10958;
        float r10960 = cos(r10959);
        float r10961 = r10948 * r10960;
        return r10961;
}

double f_id(double g, double h) {
        double r10962 = 2;
        double r10963 = atan2(1.0, 0.0);
        double r10964 = r10962 * r10963;
        double r10965 = 3;
        double r10966 = r10964 / r10965;
        double r10967 = g;
        double r10968 = -r10967;
        double r10969 = h;
        double r10970 = r10968 / r10969;
        double r10971 = acos(r10970);
        double r10972 = r10971 / r10965;
        double r10973 = r10966 + r10972;
        double r10974 = cos(r10973);
        double r10975 = r10962 * r10974;
        return r10975;
}


double f_of(float g, float h) {
        float r10976 = 2;
        float r10977 = 1;
        float r10978 = r10976 + r10977;
        float r10979 = atan2(1.0, 0.0);
        float r10980 = 3;
        float r10981 = r10979 / r10980;
        float r10982 = r10978 * r10981;
        float r10983 = cos(r10982);
        float r10984 = g;
        float r10985 = h;
        float r10986 = r10984 / r10985;
        float r10987 = acos(r10986);
        float r10988 = r10987 / r10980;
        float r10989 = cos(r10988);
        float r10990 = r10983 * r10989;
        float r10991 = sin(r10982);
        float r10992 = sin(r10988);
        float r10993 = r10991 * r10992;
        float r10994 = r10990 + r10993;
        float r10995 = r10976 * r10994;
        return r10995;
}

double f_od(double g, double h) {
        double r10996 = 2;
        double r10997 = 1;
        double r10998 = r10996 + r10997;
        double r10999 = atan2(1.0, 0.0);
        double r11000 = 3;
        double r11001 = r10999 / r11000;
        double r11002 = r10998 * r11001;
        double r11003 = cos(r11002);
        double r11004 = g;
        double r11005 = h;
        double r11006 = r11004 / r11005;
        double r11007 = acos(r11006);
        double r11008 = r11007 / r11000;
        double r11009 = cos(r11008);
        double r11010 = r11003 * r11009;
        double r11011 = sin(r11002);
        double r11012 = sin(r11008);
        double r11013 = r11011 * r11012;
        double r11014 = r11010 + r11013;
        double r11015 = r10996 * r11014;
        return r11015;
}

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 r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11016, "2", 10, MPFR_RNDN);
        mpfr_init(r11017);
        mpfr_init(r11018);
        mpfr_init_set_str(r11019, "3", 10, MPFR_RNDN);
        mpfr_init(r11020);
        mpfr_init(r11021);
        mpfr_init(r11022);
        mpfr_init(r11023);
        mpfr_init(r11024);
        mpfr_init(r11025);
        mpfr_init(r11026);
        mpfr_init(r11027);
        mpfr_init(r11028);
        mpfr_init(r11029);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r11017, MPFR_RNDN);
        mpfr_mul(r11018, r11016, r11017, MPFR_RNDN);
        ;
        mpfr_div(r11020, r11018, r11019, MPFR_RNDN);
        mpfr_set_d(r11021, g, MPFR_RNDN);
        mpfr_neg(r11022, r11021, MPFR_RNDN);
        mpfr_set_d(r11023, h, MPFR_RNDN);
        mpfr_div(r11024, r11022, r11023, MPFR_RNDN);
        mpfr_acos(r11025, r11024, MPFR_RNDN);
        mpfr_div(r11026, r11025, r11019, MPFR_RNDN);
        mpfr_add(r11027, r11020, r11026, MPFR_RNDN);
        mpfr_cos(r11028, r11027, MPFR_RNDN);
        mpfr_mul(r11029, r11016, r11028, MPFR_RNDN);
        return mpfr_get_d(r11029, MPFR_RNDN);
}

static mpfr_t r11030, r11031, r11032, r11033, r11034, r11035, r11036, r11037, r11038, r11039, r11040, r11041, r11042, r11043, r11044, r11045, r11046, r11047, r11048, r11049;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11030, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11031, "1", 10, MPFR_RNDN);
        mpfr_init(r11032);
        mpfr_init(r11033);
        mpfr_init_set_str(r11034, "3", 10, MPFR_RNDN);
        mpfr_init(r11035);
        mpfr_init(r11036);
        mpfr_init(r11037);
        mpfr_init(r11038);
        mpfr_init(r11039);
        mpfr_init(r11040);
        mpfr_init(r11041);
        mpfr_init(r11042);
        mpfr_init(r11043);
        mpfr_init(r11044);
        mpfr_init(r11045);
        mpfr_init(r11046);
        mpfr_init(r11047);
        mpfr_init(r11048);
        mpfr_init(r11049);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_add(r11032, r11030, r11031, MPFR_RNDN);
        mpfr_const_pi(r11033, MPFR_RNDN);
        ;
        mpfr_div(r11035, r11033, r11034, MPFR_RNDN);
        mpfr_mul(r11036, r11032, r11035, MPFR_RNDN);
        mpfr_cos(r11037, r11036, MPFR_RNDN);
        mpfr_set_d(r11038, g, MPFR_RNDN);
        mpfr_set_d(r11039, h, MPFR_RNDN);
        mpfr_div(r11040, r11038, r11039, MPFR_RNDN);
        mpfr_acos(r11041, r11040, MPFR_RNDN);
        mpfr_div(r11042, r11041, r11034, MPFR_RNDN);
        mpfr_cos(r11043, r11042, MPFR_RNDN);
        mpfr_mul(r11044, r11037, r11043, MPFR_RNDN);
        mpfr_sin(r11045, r11036, MPFR_RNDN);
        mpfr_sin(r11046, r11042, MPFR_RNDN);
        mpfr_mul(r11047, r11045, r11046, MPFR_RNDN);
        mpfr_add(r11048, r11044, r11047, MPFR_RNDN);
        mpfr_mul(r11049, r11030, r11048, MPFR_RNDN);
        return mpfr_get_d(r11049, MPFR_RNDN);
}

static mpfr_t r11050, r11051, r11052, r11053, r11054, r11055, r11056, r11057, r11058, r11059, r11060, r11061, r11062, r11063, r11064, r11065, r11066, r11067, r11068, r11069;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11050, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11051, "1", 10, MPFR_RNDN);
        mpfr_init(r11052);
        mpfr_init(r11053);
        mpfr_init_set_str(r11054, "3", 10, MPFR_RNDN);
        mpfr_init(r11055);
        mpfr_init(r11056);
        mpfr_init(r11057);
        mpfr_init(r11058);
        mpfr_init(r11059);
        mpfr_init(r11060);
        mpfr_init(r11061);
        mpfr_init(r11062);
        mpfr_init(r11063);
        mpfr_init(r11064);
        mpfr_init(r11065);
        mpfr_init(r11066);
        mpfr_init(r11067);
        mpfr_init(r11068);
        mpfr_init(r11069);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_add(r11052, r11050, r11051, MPFR_RNDN);
        mpfr_const_pi(r11053, MPFR_RNDN);
        ;
        mpfr_div(r11055, r11053, r11054, MPFR_RNDN);
        mpfr_mul(r11056, r11052, r11055, MPFR_RNDN);
        mpfr_cos(r11057, r11056, MPFR_RNDN);
        mpfr_set_d(r11058, g, MPFR_RNDN);
        mpfr_set_d(r11059, h, MPFR_RNDN);
        mpfr_div(r11060, r11058, r11059, MPFR_RNDN);
        mpfr_acos(r11061, r11060, MPFR_RNDN);
        mpfr_div(r11062, r11061, r11054, MPFR_RNDN);
        mpfr_cos(r11063, r11062, MPFR_RNDN);
        mpfr_mul(r11064, r11057, r11063, MPFR_RNDN);
        mpfr_sin(r11065, r11056, MPFR_RNDN);
        mpfr_sin(r11066, r11062, MPFR_RNDN);
        mpfr_mul(r11067, r11065, r11066, MPFR_RNDN);
        mpfr_add(r11068, r11064, r11067, MPFR_RNDN);
        mpfr_mul(r11069, r11050, r11068, MPFR_RNDN);
        return mpfr_get_d(r11069, MPFR_RNDN);
}

