#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 r18363035 = 2;
        float r18363036 = atan2(1.0, 0.0);
        float r18363037 = r18363035 * r18363036;
        float r18363038 = 3;
        float r18363039 = r18363037 / r18363038;
        float r18363040 = g;
        float r18363041 = -r18363040;
        float r18363042 = h;
        float r18363043 = r18363041 / r18363042;
        float r18363044 = acos(r18363043);
        float r18363045 = r18363044 / r18363038;
        float r18363046 = r18363039 + r18363045;
        float r18363047 = cos(r18363046);
        float r18363048 = r18363035 * r18363047;
        return r18363048;
}

double f_id(double g, double h) {
        double r18363049 = 2;
        double r18363050 = atan2(1.0, 0.0);
        double r18363051 = r18363049 * r18363050;
        double r18363052 = 3;
        double r18363053 = r18363051 / r18363052;
        double r18363054 = g;
        double r18363055 = -r18363054;
        double r18363056 = h;
        double r18363057 = r18363055 / r18363056;
        double r18363058 = acos(r18363057);
        double r18363059 = r18363058 / r18363052;
        double r18363060 = r18363053 + r18363059;
        double r18363061 = cos(r18363060);
        double r18363062 = r18363049 * r18363061;
        return r18363062;
}


double f_of(float g, float h) {
        float r18363063 = 2;
        float r18363064 = g;
        float r18363065 = h;
        float r18363066 = r18363064 / r18363065;
        float r18363067 = acos(r18363066);
        float r18363068 = 3;
        float r18363069 = r18363067 / r18363068;
        float r18363070 = cos(r18363069);
        float r18363071 = 1;
        float r18363072 = r18363063 + r18363071;
        float r18363073 = atan2(1.0, 0.0);
        float r18363074 = r18363073 / r18363068;
        float r18363075 = r18363072 * r18363074;
        float r18363076 = cos(r18363075);
        float r18363077 = r18363070 * r18363076;
        float r18363078 = sin(r18363069);
        float r18363079 = sin(r18363075);
        float r18363080 = r18363078 * r18363079;
        float r18363081 = r18363077 + r18363080;
        float r18363082 = r18363063 * r18363081;
        return r18363082;
}

double f_od(double g, double h) {
        double r18363083 = 2;
        double r18363084 = g;
        double r18363085 = h;
        double r18363086 = r18363084 / r18363085;
        double r18363087 = acos(r18363086);
        double r18363088 = 3;
        double r18363089 = r18363087 / r18363088;
        double r18363090 = cos(r18363089);
        double r18363091 = 1;
        double r18363092 = r18363083 + r18363091;
        double r18363093 = atan2(1.0, 0.0);
        double r18363094 = r18363093 / r18363088;
        double r18363095 = r18363092 * r18363094;
        double r18363096 = cos(r18363095);
        double r18363097 = r18363090 * r18363096;
        double r18363098 = sin(r18363089);
        double r18363099 = sin(r18363095);
        double r18363100 = r18363098 * r18363099;
        double r18363101 = r18363097 + r18363100;
        double r18363102 = r18363083 * r18363101;
        return r18363102;
}

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 r18363103, r18363104, r18363105, r18363106, r18363107, r18363108, r18363109, r18363110, r18363111, r18363112, r18363113, r18363114, r18363115, r18363116;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18363103, "2", 10, MPFR_RNDN);
        mpfr_init(r18363104);
        mpfr_init(r18363105);
        mpfr_init_set_str(r18363106, "3", 10, MPFR_RNDN);
        mpfr_init(r18363107);
        mpfr_init(r18363108);
        mpfr_init(r18363109);
        mpfr_init(r18363110);
        mpfr_init(r18363111);
        mpfr_init(r18363112);
        mpfr_init(r18363113);
        mpfr_init(r18363114);
        mpfr_init(r18363115);
        mpfr_init(r18363116);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r18363104, MPFR_RNDN);
        mpfr_mul(r18363105, r18363103, r18363104, MPFR_RNDN);
        ;
        mpfr_div(r18363107, r18363105, r18363106, MPFR_RNDN);
        mpfr_set_d(r18363108, g, MPFR_RNDN);
        mpfr_neg(r18363109, r18363108, MPFR_RNDN);
        mpfr_set_d(r18363110, h, MPFR_RNDN);
        mpfr_div(r18363111, r18363109, r18363110, MPFR_RNDN);
        mpfr_acos(r18363112, r18363111, MPFR_RNDN);
        mpfr_div(r18363113, r18363112, r18363106, MPFR_RNDN);
        mpfr_add(r18363114, r18363107, r18363113, MPFR_RNDN);
        mpfr_cos(r18363115, r18363114, MPFR_RNDN);
        mpfr_mul(r18363116, r18363103, r18363115, MPFR_RNDN);
        return mpfr_get_d(r18363116, MPFR_RNDN);
}

