#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "normal distribution";

double f_if(float u1, float u2) {
        float r8108 = 1;
        float r8109 = 6;
        float r8110 = r8108 / r8109;
        float r8111 = -2;
        float r8112 = u1;
        float r8113 = log(r8112);
        float r8114 = r8111 * r8113;
        float r8115 = 0.5;
        float r8116 = pow(r8114, r8115);
        float r8117 = r8110 * r8116;
        float r8118 = 2;
        float r8119 = atan2(1.0, 0.0);
        float r8120 = r8118 * r8119;
        float r8121 = u2;
        float r8122 = r8120 * r8121;
        float r8123 = cos(r8122);
        float r8124 = r8117 * r8123;
        float r8125 = r8124 + r8115;
        return r8125;
}

double f_id(double u1, double u2) {
        double r8126 = 1;
        double r8127 = 6;
        double r8128 = r8126 / r8127;
        double r8129 = -2;
        double r8130 = u1;
        double r8131 = log(r8130);
        double r8132 = r8129 * r8131;
        double r8133 = 0.5;
        double r8134 = pow(r8132, r8133);
        double r8135 = r8128 * r8134;
        double r8136 = 2;
        double r8137 = atan2(1.0, 0.0);
        double r8138 = r8136 * r8137;
        double r8139 = u2;
        double r8140 = r8138 * r8139;
        double r8141 = cos(r8140);
        double r8142 = r8135 * r8141;
        double r8143 = r8142 + r8133;
        return r8143;
}


double f_of(float u1, float u2) {
        float r8144 = 0.5;
        float r8145 = r8144 * r8144;
        float r8146 = -2;
        float r8147 = u1;
        float r8148 = log(r8147);
        float r8149 = r8146 * r8148;
        float r8150 = pow(r8149, r8144);
        float r8151 = 6;
        float r8152 = r8150 / r8151;
        float r8153 = 2;
        float r8154 = u2;
        float r8155 = r8153 * r8154;
        float r8156 = atan2(1.0, 0.0);
        float r8157 = r8155 * r8156;
        float r8158 = cos(r8157);
        float r8159 = r8152 * r8158;
        float r8160 = r8159 * r8159;
        float r8161 = r8145 - r8160;
        float r8162 = r8144 - r8159;
        float r8163 = r8161 / r8162;
        return r8163;
}

double f_od(double u1, double u2) {
        double r8164 = 0.5;
        double r8165 = r8164 * r8164;
        double r8166 = -2;
        double r8167 = u1;
        double r8168 = log(r8167);
        double r8169 = r8166 * r8168;
        double r8170 = pow(r8169, r8164);
        double r8171 = 6;
        double r8172 = r8170 / r8171;
        double r8173 = 2;
        double r8174 = u2;
        double r8175 = r8173 * r8174;
        double r8176 = atan2(1.0, 0.0);
        double r8177 = r8175 * r8176;
        double r8178 = cos(r8177);
        double r8179 = r8172 * r8178;
        double r8180 = r8179 * r8179;
        double r8181 = r8165 - r8180;
        double r8182 = r8164 - r8179;
        double r8183 = r8181 / r8182;
        return r8183;
}

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 r8184, r8185, r8186, r8187, r8188, r8189, r8190, r8191, r8192, r8193, r8194, r8195, r8196, r8197, r8198, r8199, r8200, r8201;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8184, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8185, "6", 10, MPFR_RNDN);
        mpfr_init(r8186);
        mpfr_init_set_str(r8187, "-2", 10, MPFR_RNDN);
        mpfr_init(r8188);
        mpfr_init(r8189);
        mpfr_init(r8190);
        mpfr_init_set_str(r8191, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8192);
        mpfr_init(r8193);
        mpfr_init_set_str(r8194, "2", 10, MPFR_RNDN);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init(r8199);
        mpfr_init(r8200);
        mpfr_init(r8201);
}

double f_im(double u1, double u2) {
        ;
        ;
        mpfr_div(r8186, r8184, r8185, MPFR_RNDN);
        ;
        mpfr_set_d(r8188, u1, MPFR_RNDN);
        mpfr_log(r8189, r8188, MPFR_RNDN);
        mpfr_mul(r8190, r8187, r8189, MPFR_RNDN);
        ;
        mpfr_pow(r8192, r8190, r8191, MPFR_RNDN);
        mpfr_mul(r8193, r8186, r8192, MPFR_RNDN);
        ;
        mpfr_const_pi(r8195, MPFR_RNDN);
        mpfr_mul(r8196, r8194, r8195, MPFR_RNDN);
        mpfr_set_d(r8197, u2, MPFR_RNDN);
        mpfr_mul(r8198, r8196, r8197, MPFR_RNDN);
        mpfr_cos(r8199, r8198, MPFR_RNDN);
        mpfr_mul(r8200, r8193, r8199, MPFR_RNDN);
        mpfr_add(r8201, r8200, r8191, MPFR_RNDN);
        return mpfr_get_d(r8201, MPFR_RNDN);
}

