#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 r8048 = 1;
        float r8049 = 6;
        float r8050 = r8048 / r8049;
        float r8051 = -2;
        float r8052 = u1;
        float r8053 = log(r8052);
        float r8054 = r8051 * r8053;
        float r8055 = 0.5;
        float r8056 = pow(r8054, r8055);
        float r8057 = r8050 * r8056;
        float r8058 = 2;
        float r8059 = atan2(1.0, 0.0);
        float r8060 = r8058 * r8059;
        float r8061 = u2;
        float r8062 = r8060 * r8061;
        float r8063 = cos(r8062);
        float r8064 = r8057 * r8063;
        float r8065 = r8064 + r8055;
        return r8065;
}

double f_id(double u1, double u2) {
        double r8066 = 1;
        double r8067 = 6;
        double r8068 = r8066 / r8067;
        double r8069 = -2;
        double r8070 = u1;
        double r8071 = log(r8070);
        double r8072 = r8069 * r8071;
        double r8073 = 0.5;
        double r8074 = pow(r8072, r8073);
        double r8075 = r8068 * r8074;
        double r8076 = 2;
        double r8077 = atan2(1.0, 0.0);
        double r8078 = r8076 * r8077;
        double r8079 = u2;
        double r8080 = r8078 * r8079;
        double r8081 = cos(r8080);
        double r8082 = r8075 * r8081;
        double r8083 = r8082 + r8073;
        return r8083;
}


double f_of(float u1, float u2) {
        float r8084 = 1;
        float r8085 = 6;
        float r8086 = r8084 / r8085;
        float r8087 = -2;
        float r8088 = u1;
        float r8089 = log(r8088);
        float r8090 = r8087 * r8089;
        float r8091 = 0.5;
        float r8092 = pow(r8090, r8091);
        float r8093 = r8086 * r8092;
        float r8094 = 2;
        float r8095 = atan2(1.0, 0.0);
        float r8096 = r8094 * r8095;
        float r8097 = u2;
        float r8098 = r8096 * r8097;
        float r8099 = cos(r8098);
        float r8100 = r8093 * r8099;
        float r8101 = r8100 + r8091;
        return r8101;
}

double f_od(double u1, double u2) {
        double r8102 = 1;
        double r8103 = 6;
        double r8104 = r8102 / r8103;
        double r8105 = -2;
        double r8106 = u1;
        double r8107 = log(r8106);
        double r8108 = r8105 * r8107;
        double r8109 = 0.5;
        double r8110 = pow(r8108, r8109);
        double r8111 = r8104 * r8110;
        double r8112 = 2;
        double r8113 = atan2(1.0, 0.0);
        double r8114 = r8112 * r8113;
        double r8115 = u2;
        double r8116 = r8114 * r8115;
        double r8117 = cos(r8116);
        double r8118 = r8111 * r8117;
        double r8119 = r8118 + r8109;
        return r8119;
}

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 r8120, r8121, r8122, r8123, r8124, r8125, r8126, r8127, r8128, r8129, r8130, r8131, r8132, r8133, r8134, r8135, r8136, r8137;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8120, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8121, "6", 10, MPFR_RNDN);
        mpfr_init(r8122);
        mpfr_init_set_str(r8123, "-2", 10, MPFR_RNDN);
        mpfr_init(r8124);
        mpfr_init(r8125);
        mpfr_init(r8126);
        mpfr_init_set_str(r8127, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8128);
        mpfr_init(r8129);
        mpfr_init_set_str(r8130, "2", 10, MPFR_RNDN);
        mpfr_init(r8131);
        mpfr_init(r8132);
        mpfr_init(r8133);
        mpfr_init(r8134);
        mpfr_init(r8135);
        mpfr_init(r8136);
        mpfr_init(r8137);
}

double f_im(double u1, double u2) {
        ;
        ;
        mpfr_div(r8122, r8120, r8121, MPFR_RNDN);
        ;
        mpfr_set_d(r8124, u1, MPFR_RNDN);
        mpfr_log(r8125, r8124, MPFR_RNDN);
        mpfr_mul(r8126, r8123, r8125, MPFR_RNDN);
        ;
        mpfr_pow(r8128, r8126, r8127, MPFR_RNDN);
        mpfr_mul(r8129, r8122, r8128, MPFR_RNDN);
        ;
        mpfr_const_pi(r8131, MPFR_RNDN);
        mpfr_mul(r8132, r8130, r8131, MPFR_RNDN);
        mpfr_set_d(r8133, u2, MPFR_RNDN);
        mpfr_mul(r8134, r8132, r8133, MPFR_RNDN);
        mpfr_cos(r8135, r8134, MPFR_RNDN);
        mpfr_mul(r8136, r8129, r8135, MPFR_RNDN);
        mpfr_add(r8137, r8136, r8127, MPFR_RNDN);
        return mpfr_get_d(r8137, MPFR_RNDN);
}

