#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 r27188 = 2;
        float r27189 = atan2(1.0, 0.0);
        float r27190 = r27188 * r27189;
        float r27191 = 3;
        float r27192 = r27190 / r27191;
        float r27193 = g;
        float r27194 = -r27193;
        float r27195 = h;
        float r27196 = r27194 / r27195;
        float r27197 = acos(r27196);
        float r27198 = r27197 / r27191;
        float r27199 = r27192 + r27198;
        float r27200 = cos(r27199);
        float r27201 = r27188 * r27200;
        return r27201;
}

double f_id(double g, double h) {
        double r27202 = 2;
        double r27203 = atan2(1.0, 0.0);
        double r27204 = r27202 * r27203;
        double r27205 = 3;
        double r27206 = r27204 / r27205;
        double r27207 = g;
        double r27208 = -r27207;
        double r27209 = h;
        double r27210 = r27208 / r27209;
        double r27211 = acos(r27210);
        double r27212 = r27211 / r27205;
        double r27213 = r27206 + r27212;
        double r27214 = cos(r27213);
        double r27215 = r27202 * r27214;
        return r27215;
}


double f_of(float g, float h) {
        float r27216 = 2;
        float r27217 = g;
        float r27218 = h;
        float r27219 = r27217 / r27218;
        float r27220 = acos(r27219);
        float r27221 = 3;
        float r27222 = r27220 / r27221;
        float r27223 = cos(r27222);
        float r27224 = 1;
        float r27225 = r27216 + r27224;
        float r27226 = atan2(1.0, 0.0);
        float r27227 = r27226 / r27221;
        float r27228 = r27225 * r27227;
        float r27229 = cos(r27228);
        float r27230 = r27223 * r27229;
        float r27231 = sin(r27222);
        float r27232 = sin(r27228);
        float r27233 = r27231 * r27232;
        float r27234 = r27230 + r27233;
        float r27235 = r27216 * r27234;
        return r27235;
}

double f_od(double g, double h) {
        double r27236 = 2;
        double r27237 = g;
        double r27238 = h;
        double r27239 = r27237 / r27238;
        double r27240 = acos(r27239);
        double r27241 = 3;
        double r27242 = r27240 / r27241;
        double r27243 = cos(r27242);
        double r27244 = 1;
        double r27245 = r27236 + r27244;
        double r27246 = atan2(1.0, 0.0);
        double r27247 = r27246 / r27241;
        double r27248 = r27245 * r27247;
        double r27249 = cos(r27248);
        double r27250 = r27243 * r27249;
        double r27251 = sin(r27242);
        double r27252 = sin(r27248);
        double r27253 = r27251 * r27252;
        double r27254 = r27250 + r27253;
        double r27255 = r27236 * r27254;
        return r27255;
}

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 r27256, r27257, r27258, r27259, r27260, r27261, r27262, r27263, r27264, r27265, r27266, r27267, r27268, r27269;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27256, "2", 10, MPFR_RNDN);
        mpfr_init(r27257);
        mpfr_init(r27258);
        mpfr_init_set_str(r27259, "3", 10, MPFR_RNDN);
        mpfr_init(r27260);
        mpfr_init(r27261);
        mpfr_init(r27262);
        mpfr_init(r27263);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
        mpfr_init(r27267);
        mpfr_init(r27268);
        mpfr_init(r27269);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r27257, MPFR_RNDN);
        mpfr_mul(r27258, r27256, r27257, MPFR_RNDN);
        ;
        mpfr_div(r27260, r27258, r27259, MPFR_RNDN);
        mpfr_set_d(r27261, g, MPFR_RNDN);
        mpfr_neg(r27262, r27261, MPFR_RNDN);
        mpfr_set_d(r27263, h, MPFR_RNDN);
        mpfr_div(r27264, r27262, r27263, MPFR_RNDN);
        mpfr_acos(r27265, r27264, MPFR_RNDN);
        mpfr_div(r27266, r27265, r27259, MPFR_RNDN);
        mpfr_add(r27267, r27260, r27266, MPFR_RNDN);
        mpfr_cos(r27268, r27267, MPFR_RNDN);
        mpfr_mul(r27269, r27256, r27268, MPFR_RNDN);
        return mpfr_get_d(r27269, MPFR_RNDN);
}

static mpfr_t r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27270, "2", 10, MPFR_RNDN);
        mpfr_init(r27271);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init_set_str(r27275, "3", 10, MPFR_RNDN);
        mpfr_init(r27276);
        mpfr_init(r27277);
        mpfr_init_set_str(r27278, "1", 10, MPFR_RNDN);
        mpfr_init(r27279);
        mpfr_init(r27280);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
        mpfr_init(r27284);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r27271, g, MPFR_RNDN);
        mpfr_set_d(r27272, h, MPFR_RNDN);
        mpfr_div(r27273, r27271, r27272, MPFR_RNDN);
        mpfr_acos(r27274, r27273, MPFR_RNDN);
        ;
        mpfr_div(r27276, r27274, r27275, MPFR_RNDN);
        mpfr_cos(r27277, r27276, MPFR_RNDN);
        ;
        mpfr_add(r27279, r27270, r27278, MPFR_RNDN);
        mpfr_const_pi(r27280, MPFR_RNDN);
        mpfr_div(r27281, r27280, r27275, MPFR_RNDN);
        mpfr_mul(r27282, r27279, r27281, MPFR_RNDN);
        mpfr_cos(r27283, r27282, MPFR_RNDN);
        mpfr_mul(r27284, r27277, r27283, MPFR_RNDN);
        mpfr_sin(r27285, r27276, MPFR_RNDN);
        mpfr_sin(r27286, r27282, MPFR_RNDN);
        mpfr_mul(r27287, r27285, r27286, MPFR_RNDN);
        mpfr_add(r27288, r27284, r27287, MPFR_RNDN);
        mpfr_mul(r27289, r27270, r27288, MPFR_RNDN);
        return mpfr_get_d(r27289, MPFR_RNDN);
}

static mpfr_t r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27290, "2", 10, MPFR_RNDN);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init_set_str(r27295, "3", 10, MPFR_RNDN);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init_set_str(r27298, "1", 10, MPFR_RNDN);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r27291, g, MPFR_RNDN);
        mpfr_set_d(r27292, h, MPFR_RNDN);
        mpfr_div(r27293, r27291, r27292, MPFR_RNDN);
        mpfr_acos(r27294, r27293, MPFR_RNDN);
        ;
        mpfr_div(r27296, r27294, r27295, MPFR_RNDN);
        mpfr_cos(r27297, r27296, MPFR_RNDN);
        ;
        mpfr_add(r27299, r27290, r27298, MPFR_RNDN);
        mpfr_const_pi(r27300, MPFR_RNDN);
        mpfr_div(r27301, r27300, r27295, MPFR_RNDN);
        mpfr_mul(r27302, r27299, r27301, MPFR_RNDN);
        mpfr_cos(r27303, r27302, MPFR_RNDN);
        mpfr_mul(r27304, r27297, r27303, MPFR_RNDN);
        mpfr_sin(r27305, r27296, MPFR_RNDN);
        mpfr_sin(r27306, r27302, MPFR_RNDN);
        mpfr_mul(r27307, r27305, r27306, MPFR_RNDN);
        mpfr_add(r27308, r27304, r27307, MPFR_RNDN);
        mpfr_mul(r27309, r27290, r27308, MPFR_RNDN);
        return mpfr_get_d(r27309, MPFR_RNDN);
}

