#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 r10913 = 2;
        float r10914 = atan2(1.0, 0.0);
        float r10915 = r10913 * r10914;
        float r10916 = 3;
        float r10917 = r10915 / r10916;
        float r10918 = g;
        float r10919 = -r10918;
        float r10920 = h;
        float r10921 = r10919 / r10920;
        float r10922 = acos(r10921);
        float r10923 = r10922 / r10916;
        float r10924 = r10917 + r10923;
        float r10925 = cos(r10924);
        float r10926 = r10913 * r10925;
        return r10926;
}

double f_id(double g, double h) {
        double r10927 = 2;
        double r10928 = atan2(1.0, 0.0);
        double r10929 = r10927 * r10928;
        double r10930 = 3;
        double r10931 = r10929 / r10930;
        double r10932 = g;
        double r10933 = -r10932;
        double r10934 = h;
        double r10935 = r10933 / r10934;
        double r10936 = acos(r10935);
        double r10937 = r10936 / r10930;
        double r10938 = r10931 + r10937;
        double r10939 = cos(r10938);
        double r10940 = r10927 * r10939;
        return r10940;
}


double f_of(float g, float h) {
        float r10941 = 2;
        float r10942 = 1;
        float r10943 = r10941 + r10942;
        float r10944 = atan2(1.0, 0.0);
        float r10945 = 3;
        float r10946 = r10944 / r10945;
        float r10947 = r10943 * r10946;
        float r10948 = cos(r10947);
        float r10949 = g;
        float r10950 = h;
        float r10951 = r10949 / r10950;
        float r10952 = acos(r10951);
        float r10953 = r10952 / r10945;
        float r10954 = cos(r10953);
        float r10955 = r10948 * r10954;
        float r10956 = sin(r10947);
        float r10957 = sin(r10953);
        float r10958 = r10956 * r10957;
        float r10959 = r10955 + r10958;
        float r10960 = r10941 * r10959;
        return r10960;
}

double f_od(double g, double h) {
        double r10961 = 2;
        double r10962 = 1;
        double r10963 = r10961 + r10962;
        double r10964 = atan2(1.0, 0.0);
        double r10965 = 3;
        double r10966 = r10964 / r10965;
        double r10967 = r10963 * r10966;
        double r10968 = cos(r10967);
        double r10969 = g;
        double r10970 = h;
        double r10971 = r10969 / r10970;
        double r10972 = acos(r10971);
        double r10973 = r10972 / r10965;
        double r10974 = cos(r10973);
        double r10975 = r10968 * r10974;
        double r10976 = sin(r10967);
        double r10977 = sin(r10973);
        double r10978 = r10976 * r10977;
        double r10979 = r10975 + r10978;
        double r10980 = r10961 * r10979;
        return r10980;
}

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 r10981, r10982, r10983, r10984, r10985, r10986, r10987, r10988, r10989, r10990, r10991, r10992, r10993, r10994;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10981, "2", 10, MPFR_RNDN);
        mpfr_init(r10982);
        mpfr_init(r10983);
        mpfr_init_set_str(r10984, "3", 10, MPFR_RNDN);
        mpfr_init(r10985);
        mpfr_init(r10986);
        mpfr_init(r10987);
        mpfr_init(r10988);
        mpfr_init(r10989);
        mpfr_init(r10990);
        mpfr_init(r10991);
        mpfr_init(r10992);
        mpfr_init(r10993);
        mpfr_init(r10994);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r10982, MPFR_RNDN);
        mpfr_mul(r10983, r10981, r10982, MPFR_RNDN);
        ;
        mpfr_div(r10985, r10983, r10984, MPFR_RNDN);
        mpfr_set_d(r10986, g, MPFR_RNDN);
        mpfr_neg(r10987, r10986, MPFR_RNDN);
        mpfr_set_d(r10988, h, MPFR_RNDN);
        mpfr_div(r10989, r10987, r10988, MPFR_RNDN);
        mpfr_acos(r10990, r10989, MPFR_RNDN);
        mpfr_div(r10991, r10990, r10984, MPFR_RNDN);
        mpfr_add(r10992, r10985, r10991, MPFR_RNDN);
        mpfr_cos(r10993, r10992, MPFR_RNDN);
        mpfr_mul(r10994, r10981, r10993, MPFR_RNDN);
        return mpfr_get_d(r10994, MPFR_RNDN);
}