static mpfr_t r8202, r8203, r8204, r8205, r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215, r8216, r8217, r8218, r8219, r8220, r8221;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8202, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8203);
        mpfr_init_set_str(r8204, "-2", 10, MPFR_RNDN);
        mpfr_init(r8205);
        mpfr_init(r8206);
        mpfr_init(r8207);
        mpfr_init(r8208);
        mpfr_init_set_str(r8209, "6", 10, MPFR_RNDN);
        mpfr_init(r8210);
        mpfr_init_set_str(r8211, "2", 10, MPFR_RNDN);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init(r8221);
}

double f_fm(double u1, double u2) {
        ;
        mpfr_mul(r8203, r8202, r8202, MPFR_RNDN);
        ;
        mpfr_set_d(r8205, u1, MPFR_RNDN);
        mpfr_log(r8206, r8205, MPFR_RNDN);
        mpfr_mul(r8207, r8204, r8206, MPFR_RNDN);
        mpfr_pow(r8208, r8207, r8202, MPFR_RNDN);
        ;
        mpfr_div(r8210, r8208, r8209, MPFR_RNDN);
        ;
        mpfr_set_d(r8212, u2, MPFR_RNDN);
        mpfr_mul(r8213, r8211, r8212, MPFR_RNDN);
        mpfr_const_pi(r8214, MPFR_RNDN);
        mpfr_mul(r8215, r8213, r8214, MPFR_RNDN);
        mpfr_cos(r8216, r8215, MPFR_RNDN);
        mpfr_mul(r8217, r8210, r8216, MPFR_RNDN);
        mpfr_mul(r8218, r8217, r8217, MPFR_RNDN);
        mpfr_sub(r8219, r8203, r8218, MPFR_RNDN);
        mpfr_sub(r8220, r8202, r8217, MPFR_RNDN);
        mpfr_div(r8221, r8219, r8220, MPFR_RNDN);
        return mpfr_get_d(r8221, MPFR_RNDN);
}

static mpfr_t r8222, r8223, r8224, r8225, r8226, r8227, r8228, r8229, r8230, r8231, r8232, r8233, r8234, r8235, r8236, r8237, r8238, r8239, r8240, r8241;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8222, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8223);
        mpfr_init_set_str(r8224, "-2", 10, MPFR_RNDN);
        mpfr_init(r8225);
        mpfr_init(r8226);
        mpfr_init(r8227);
        mpfr_init(r8228);
        mpfr_init_set_str(r8229, "6", 10, MPFR_RNDN);
        mpfr_init(r8230);
        mpfr_init_set_str(r8231, "2", 10, MPFR_RNDN);
        mpfr_init(r8232);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init(r8238);
        mpfr_init(r8239);
        mpfr_init(r8240);
        mpfr_init(r8241);
}

double f_dm(double u1, double u2) {
        ;
        mpfr_mul(r8223, r8222, r8222, MPFR_RNDN);
        ;
        mpfr_set_d(r8225, u1, MPFR_RNDN);
        mpfr_log(r8226, r8225, MPFR_RNDN);
        mpfr_mul(r8227, r8224, r8226, MPFR_RNDN);
        mpfr_pow(r8228, r8227, r8222, MPFR_RNDN);
        ;
        mpfr_div(r8230, r8228, r8229, MPFR_RNDN);
        ;
        mpfr_set_d(r8232, u2, MPFR_RNDN);
        mpfr_mul(r8233, r8231, r8232, MPFR_RNDN);
        mpfr_const_pi(r8234, MPFR_RNDN);
        mpfr_mul(r8235, r8233, r8234, MPFR_RNDN);
        mpfr_cos(r8236, r8235, MPFR_RNDN);
        mpfr_mul(r8237, r8230, r8236, MPFR_RNDN);
        mpfr_mul(r8238, r8237, r8237, MPFR_RNDN);
        mpfr_sub(r8239, r8223, r8238, MPFR_RNDN);
        mpfr_sub(r8240, r8222, r8237, MPFR_RNDN);
        mpfr_div(r8241, r8239, r8240, MPFR_RNDN);
        return mpfr_get_d(r8241, MPFR_RNDN);
}