static mpfr_t r8138, r8139, r8140, r8141, r8142, r8143, r8144, r8145, r8146, r8147, r8148, r8149, r8150, r8151, r8152, r8153, r8154, r8155;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8138, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8139, "6", 10, MPFR_RNDN);
        mpfr_init(r8140);
        mpfr_init_set_str(r8141, "-2", 10, MPFR_RNDN);
        mpfr_init(r8142);
        mpfr_init(r8143);
        mpfr_init(r8144);
        mpfr_init_set_str(r8145, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8146);
        mpfr_init(r8147);
        mpfr_init_set_str(r8148, "2", 10, MPFR_RNDN);
        mpfr_init(r8149);
        mpfr_init(r8150);
        mpfr_init(r8151);
        mpfr_init(r8152);
        mpfr_init(r8153);
        mpfr_init(r8154);
        mpfr_init(r8155);
}

double f_fm(double u1, double u2) {
        ;
        ;
        mpfr_div(r8140, r8138, r8139, MPFR_RNDN);
        ;
        mpfr_set_d(r8142, u1, MPFR_RNDN);
        mpfr_log(r8143, r8142, MPFR_RNDN);
        mpfr_mul(r8144, r8141, r8143, MPFR_RNDN);
        ;
        mpfr_pow(r8146, r8144, r8145, MPFR_RNDN);
        mpfr_mul(r8147, r8140, r8146, MPFR_RNDN);
        ;
        mpfr_const_pi(r8149, MPFR_RNDN);
        mpfr_mul(r8150, r8148, r8149, MPFR_RNDN);
        mpfr_set_d(r8151, u2, MPFR_RNDN);
        mpfr_mul(r8152, r8150, r8151, MPFR_RNDN);
        mpfr_cos(r8153, r8152, MPFR_RNDN);
        mpfr_mul(r8154, r8147, r8153, MPFR_RNDN);
        mpfr_add(r8155, r8154, r8145, MPFR_RNDN);
        return mpfr_get_d(r8155, MPFR_RNDN);
}

static mpfr_t r8156, r8157, r8158, r8159, r8160, r8161, r8162, r8163, r8164, r8165, r8166, r8167, r8168, r8169, r8170, r8171, r8172, r8173;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8156, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8157, "6", 10, MPFR_RNDN);
        mpfr_init(r8158);
        mpfr_init_set_str(r8159, "-2", 10, MPFR_RNDN);
        mpfr_init(r8160);
        mpfr_init(r8161);
        mpfr_init(r8162);
        mpfr_init_set_str(r8163, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8164);
        mpfr_init(r8165);
        mpfr_init_set_str(r8166, "2", 10, MPFR_RNDN);
        mpfr_init(r8167);
        mpfr_init(r8168);
        mpfr_init(r8169);
        mpfr_init(r8170);
        mpfr_init(r8171);
        mpfr_init(r8172);
        mpfr_init(r8173);
}

double f_dm(double u1, double u2) {
        ;
        ;
        mpfr_div(r8158, r8156, r8157, MPFR_RNDN);
        ;
        mpfr_set_d(r8160, u1, MPFR_RNDN);
        mpfr_log(r8161, r8160, MPFR_RNDN);
        mpfr_mul(r8162, r8159, r8161, MPFR_RNDN);
        ;
        mpfr_pow(r8164, r8162, r8163, MPFR_RNDN);
        mpfr_mul(r8165, r8158, r8164, MPFR_RNDN);
        ;
        mpfr_const_pi(r8167, MPFR_RNDN);
        mpfr_mul(r8168, r8166, r8167, MPFR_RNDN);
        mpfr_set_d(r8169, u2, MPFR_RNDN);
        mpfr_mul(r8170, r8168, r8169, MPFR_RNDN);
        mpfr_cos(r8171, r8170, MPFR_RNDN);
        mpfr_mul(r8172, r8165, r8171, MPFR_RNDN);
        mpfr_add(r8173, r8172, r8163, MPFR_RNDN);
        return mpfr_get_d(r8173, MPFR_RNDN);
}

