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

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


double f_of(float g, float h) {
        float r27215 = 2;
        float r27216 = 3;
        float r27217 = r27215 / r27216;
        float r27218 = atan2(1.0, 0.0);
        float r27219 = r27217 * r27218;
        float r27220 = cos(r27219);
        float r27221 = g;
        float r27222 = h;
        float r27223 = r27221 / r27222;
        float r27224 = -r27223;
        float r27225 = acos(r27224);
        float r27226 = r27225 / r27216;
        float r27227 = cos(r27226);
        float r27228 = r27220 * r27227;
        float r27229 = exp(r27228);
        float r27230 = log1p(r27219);
        float r27231 = expm1(r27230);
        float r27232 = sin(r27231);
        float r27233 = sin(r27226);
        float r27234 = r27232 * r27233;
        float r27235 = exp(r27234);
        float r27236 = r27229 / r27235;
        float r27237 = log(r27236);
        float r27238 = r27215 * r27237;
        return r27238;
}

double f_od(double g, double h) {
        double r27239 = 2;
        double r27240 = 3;
        double r27241 = r27239 / r27240;
        double r27242 = atan2(1.0, 0.0);
        double r27243 = r27241 * r27242;
        double r27244 = cos(r27243);
        double r27245 = g;
        double r27246 = h;
        double r27247 = r27245 / r27246;
        double r27248 = -r27247;
        double r27249 = acos(r27248);
        double r27250 = r27249 / r27240;
        double r27251 = cos(r27250);
        double r27252 = r27244 * r27251;
        double r27253 = exp(r27252);
        double r27254 = log1p(r27243);
        double r27255 = expm1(r27254);
        double r27256 = sin(r27255);
        double r27257 = sin(r27250);
        double r27258 = r27256 * r27257;
        double r27259 = exp(r27258);
        double r27260 = r27253 / r27259;
        double r27261 = log(r27260);
        double r27262 = r27239 * r27261;
        return r27262;
}

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 r27263, r27264, r27265, r27266, r27267, r27268, r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27263, "2", 10, MPFR_RNDN);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init_set_str(r27266, "3", 10, MPFR_RNDN);
        mpfr_init(r27267);
        mpfr_init(r27268);
        mpfr_init(r27269);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init(r27272);
        mpfr_init(r27273);
        mpfr_init(r27274);
        mpfr_init(r27275);
        mpfr_init(r27276);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r27264, MPFR_RNDN);
        mpfr_mul(r27265, r27263, r27264, MPFR_RNDN);
        ;
        mpfr_div(r27267, r27265, r27266, MPFR_RNDN);
        mpfr_set_d(r27268, g, MPFR_RNDN);
        mpfr_neg(r27269, r27268, MPFR_RNDN);
        mpfr_set_d(r27270, h, MPFR_RNDN);
        mpfr_div(r27271, r27269, r27270, MPFR_RNDN);
        mpfr_acos(r27272, r27271, MPFR_RNDN);
        mpfr_div(r27273, r27272, r27266, MPFR_RNDN);
        mpfr_add(r27274, r27267, r27273, MPFR_RNDN);
        mpfr_cos(r27275, r27274, MPFR_RNDN);
        mpfr_mul(r27276, r27263, r27275, MPFR_RNDN);
        return mpfr_get_d(r27276, MPFR_RNDN);
}

static mpfr_t r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27277, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27278, "3", 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);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init(r27295);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init(r27300);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_div(r27279, r27277, r27278, MPFR_RNDN);
        mpfr_const_pi(r27280, MPFR_RNDN);
        mpfr_mul(r27281, r27279, r27280, MPFR_RNDN);
        mpfr_cos(r27282, r27281, MPFR_RNDN);
        mpfr_set_d(r27283, g, MPFR_RNDN);
        mpfr_set_d(r27284, h, MPFR_RNDN);
        mpfr_div(r27285, r27283, r27284, MPFR_RNDN);
        mpfr_neg(r27286, r27285, MPFR_RNDN);
        mpfr_acos(r27287, r27286, MPFR_RNDN);
        mpfr_div(r27288, r27287, r27278, MPFR_RNDN);
        mpfr_cos(r27289, r27288, MPFR_RNDN);
        mpfr_mul(r27290, r27282, r27289, MPFR_RNDN);
        mpfr_exp(r27291, r27290, MPFR_RNDN);
        mpfr_log1p(r27292, r27281, MPFR_RNDN);
        mpfr_expm1(r27293, r27292, MPFR_RNDN);
        mpfr_sin(r27294, r27293, MPFR_RNDN);
        mpfr_sin(r27295, r27288, MPFR_RNDN);
        mpfr_mul(r27296, r27294, r27295, MPFR_RNDN);
        mpfr_exp(r27297, r27296, MPFR_RNDN);
        mpfr_div(r27298, r27291, r27297, MPFR_RNDN);
        mpfr_log(r27299, r27298, MPFR_RNDN);
        mpfr_mul(r27300, r27277, r27299, MPFR_RNDN);
        return mpfr_get_d(r27300, MPFR_RNDN);
}

static mpfr_t r27301, r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r27301, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27302, "3", 10, MPFR_RNDN);
        mpfr_init(r27303);
        mpfr_init(r27304);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init(r27313);
        mpfr_init(r27314);
        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);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_div(r27303, r27301, r27302, MPFR_RNDN);
        mpfr_const_pi(r27304, MPFR_RNDN);
        mpfr_mul(r27305, r27303, r27304, MPFR_RNDN);
        mpfr_cos(r27306, r27305, MPFR_RNDN);
        mpfr_set_d(r27307, g, MPFR_RNDN);
        mpfr_set_d(r27308, h, MPFR_RNDN);
        mpfr_div(r27309, r27307, r27308, MPFR_RNDN);
        mpfr_neg(r27310, r27309, MPFR_RNDN);
        mpfr_acos(r27311, r27310, MPFR_RNDN);
        mpfr_div(r27312, r27311, r27302, MPFR_RNDN);
        mpfr_cos(r27313, r27312, MPFR_RNDN);
        mpfr_mul(r27314, r27306, r27313, MPFR_RNDN);
        mpfr_exp(r27315, r27314, MPFR_RNDN);
        mpfr_log1p(r27316, r27305, MPFR_RNDN);
        mpfr_expm1(r27317, r27316, MPFR_RNDN);
        mpfr_sin(r27318, r27317, MPFR_RNDN);
        mpfr_sin(r27319, r27312, MPFR_RNDN);
        mpfr_mul(r27320, r27318, r27319, MPFR_RNDN);
        mpfr_exp(r27321, r27320, MPFR_RNDN);
        mpfr_div(r27322, r27315, r27321, MPFR_RNDN);
        mpfr_log(r27323, r27322, MPFR_RNDN);
        mpfr_mul(r27324, r27301, r27323, MPFR_RNDN);
        return mpfr_get_d(r27324, MPFR_RNDN);
}