static mpfr_t r18363117, r18363118, r18363119, r18363120, r18363121, r18363122, r18363123, r18363124, r18363125, r18363126, r18363127, r18363128, r18363129, r18363130, r18363131, r18363132, r18363133, r18363134, r18363135, r18363136;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18363117, "2", 10, MPFR_RNDN);
        mpfr_init(r18363118);
        mpfr_init(r18363119);
        mpfr_init(r18363120);
        mpfr_init(r18363121);
        mpfr_init_set_str(r18363122, "3", 10, MPFR_RNDN);
        mpfr_init(r18363123);
        mpfr_init(r18363124);
        mpfr_init_set_str(r18363125, "1", 10, MPFR_RNDN);
        mpfr_init(r18363126);
        mpfr_init(r18363127);
        mpfr_init(r18363128);
        mpfr_init(r18363129);
        mpfr_init(r18363130);
        mpfr_init(r18363131);
        mpfr_init(r18363132);
        mpfr_init(r18363133);
        mpfr_init(r18363134);
        mpfr_init(r18363135);
        mpfr_init(r18363136);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r18363118, g, MPFR_RNDN);
        mpfr_set_d(r18363119, h, MPFR_RNDN);
        mpfr_div(r18363120, r18363118, r18363119, MPFR_RNDN);
        mpfr_acos(r18363121, r18363120, MPFR_RNDN);
        ;
        mpfr_div(r18363123, r18363121, r18363122, MPFR_RNDN);
        mpfr_cos(r18363124, r18363123, MPFR_RNDN);
        ;
        mpfr_add(r18363126, r18363117, r18363125, MPFR_RNDN);
        mpfr_const_pi(r18363127, MPFR_RNDN);
        mpfr_div(r18363128, r18363127, r18363122, MPFR_RNDN);
        mpfr_mul(r18363129, r18363126, r18363128, MPFR_RNDN);
        mpfr_cos(r18363130, r18363129, MPFR_RNDN);
        mpfr_mul(r18363131, r18363124, r18363130, MPFR_RNDN);
        mpfr_sin(r18363132, r18363123, MPFR_RNDN);
        mpfr_sin(r18363133, r18363129, MPFR_RNDN);
        mpfr_mul(r18363134, r18363132, r18363133, MPFR_RNDN);
        mpfr_add(r18363135, r18363131, r18363134, MPFR_RNDN);
        mpfr_mul(r18363136, r18363117, r18363135, MPFR_RNDN);
        return mpfr_get_d(r18363136, MPFR_RNDN);
}

static mpfr_t r18363137, r18363138, r18363139, r18363140, r18363141, r18363142, r18363143, r18363144, r18363145, r18363146, r18363147, r18363148, r18363149, r18363150, r18363151, r18363152, r18363153, r18363154, r18363155, r18363156;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r18363137, "2", 10, MPFR_RNDN);
        mpfr_init(r18363138);
        mpfr_init(r18363139);
        mpfr_init(r18363140);
        mpfr_init(r18363141);
        mpfr_init_set_str(r18363142, "3", 10, MPFR_RNDN);
        mpfr_init(r18363143);
        mpfr_init(r18363144);
        mpfr_init_set_str(r18363145, "1", 10, MPFR_RNDN);
        mpfr_init(r18363146);
        mpfr_init(r18363147);
        mpfr_init(r18363148);
        mpfr_init(r18363149);
        mpfr_init(r18363150);
        mpfr_init(r18363151);
        mpfr_init(r18363152);
        mpfr_init(r18363153);
        mpfr_init(r18363154);
        mpfr_init(r18363155);
        mpfr_init(r18363156);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r18363138, g, MPFR_RNDN);
        mpfr_set_d(r18363139, h, MPFR_RNDN);
        mpfr_div(r18363140, r18363138, r18363139, MPFR_RNDN);
        mpfr_acos(r18363141, r18363140, MPFR_RNDN);
        ;
        mpfr_div(r18363143, r18363141, r18363142, MPFR_RNDN);
        mpfr_cos(r18363144, r18363143, MPFR_RNDN);
        ;
        mpfr_add(r18363146, r18363137, r18363145, MPFR_RNDN);
        mpfr_const_pi(r18363147, MPFR_RNDN);
        mpfr_div(r18363148, r18363147, r18363142, MPFR_RNDN);
        mpfr_mul(r18363149, r18363146, r18363148, MPFR_RNDN);
        mpfr_cos(r18363150, r18363149, MPFR_RNDN);
        mpfr_mul(r18363151, r18363144, r18363150, MPFR_RNDN);
        mpfr_sin(r18363152, r18363143, MPFR_RNDN);
        mpfr_sin(r18363153, r18363149, MPFR_RNDN);
        mpfr_mul(r18363154, r18363152, r18363153, MPFR_RNDN);
        mpfr_add(r18363155, r18363151, r18363154, MPFR_RNDN);
        mpfr_mul(r18363156, r18363137, r18363155, MPFR_RNDN);
        return mpfr_get_d(r18363156, MPFR_RNDN);
}

