#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 r37203 = 2;
        float r37204 = atan2(1.0, 0.0);
        float r37205 = r37203 * r37204;
        float r37206 = 3;
        float r37207 = r37205 / r37206;
        float r37208 = g;
        float r37209 = -r37208;
        float r37210 = h;
        float r37211 = r37209 / r37210;
        float r37212 = acos(r37211);
        float r37213 = r37212 / r37206;
        float r37214 = r37207 + r37213;
        float r37215 = cos(r37214);
        float r37216 = r37203 * r37215;
        return r37216;
}

double f_id(double g, double h) {
        double r37217 = 2;
        double r37218 = atan2(1.0, 0.0);
        double r37219 = r37217 * r37218;
        double r37220 = 3;
        double r37221 = r37219 / r37220;
        double r37222 = g;
        double r37223 = -r37222;
        double r37224 = h;
        double r37225 = r37223 / r37224;
        double r37226 = acos(r37225);
        double r37227 = r37226 / r37220;
        double r37228 = r37221 + r37227;
        double r37229 = cos(r37228);
        double r37230 = r37217 * r37229;
        return r37230;
}


double f_of(float g, float h) {
        float r37231 = 2;
        float r37232 = g;
        float r37233 = h;
        float r37234 = r37232 / r37233;
        float r37235 = acos(r37234);
        float r37236 = 3;
        float r37237 = r37235 / r37236;
        float r37238 = cos(r37237);
        float r37239 = 1;
        float r37240 = r37231 + r37239;
        float r37241 = atan2(1.0, 0.0);
        float r37242 = r37241 / r37236;
        float r37243 = r37240 * r37242;
        float r37244 = cos(r37243);
        float r37245 = r37238 * r37244;
        float r37246 = sin(r37237);
        float r37247 = sin(r37243);
        float r37248 = r37246 * r37247;
        float r37249 = r37245 + r37248;
        float r37250 = r37231 * r37249;
        return r37250;
}

double f_od(double g, double h) {
        double r37251 = 2;
        double r37252 = g;
        double r37253 = h;
        double r37254 = r37252 / r37253;
        double r37255 = acos(r37254);
        double r37256 = 3;
        double r37257 = r37255 / r37256;
        double r37258 = cos(r37257);
        double r37259 = 1;
        double r37260 = r37251 + r37259;
        double r37261 = atan2(1.0, 0.0);
        double r37262 = r37261 / r37256;
        double r37263 = r37260 * r37262;
        double r37264 = cos(r37263);
        double r37265 = r37258 * r37264;
        double r37266 = sin(r37257);
        double r37267 = sin(r37263);
        double r37268 = r37266 * r37267;
        double r37269 = r37265 + r37268;
        double r37270 = r37251 * r37269;
        return r37270;
}

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 r37271, r37272, r37273, r37274, r37275, r37276, r37277, r37278, r37279, r37280, r37281, r37282, r37283, r37284;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37271, "2", 10, MPFR_RNDN);
        mpfr_init(r37272);
        mpfr_init(r37273);
        mpfr_init_set_str(r37274, "3", 10, MPFR_RNDN);
        mpfr_init(r37275);
        mpfr_init(r37276);
        mpfr_init(r37277);
        mpfr_init(r37278);
        mpfr_init(r37279);
        mpfr_init(r37280);
        mpfr_init(r37281);
        mpfr_init(r37282);
        mpfr_init(r37283);
        mpfr_init(r37284);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r37272, MPFR_RNDN);
        mpfr_mul(r37273, r37271, r37272, MPFR_RNDN);
        ;
        mpfr_div(r37275, r37273, r37274, MPFR_RNDN);
        mpfr_set_d(r37276, g, MPFR_RNDN);
        mpfr_neg(r37277, r37276, MPFR_RNDN);
        mpfr_set_d(r37278, h, MPFR_RNDN);
        mpfr_div(r37279, r37277, r37278, MPFR_RNDN);
        mpfr_acos(r37280, r37279, MPFR_RNDN);
        mpfr_div(r37281, r37280, r37274, MPFR_RNDN);
        mpfr_add(r37282, r37275, r37281, MPFR_RNDN);
        mpfr_cos(r37283, r37282, MPFR_RNDN);
        mpfr_mul(r37284, r37271, r37283, MPFR_RNDN);
        return mpfr_get_d(r37284, MPFR_RNDN);
}