static mpfr_t r10995, r10996, r10997, r10998, r10999, r11000, r11001, r11002, r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010, r11011, r11012, r11013, r11014;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10995, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10996, "1", 10, MPFR_RNDN);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init_set_str(r10999, "3", 10, MPFR_RNDN);
        mpfr_init(r11000);
        mpfr_init(r11001);
        mpfr_init(r11002);
        mpfr_init(r11003);
        mpfr_init(r11004);
        mpfr_init(r11005);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init(r11008);
        mpfr_init(r11009);
        mpfr_init(r11010);
        mpfr_init(r11011);
        mpfr_init(r11012);
        mpfr_init(r11013);
        mpfr_init(r11014);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_add(r10997, r10995, r10996, MPFR_RNDN);
        mpfr_const_pi(r10998, MPFR_RNDN);
        ;
        mpfr_div(r11000, r10998, r10999, MPFR_RNDN);
        mpfr_mul(r11001, r10997, r11000, MPFR_RNDN);
        mpfr_cos(r11002, r11001, MPFR_RNDN);
        mpfr_set_d(r11003, g, MPFR_RNDN);
        mpfr_set_d(r11004, h, MPFR_RNDN);
        mpfr_div(r11005, r11003, r11004, MPFR_RNDN);
        mpfr_acos(r11006, r11005, MPFR_RNDN);
        mpfr_div(r11007, r11006, r10999, MPFR_RNDN);
        mpfr_cos(r11008, r11007, MPFR_RNDN);
        mpfr_mul(r11009, r11002, r11008, MPFR_RNDN);
        mpfr_sin(r11010, r11001, MPFR_RNDN);
        mpfr_sin(r11011, r11007, MPFR_RNDN);
        mpfr_mul(r11012, r11010, r11011, MPFR_RNDN);
        mpfr_add(r11013, r11009, r11012, MPFR_RNDN);
        mpfr_mul(r11014, r10995, r11013, MPFR_RNDN);
        return mpfr_get_d(r11014, MPFR_RNDN);
}

static mpfr_t r11015, r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029, r11030, r11031, r11032, r11033, r11034;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11015, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11016, "1", 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);
        mpfr_init(r11030);
        mpfr_init(r11031);
        mpfr_init(r11032);
        mpfr_init(r11033);
        mpfr_init(r11034);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_add(r11017, r11015, r11016, MPFR_RNDN);
        mpfr_const_pi(r11018, MPFR_RNDN);
        ;
        mpfr_div(r11020, r11018, r11019, MPFR_RNDN);
        mpfr_mul(r11021, r11017, r11020, MPFR_RNDN);
        mpfr_cos(r11022, r11021, MPFR_RNDN);
        mpfr_set_d(r11023, g, MPFR_RNDN);
        mpfr_set_d(r11024, h, MPFR_RNDN);
        mpfr_div(r11025, r11023, r11024, MPFR_RNDN);
        mpfr_acos(r11026, r11025, MPFR_RNDN);
        mpfr_div(r11027, r11026, r11019, MPFR_RNDN);
        mpfr_cos(r11028, r11027, MPFR_RNDN);
        mpfr_mul(r11029, r11022, r11028, MPFR_RNDN);
        mpfr_sin(r11030, r11021, MPFR_RNDN);
        mpfr_sin(r11031, r11027, MPFR_RNDN);
        mpfr_mul(r11032, r11030, r11031, MPFR_RNDN);
        mpfr_add(r11033, r11029, r11032, MPFR_RNDN);
        mpfr_mul(r11034, r11015, r11033, MPFR_RNDN);
        return mpfr_get_d(r11034, MPFR_RNDN);
}

