#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 r27224 = 2;
        float r27225 = atan2(1.0, 0.0);
        float r27226 = r27224 * r27225;
        float r27227 = 3;
        float r27228 = r27226 / r27227;
        float r27229 = g;
        float r27230 = -r27229;
        float r27231 = h;
        float r27232 = r27230 / r27231;
        float r27233 = acos(r27232);
        float r27234 = r27233 / r27227;
        float r27235 = r27228 + r27234;
        float r27236 = cos(r27235);
        float r27237 = r27224 * r27236;
        return r27237;
}

double f_id(double g, double h) {
        double r27238 = 2;
        double r27239 = atan2(1.0, 0.0);
        double r27240 = r27238 * r27239;
        double r27241 = 3;
        double r27242 = r27240 / r27241;
        double r27243 = g;
        double r27244 = -r27243;
        double r27245 = h;
        double r27246 = r27244 / r27245;
        double r27247 = acos(r27246);
        double r27248 = r27247 / r27241;
        double r27249 = r27242 + r27248;
        double r27250 = cos(r27249);
        double r27251 = r27238 * r27250;
        return r27251;
}


double f_of(float g, float h) {
        float r27252 = 2;
        float r27253 = g;
        float r27254 = h;
        float r27255 = r27253 / r27254;
        float r27256 = acos(r27255);
        float r27257 = 3;
        float r27258 = r27256 / r27257;
        float r27259 = cos(r27258);
        float r27260 = 1;
        float r27261 = r27252 + r27260;
        float r27262 = atan2(1.0, 0.0);
        float r27263 = r27262 / r27257;
        float r27264 = r27261 * r27263;
        float r27265 = cos(r27264);
        float r27266 = r27259 * r27265;
        float r27267 = sin(r27258);
        float r27268 = sin(r27264);
        float r27269 = r27267 * r27268;
        float r27270 = r27266 + r27269;
        float r27271 = r27252 * r27270;
        return r27271;
}

double f_od(double g, double h) {
        double r27272 = 2;
        double r27273 = g;
        double r27274 = h;
        double r27275 = r27273 / r27274;
        double r27276 = acos(r27275);
        double r27277 = 3;
        double r27278 = r27276 / r27277;
        double r27279 = cos(r27278);
        double r27280 = 1;
        double r27281 = r27272 + r27280;
        double r27282 = atan2(1.0, 0.0);
        double r27283 = r27282 / r27277;
        double r27284 = r27281 * r27283;
        double r27285 = cos(r27284);
        double r27286 = r27279 * r27285;
        double r27287 = sin(r27278);
        double r27288 = sin(r27284);
        double r27289 = r27287 * r27288;
        double r27290 = r27286 + r27289;
        double r27291 = r27272 * r27290;
        return r27291;
}

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 r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27292, "2", 10, MPFR_RNDN);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init_set_str(r27295, "3", 10, MPFR_RNDN);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r27293, MPFR_RNDN);
        mpfr_mul(r27294, r27292, r27293, MPFR_RNDN);
        ;
        mpfr_div(r27296, r27294, r27295, MPFR_RNDN);
        mpfr_set_d(r27297, g, MPFR_RNDN);
        mpfr_neg(r27298, r27297, MPFR_RNDN);
        mpfr_set_d(r27299, h, MPFR_RNDN);
        mpfr_div(r27300, r27298, r27299, MPFR_RNDN);
        mpfr_acos(r27301, r27300, MPFR_RNDN);
        mpfr_div(r27302, r27301, r27295, MPFR_RNDN);
        mpfr_add(r27303, r27296, r27302, MPFR_RNDN);
        mpfr_cos(r27304, r27303, MPFR_RNDN);
        mpfr_mul(r27305, r27292, r27304, MPFR_RNDN);
        return mpfr_get_d(r27305, MPFR_RNDN);
}