static mpfr_t r37285, r37286, r37287, r37288, r37289, r37290, r37291, r37292, r37293, r37294, r37295, r37296, r37297, r37298, r37299, r37300, r37301, r37302, r37303, r37304;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37285, "2", 10, MPFR_RNDN);
        mpfr_init(r37286);
        mpfr_init(r37287);
        mpfr_init(r37288);
        mpfr_init(r37289);
        mpfr_init_set_str(r37290, "3", 10, MPFR_RNDN);
        mpfr_init(r37291);
        mpfr_init(r37292);
        mpfr_init_set_str(r37293, "1", 10, MPFR_RNDN);
        mpfr_init(r37294);
        mpfr_init(r37295);
        mpfr_init(r37296);
        mpfr_init(r37297);
        mpfr_init(r37298);
        mpfr_init(r37299);
        mpfr_init(r37300);
        mpfr_init(r37301);
        mpfr_init(r37302);
        mpfr_init(r37303);
        mpfr_init(r37304);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r37286, g, MPFR_RNDN);
        mpfr_set_d(r37287, h, MPFR_RNDN);
        mpfr_div(r37288, r37286, r37287, MPFR_RNDN);
        mpfr_acos(r37289, r37288, MPFR_RNDN);
        ;
        mpfr_div(r37291, r37289, r37290, MPFR_RNDN);
        mpfr_cos(r37292, r37291, MPFR_RNDN);
        ;
        mpfr_add(r37294, r37285, r37293, MPFR_RNDN);
        mpfr_const_pi(r37295, MPFR_RNDN);
        mpfr_div(r37296, r37295, r37290, MPFR_RNDN);
        mpfr_mul(r37297, r37294, r37296, MPFR_RNDN);
        mpfr_cos(r37298, r37297, MPFR_RNDN);
        mpfr_mul(r37299, r37292, r37298, MPFR_RNDN);
        mpfr_sin(r37300, r37291, MPFR_RNDN);
        mpfr_sin(r37301, r37297, MPFR_RNDN);
        mpfr_mul(r37302, r37300, r37301, MPFR_RNDN);
        mpfr_add(r37303, r37299, r37302, MPFR_RNDN);
        mpfr_mul(r37304, r37285, r37303, MPFR_RNDN);
        return mpfr_get_d(r37304, MPFR_RNDN);
}

static mpfr_t r37305, r37306, r37307, r37308, r37309, r37310, r37311, r37312, r37313, r37314, r37315, r37316, r37317, r37318, r37319, r37320, r37321, r37322, r37323, r37324;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37305, "2", 10, MPFR_RNDN);
        mpfr_init(r37306);
        mpfr_init(r37307);
        mpfr_init(r37308);
        mpfr_init(r37309);
        mpfr_init_set_str(r37310, "3", 10, MPFR_RNDN);
        mpfr_init(r37311);
        mpfr_init(r37312);
        mpfr_init_set_str(r37313, "1", 10, MPFR_RNDN);
        mpfr_init(r37314);
        mpfr_init(r37315);
        mpfr_init(r37316);
        mpfr_init(r37317);
        mpfr_init(r37318);
        mpfr_init(r37319);
        mpfr_init(r37320);
        mpfr_init(r37321);
        mpfr_init(r37322);
        mpfr_init(r37323);
        mpfr_init(r37324);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r37306, g, MPFR_RNDN);
        mpfr_set_d(r37307, h, MPFR_RNDN);
        mpfr_div(r37308, r37306, r37307, MPFR_RNDN);
        mpfr_acos(r37309, r37308, MPFR_RNDN);
        ;
        mpfr_div(r37311, r37309, r37310, MPFR_RNDN);
        mpfr_cos(r37312, r37311, MPFR_RNDN);
        ;
        mpfr_add(r37314, r37305, r37313, MPFR_RNDN);
        mpfr_const_pi(r37315, MPFR_RNDN);
        mpfr_div(r37316, r37315, r37310, MPFR_RNDN);
        mpfr_mul(r37317, r37314, r37316, MPFR_RNDN);
        mpfr_cos(r37318, r37317, MPFR_RNDN);
        mpfr_mul(r37319, r37312, r37318, MPFR_RNDN);
        mpfr_sin(r37320, r37311, MPFR_RNDN);
        mpfr_sin(r37321, r37317, MPFR_RNDN);
        mpfr_mul(r37322, r37320, r37321, MPFR_RNDN);
        mpfr_add(r37323, r37319, r37322, MPFR_RNDN);
        mpfr_mul(r37324, r37305, r37323, MPFR_RNDN);
        return mpfr_get_d(r37324, MPFR_RNDN);
}

