#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 r10871 = 2;
        float r10872 = atan2(1.0, 0.0);
        float r10873 = r10871 * r10872;
        float r10874 = 3;
        float r10875 = r10873 / r10874;
        float r10876 = g;
        float r10877 = -r10876;
        float r10878 = h;
        float r10879 = r10877 / r10878;
        float r10880 = acos(r10879);
        float r10881 = r10880 / r10874;
        float r10882 = r10875 + r10881;
        float r10883 = cos(r10882);
        float r10884 = r10871 * r10883;
        return r10884;
}

double f_id(double g, double h) {
        double r10885 = 2;
        double r10886 = atan2(1.0, 0.0);
        double r10887 = r10885 * r10886;
        double r10888 = 3;
        double r10889 = r10887 / r10888;
        double r10890 = g;
        double r10891 = -r10890;
        double r10892 = h;
        double r10893 = r10891 / r10892;
        double r10894 = acos(r10893);
        double r10895 = r10894 / r10888;
        double r10896 = r10889 + r10895;
        double r10897 = cos(r10896);
        double r10898 = r10885 * r10897;
        return r10898;
}


double f_of(float g, float h) {
        float r10899 = 2;
        float r10900 = 1;
        float r10901 = r10899 + r10900;
        float r10902 = atan2(1.0, 0.0);
        float r10903 = 3;
        float r10904 = r10902 / r10903;
        float r10905 = r10901 * r10904;
        float r10906 = cos(r10905);
        float r10907 = g;
        float r10908 = h;
        float r10909 = r10907 / r10908;
        float r10910 = acos(r10909);
        float r10911 = r10910 / r10903;
        float r10912 = cos(r10911);
        float r10913 = r10906 * r10912;
        float r10914 = sin(r10905);
        float r10915 = sin(r10911);
        float r10916 = r10914 * r10915;
        float r10917 = r10913 + r10916;
        float r10918 = r10899 * r10917;
        return r10918;
}

double f_od(double g, double h) {
        double r10919 = 2;
        double r10920 = 1;
        double r10921 = r10919 + r10920;
        double r10922 = atan2(1.0, 0.0);
        double r10923 = 3;
        double r10924 = r10922 / r10923;
        double r10925 = r10921 * r10924;
        double r10926 = cos(r10925);
        double r10927 = g;
        double r10928 = h;
        double r10929 = r10927 / r10928;
        double r10930 = acos(r10929);
        double r10931 = r10930 / r10923;
        double r10932 = cos(r10931);
        double r10933 = r10926 * r10932;
        double r10934 = sin(r10925);
        double r10935 = sin(r10931);
        double r10936 = r10934 * r10935;
        double r10937 = r10933 + r10936;
        double r10938 = r10919 * r10937;
        return r10938;
}

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 r10939, r10940, r10941, r10942, r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950, r10951, r10952;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10939, "2", 10, MPFR_RNDN);
        mpfr_init(r10940);
        mpfr_init(r10941);
        mpfr_init_set_str(r10942, "3", 10, MPFR_RNDN);
        mpfr_init(r10943);
        mpfr_init(r10944);
        mpfr_init(r10945);
        mpfr_init(r10946);
        mpfr_init(r10947);
        mpfr_init(r10948);
        mpfr_init(r10949);
        mpfr_init(r10950);
        mpfr_init(r10951);
        mpfr_init(r10952);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r10940, MPFR_RNDN);
        mpfr_mul(r10941, r10939, r10940, MPFR_RNDN);
        ;
        mpfr_div(r10943, r10941, r10942, MPFR_RNDN);
        mpfr_set_d(r10944, g, MPFR_RNDN);
        mpfr_neg(r10945, r10944, MPFR_RNDN);
        mpfr_set_d(r10946, h, MPFR_RNDN);
        mpfr_div(r10947, r10945, r10946, MPFR_RNDN);
        mpfr_acos(r10948, r10947, MPFR_RNDN);
        mpfr_div(r10949, r10948, r10942, MPFR_RNDN);
        mpfr_add(r10950, r10943, r10949, MPFR_RNDN);
        mpfr_cos(r10951, r10950, MPFR_RNDN);
        mpfr_mul(r10952, r10939, r10951, MPFR_RNDN);
        return mpfr_get_d(r10952, MPFR_RNDN);
}