static mpfr_t r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27306, "2", 10, MPFR_RNDN);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init_set_str(r27311, "3", 10, MPFR_RNDN);
        mpfr_init(r27312);
        mpfr_init(r27313);
        mpfr_init_set_str(r27314, "1", 10, MPFR_RNDN);
        mpfr_init(r27315);
        mpfr_init(r27316);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init(r27321);
        mpfr_init(r27322);
        mpfr_init(r27323);
        mpfr_init(r27324);
        mpfr_init(r27325);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r27307, g, MPFR_RNDN);
        mpfr_set_d(r27308, h, MPFR_RNDN);
        mpfr_div(r27309, r27307, r27308, MPFR_RNDN);
        mpfr_acos(r27310, r27309, MPFR_RNDN);
        ;
        mpfr_div(r27312, r27310, r27311, MPFR_RNDN);
        mpfr_cos(r27313, r27312, MPFR_RNDN);
        ;
        mpfr_add(r27315, r27306, r27314, MPFR_RNDN);
        mpfr_const_pi(r27316, MPFR_RNDN);
        mpfr_div(r27317, r27316, r27311, MPFR_RNDN);
        mpfr_mul(r27318, r27315, r27317, MPFR_RNDN);
        mpfr_cos(r27319, r27318, MPFR_RNDN);
        mpfr_mul(r27320, r27313, r27319, MPFR_RNDN);
        mpfr_sin(r27321, r27312, MPFR_RNDN);
        mpfr_sin(r27322, r27318, MPFR_RNDN);
        mpfr_mul(r27323, r27321, r27322, MPFR_RNDN);
        mpfr_add(r27324, r27320, r27323, MPFR_RNDN);
        mpfr_mul(r27325, r27306, r27324, MPFR_RNDN);
        return mpfr_get_d(r27325, MPFR_RNDN);
}

static mpfr_t r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335, r27336, r27337, r27338, r27339, r27340, r27341, r27342, r27343, r27344, r27345;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27326, "2", 10, MPFR_RNDN);
        mpfr_init(r27327);
        mpfr_init(r27328);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init_set_str(r27331, "3", 10, MPFR_RNDN);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init_set_str(r27334, "1", 10, MPFR_RNDN);
        mpfr_init(r27335);
        mpfr_init(r27336);
        mpfr_init(r27337);
        mpfr_init(r27338);
        mpfr_init(r27339);
        mpfr_init(r27340);
        mpfr_init(r27341);
        mpfr_init(r27342);
        mpfr_init(r27343);
        mpfr_init(r27344);
        mpfr_init(r27345);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r27327, g, MPFR_RNDN);
        mpfr_set_d(r27328, h, MPFR_RNDN);
        mpfr_div(r27329, r27327, r27328, MPFR_RNDN);
        mpfr_acos(r27330, r27329, MPFR_RNDN);
        ;
        mpfr_div(r27332, r27330, r27331, MPFR_RNDN);
        mpfr_cos(r27333, r27332, MPFR_RNDN);
        ;
        mpfr_add(r27335, r27326, r27334, MPFR_RNDN);
        mpfr_const_pi(r27336, MPFR_RNDN);
        mpfr_div(r27337, r27336, r27331, MPFR_RNDN);
        mpfr_mul(r27338, r27335, r27337, MPFR_RNDN);
        mpfr_cos(r27339, r27338, MPFR_RNDN);
        mpfr_mul(r27340, r27333, r27339, MPFR_RNDN);
        mpfr_sin(r27341, r27332, MPFR_RNDN);
        mpfr_sin(r27342, r27338, MPFR_RNDN);
        mpfr_mul(r27343, r27341, r27342, MPFR_RNDN);
        mpfr_add(r27344, r27340, r27343, MPFR_RNDN);
        mpfr_mul(r27345, r27326, r27344, MPFR_RNDN);
        return mpfr_get_d(r27345, MPFR_RNDN);
}

