#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 r8340 = 1;
        float r8341 = 6;
        float r8342 = r8340 / r8341;
        float r8343 = -2;
        float r8344 = u1;
        float r8345 = log(r8344);
        float r8346 = r8343 * r8345;
        float r8347 = 0.5;
        float r8348 = pow(r8346, r8347);
        float r8349 = r8342 * r8348;
        float r8350 = 2;
        float r8351 = atan2(1.0, 0.0);
        float r8352 = r8350 * r8351;
        float r8353 = u2;
        float r8354 = r8352 * r8353;
        float r8355 = cos(r8354);
        float r8356 = r8349 * r8355;
        float r8357 = r8356 + r8347;
        return r8357;
}

double f_id(double u1, double u2) {
        double r8358 = 1;
        double r8359 = 6;
        double r8360 = r8358 / r8359;
        double r8361 = -2;
        double r8362 = u1;
        double r8363 = log(r8362);
        double r8364 = r8361 * r8363;
        double r8365 = 0.5;
        double r8366 = pow(r8364, r8365);
        double r8367 = r8360 * r8366;
        double r8368 = 2;
        double r8369 = atan2(1.0, 0.0);
        double r8370 = r8368 * r8369;
        double r8371 = u2;
        double r8372 = r8370 * r8371;
        double r8373 = cos(r8372);
        double r8374 = r8367 * r8373;
        double r8375 = r8374 + r8365;
        return r8375;
}


double f_of(float u1, float u2) {
        float r8376 = 1;
        float r8377 = 6;
        float r8378 = r8376 / r8377;
        float r8379 = -2;
        float r8380 = u1;
        float r8381 = log(r8380);
        float r8382 = r8379 * r8381;
        float r8383 = 0.5;
        float r8384 = pow(r8382, r8383);
        float r8385 = r8378 * r8384;
        float r8386 = 2;
        float r8387 = atan2(1.0, 0.0);
        float r8388 = r8386 * r8387;
        float r8389 = u2;
        float r8390 = r8388 * r8389;
        float r8391 = cos(r8390);
        float r8392 = r8385 * r8391;
        float r8393 = r8392 + r8383;
        return r8393;
}

double f_od(double u1, double u2) {
        double r8394 = 1;
        double r8395 = 6;
        double r8396 = r8394 / r8395;
        double r8397 = -2;
        double r8398 = u1;
        double r8399 = log(r8398);
        double r8400 = r8397 * r8399;
        double r8401 = 0.5;
        double r8402 = pow(r8400, r8401);
        double r8403 = r8396 * r8402;
        double r8404 = 2;
        double r8405 = atan2(1.0, 0.0);
        double r8406 = r8404 * r8405;
        double r8407 = u2;
        double r8408 = r8406 * r8407;
        double r8409 = cos(r8408);
        double r8410 = r8403 * r8409;
        double r8411 = r8410 + r8401;
        return r8411;
}

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 r8412, r8413, r8414, r8415, r8416, r8417, r8418, r8419, r8420, r8421, r8422, r8423, r8424, r8425, r8426, r8427, r8428, r8429;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8412, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8413, "6", 10, MPFR_RNDN);
        mpfr_init(r8414);
        mpfr_init_set_str(r8415, "-2", 10, MPFR_RNDN);
        mpfr_init(r8416);
        mpfr_init(r8417);
        mpfr_init(r8418);
        mpfr_init_set_str(r8419, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8420);
        mpfr_init(r8421);
        mpfr_init_set_str(r8422, "2", 10, MPFR_RNDN);
        mpfr_init(r8423);
        mpfr_init(r8424);
        mpfr_init(r8425);
        mpfr_init(r8426);
        mpfr_init(r8427);
        mpfr_init(r8428);
        mpfr_init(r8429);
}

double f_im(double u1, double u2) {
        ;
        ;
        mpfr_div(r8414, r8412, r8413, MPFR_RNDN);
        ;
        mpfr_set_d(r8416, u1, MPFR_RNDN);
        mpfr_log(r8417, r8416, MPFR_RNDN);
        mpfr_mul(r8418, r8415, r8417, MPFR_RNDN);
        ;
        mpfr_pow(r8420, r8418, r8419, MPFR_RNDN);
        mpfr_mul(r8421, r8414, r8420, MPFR_RNDN);
        ;
        mpfr_const_pi(r8423, MPFR_RNDN);
        mpfr_mul(r8424, r8422, r8423, MPFR_RNDN);
        mpfr_set_d(r8425, u2, MPFR_RNDN);
        mpfr_mul(r8426, r8424, r8425, MPFR_RNDN);
        mpfr_cos(r8427, r8426, MPFR_RNDN);
        mpfr_mul(r8428, r8421, r8427, MPFR_RNDN);
        mpfr_add(r8429, r8428, r8419, MPFR_RNDN);
        return mpfr_get_d(r8429, MPFR_RNDN);
}