static mpfr_t r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960, r10961, r10962, r10963, r10964, r10965, r10966, r10967, r10968, r10969, r10970, r10971, r10972;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10953, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10954, "1", 10, MPFR_RNDN);
        mpfr_init(r10955);
        mpfr_init(r10956);
        mpfr_init_set_str(r10957, "3", 10, MPFR_RNDN);
        mpfr_init(r10958);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
        mpfr_init(r10962);
        mpfr_init(r10963);
        mpfr_init(r10964);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init(r10971);
        mpfr_init(r10972);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_add(r10955, r10953, r10954, MPFR_RNDN);
        mpfr_const_pi(r10956, MPFR_RNDN);
        ;
        mpfr_div(r10958, r10956, r10957, MPFR_RNDN);
        mpfr_mul(r10959, r10955, r10958, MPFR_RNDN);
        mpfr_cos(r10960, r10959, MPFR_RNDN);
        mpfr_set_d(r10961, g, MPFR_RNDN);
        mpfr_set_d(r10962, h, MPFR_RNDN);
        mpfr_div(r10963, r10961, r10962, MPFR_RNDN);
        mpfr_acos(r10964, r10963, MPFR_RNDN);
        mpfr_div(r10965, r10964, r10957, MPFR_RNDN);
        mpfr_cos(r10966, r10965, MPFR_RNDN);
        mpfr_mul(r10967, r10960, r10966, MPFR_RNDN);
        mpfr_sin(r10968, r10959, MPFR_RNDN);
        mpfr_sin(r10969, r10965, MPFR_RNDN);
        mpfr_mul(r10970, r10968, r10969, MPFR_RNDN);
        mpfr_add(r10971, r10967, r10970, MPFR_RNDN);
        mpfr_mul(r10972, r10953, r10971, MPFR_RNDN);
        return mpfr_get_d(r10972, MPFR_RNDN);
}

static mpfr_t r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980, r10981, r10982, r10983, r10984, r10985, r10986, r10987, r10988, r10989, r10990, r10991, r10992;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10973, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10974, "1", 10, MPFR_RNDN);
        mpfr_init(r10975);
        mpfr_init(r10976);
        mpfr_init_set_str(r10977, "3", 10, MPFR_RNDN);
        mpfr_init(r10978);
        mpfr_init(r10979);
        mpfr_init(r10980);
        mpfr_init(r10981);
        mpfr_init(r10982);
        mpfr_init(r10983);
        mpfr_init(r10984);
        mpfr_init(r10985);
        mpfr_init(r10986);
        mpfr_init(r10987);
        mpfr_init(r10988);
        mpfr_init(r10989);
        mpfr_init(r10990);
        mpfr_init(r10991);
        mpfr_init(r10992);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_add(r10975, r10973, r10974, MPFR_RNDN);
        mpfr_const_pi(r10976, MPFR_RNDN);
        ;
        mpfr_div(r10978, r10976, r10977, MPFR_RNDN);
        mpfr_mul(r10979, r10975, r10978, MPFR_RNDN);
        mpfr_cos(r10980, r10979, MPFR_RNDN);
        mpfr_set_d(r10981, g, MPFR_RNDN);
        mpfr_set_d(r10982, h, MPFR_RNDN);
        mpfr_div(r10983, r10981, r10982, MPFR_RNDN);
        mpfr_acos(r10984, r10983, MPFR_RNDN);
        mpfr_div(r10985, r10984, r10977, MPFR_RNDN);
        mpfr_cos(r10986, r10985, MPFR_RNDN);
        mpfr_mul(r10987, r10980, r10986, MPFR_RNDN);
        mpfr_sin(r10988, r10979, MPFR_RNDN);
        mpfr_sin(r10989, r10985, MPFR_RNDN);
        mpfr_mul(r10990, r10988, r10989, MPFR_RNDN);
        mpfr_add(r10991, r10987, r10990, MPFR_RNDN);
        mpfr_mul(r10992, r10973, r10991, MPFR_RNDN);
        return mpfr_get_d(r10992, MPFR_RNDN);
}