static mpfr_t r8430, r8431, r8432, r8433, r8434, r8435, r8436, r8437, r8438, r8439, r8440, r8441, r8442, r8443, r8444, r8445, r8446, r8447;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8430, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8431, "6", 10, MPFR_RNDN);
        mpfr_init(r8432);
        mpfr_init_set_str(r8433, "-2", 10, MPFR_RNDN);
        mpfr_init(r8434);
        mpfr_init(r8435);
        mpfr_init(r8436);
        mpfr_init_set_str(r8437, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8438);
        mpfr_init(r8439);
        mpfr_init_set_str(r8440, "2", 10, MPFR_RNDN);
        mpfr_init(r8441);
        mpfr_init(r8442);
        mpfr_init(r8443);
        mpfr_init(r8444);
        mpfr_init(r8445);
        mpfr_init(r8446);
        mpfr_init(r8447);
}

double f_fm(double u1, double u2) {
        ;
        ;
        mpfr_div(r8432, r8430, r8431, MPFR_RNDN);
        ;
        mpfr_set_d(r8434, u1, MPFR_RNDN);
        mpfr_log(r8435, r8434, MPFR_RNDN);
        mpfr_mul(r8436, r8433, r8435, MPFR_RNDN);
        ;
        mpfr_pow(r8438, r8436, r8437, MPFR_RNDN);
        mpfr_mul(r8439, r8432, r8438, MPFR_RNDN);
        ;
        mpfr_const_pi(r8441, MPFR_RNDN);
        mpfr_mul(r8442, r8440, r8441, MPFR_RNDN);
        mpfr_set_d(r8443, u2, MPFR_RNDN);
        mpfr_mul(r8444, r8442, r8443, MPFR_RNDN);
        mpfr_cos(r8445, r8444, MPFR_RNDN);
        mpfr_mul(r8446, r8439, r8445, MPFR_RNDN);
        mpfr_add(r8447, r8446, r8437, MPFR_RNDN);
        return mpfr_get_d(r8447, MPFR_RNDN);
}

static mpfr_t r8448, r8449, r8450, r8451, r8452, r8453, r8454, r8455, r8456, r8457, r8458, r8459, r8460, r8461, r8462, r8463, r8464, r8465;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8448, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8449, "6", 10, MPFR_RNDN);
        mpfr_init(r8450);
        mpfr_init_set_str(r8451, "-2", 10, MPFR_RNDN);
        mpfr_init(r8452);
        mpfr_init(r8453);
        mpfr_init(r8454);
        mpfr_init_set_str(r8455, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8456);
        mpfr_init(r8457);
        mpfr_init_set_str(r8458, "2", 10, MPFR_RNDN);
        mpfr_init(r8459);
        mpfr_init(r8460);
        mpfr_init(r8461);
        mpfr_init(r8462);
        mpfr_init(r8463);
        mpfr_init(r8464);
        mpfr_init(r8465);
}

double f_dm(double u1, double u2) {
        ;
        ;
        mpfr_div(r8450, r8448, r8449, MPFR_RNDN);
        ;
        mpfr_set_d(r8452, u1, MPFR_RNDN);
        mpfr_log(r8453, r8452, MPFR_RNDN);
        mpfr_mul(r8454, r8451, r8453, MPFR_RNDN);
        ;
        mpfr_pow(r8456, r8454, r8455, MPFR_RNDN);
        mpfr_mul(r8457, r8450, r8456, MPFR_RNDN);
        ;
        mpfr_const_pi(r8459, MPFR_RNDN);
        mpfr_mul(r8460, r8458, r8459, MPFR_RNDN);
        mpfr_set_d(r8461, u2, MPFR_RNDN);
        mpfr_mul(r8462, r8460, r8461, MPFR_RNDN);
        mpfr_cos(r8463, r8462, MPFR_RNDN);
        mpfr_mul(r8464, r8457, r8463, MPFR_RNDN);
        mpfr_add(r8465, r8464, r8455, MPFR_RNDN);
        return mpfr_get_d(r8465, MPFR_RNDN);
}

