#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 r8576 = 1;
        float r8577 = 6;
        float r8578 = r8576 / r8577;
        float r8579 = -2;
        float r8580 = u1;
        float r8581 = log(r8580);
        float r8582 = r8579 * r8581;
        float r8583 = 0.5;
        float r8584 = pow(r8582, r8583);
        float r8585 = r8578 * r8584;
        float r8586 = 2;
        float r8587 = atan2(1.0, 0.0);
        float r8588 = r8586 * r8587;
        float r8589 = u2;
        float r8590 = r8588 * r8589;
        float r8591 = cos(r8590);
        float r8592 = r8585 * r8591;
        float r8593 = r8592 + r8583;
        return r8593;
}

double f_id(double u1, double u2) {
        double r8594 = 1;
        double r8595 = 6;
        double r8596 = r8594 / r8595;
        double r8597 = -2;
        double r8598 = u1;
        double r8599 = log(r8598);
        double r8600 = r8597 * r8599;
        double r8601 = 0.5;
        double r8602 = pow(r8600, r8601);
        double r8603 = r8596 * r8602;
        double r8604 = 2;
        double r8605 = atan2(1.0, 0.0);
        double r8606 = r8604 * r8605;
        double r8607 = u2;
        double r8608 = r8606 * r8607;
        double r8609 = cos(r8608);
        double r8610 = r8603 * r8609;
        double r8611 = r8610 + r8601;
        return r8611;
}


double f_of(float u1, float u2) {
        float r8612 = 1;
        float r8613 = 6;
        float r8614 = -2;
        float r8615 = u1;
        float r8616 = log(r8615);
        float r8617 = r8614 * r8616;
        float r8618 = 0.5;
        float r8619 = pow(r8617, r8618);
        float r8620 = r8613 / r8619;
        float r8621 = r8612 / r8620;
        float r8622 = atan2(1.0, 0.0);
        float r8623 = u2;
        float r8624 = 2;
        float r8625 = r8623 * r8624;
        float r8626 = r8622 * r8625;
        float r8627 = cos(r8626);
        float r8628 = fma(r8621, r8627, r8618);
        return r8628;
}

double f_od(double u1, double u2) {
        double r8629 = 1;
        double r8630 = 6;
        double r8631 = -2;
        double r8632 = u1;
        double r8633 = log(r8632);
        double r8634 = r8631 * r8633;
        double r8635 = 0.5;
        double r8636 = pow(r8634, r8635);
        double r8637 = r8630 / r8636;
        double r8638 = r8629 / r8637;
        double r8639 = atan2(1.0, 0.0);
        double r8640 = u2;
        double r8641 = 2;
        double r8642 = r8640 * r8641;
        double r8643 = r8639 * r8642;
        double r8644 = cos(r8643);
        double r8645 = fma(r8638, r8644, r8635);
        return r8645;
}

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 r8646, r8647, r8648, r8649, r8650, r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659, r8660, r8661, r8662, r8663;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8646, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8647, "6", 10, MPFR_RNDN);
        mpfr_init(r8648);
        mpfr_init_set_str(r8649, "-2", 10, MPFR_RNDN);
        mpfr_init(r8650);
        mpfr_init(r8651);
        mpfr_init(r8652);
        mpfr_init_set_str(r8653, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8654);
        mpfr_init(r8655);
        mpfr_init_set_str(r8656, "2", 10, MPFR_RNDN);
        mpfr_init(r8657);
        mpfr_init(r8658);
        mpfr_init(r8659);
        mpfr_init(r8660);
        mpfr_init(r8661);
        mpfr_init(r8662);
        mpfr_init(r8663);
}

double f_im(double u1, double u2) {
        ;
        ;
        mpfr_div(r8648, r8646, r8647, MPFR_RNDN);
        ;
        mpfr_set_d(r8650, u1, MPFR_RNDN);
        mpfr_log(r8651, r8650, MPFR_RNDN);
        mpfr_mul(r8652, r8649, r8651, MPFR_RNDN);
        ;
        mpfr_pow(r8654, r8652, r8653, MPFR_RNDN);
        mpfr_mul(r8655, r8648, r8654, MPFR_RNDN);
        ;
        mpfr_const_pi(r8657, MPFR_RNDN);
        mpfr_mul(r8658, r8656, r8657, MPFR_RNDN);
        mpfr_set_d(r8659, u2, MPFR_RNDN);
        mpfr_mul(r8660, r8658, r8659, MPFR_RNDN);
        mpfr_cos(r8661, r8660, MPFR_RNDN);
        mpfr_mul(r8662, r8655, r8661, MPFR_RNDN);
        mpfr_add(r8663, r8662, r8653, MPFR_RNDN);
        return mpfr_get_d(r8663, MPFR_RNDN);
}

static mpfr_t r8664, r8665, r8666, r8667, r8668, r8669, r8670, r8671, r8672, r8673, r8674, r8675, r8676, r8677, r8678, r8679, r8680;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8664, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8665, "6", 10, MPFR_RNDN);
        mpfr_init_set_str(r8666, "-2", 10, MPFR_RNDN);
        mpfr_init(r8667);
        mpfr_init(r8668);
        mpfr_init(r8669);
        mpfr_init_set_str(r8670, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8671);
        mpfr_init(r8672);
        mpfr_init(r8673);
        mpfr_init(r8674);
        mpfr_init(r8675);
        mpfr_init_set_str(r8676, "2", 10, MPFR_RNDN);
        mpfr_init(r8677);
        mpfr_init(r8678);
        mpfr_init(r8679);
        mpfr_init(r8680);
}

double f_fm(double u1, double u2) {
        ;
        ;
        ;
        mpfr_set_d(r8667, u1, MPFR_RNDN);
        mpfr_log(r8668, r8667, MPFR_RNDN);
        mpfr_mul(r8669, r8666, r8668, MPFR_RNDN);
        ;
        mpfr_pow(r8671, r8669, r8670, MPFR_RNDN);
        mpfr_div(r8672, r8665, r8671, MPFR_RNDN);
        mpfr_div(r8673, r8664, r8672, MPFR_RNDN);
        mpfr_const_pi(r8674, MPFR_RNDN);
        mpfr_set_d(r8675, u2, MPFR_RNDN);
        ;
        mpfr_mul(r8677, r8675, r8676, MPFR_RNDN);
        mpfr_mul(r8678, r8674, r8677, MPFR_RNDN);
        mpfr_cos(r8679, r8678, MPFR_RNDN);
        mpfr_fma(r8680, r8673, r8679, r8670, MPFR_RNDN);
        return mpfr_get_d(r8680, MPFR_RNDN);
}

static mpfr_t r8681, r8682, r8683, r8684, r8685, r8686, r8687, r8688, r8689, r8690, r8691, r8692, r8693, r8694, r8695, r8696, r8697;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8681, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8682, "6", 10, MPFR_RNDN);
        mpfr_init_set_str(r8683, "-2", 10, MPFR_RNDN);
        mpfr_init(r8684);
        mpfr_init(r8685);
        mpfr_init(r8686);
        mpfr_init_set_str(r8687, "0.5", 10, MPFR_RNDN);
        mpfr_init(r8688);
        mpfr_init(r8689);
        mpfr_init(r8690);
        mpfr_init(r8691);
        mpfr_init(r8692);
        mpfr_init_set_str(r8693, "2", 10, MPFR_RNDN);
        mpfr_init(r8694);
        mpfr_init(r8695);
        mpfr_init(r8696);
        mpfr_init(r8697);
}

double f_dm(double u1, double u2) {
        ;
        ;
        ;
        mpfr_set_d(r8684, u1, MPFR_RNDN);
        mpfr_log(r8685, r8684, MPFR_RNDN);
        mpfr_mul(r8686, r8683, r8685, MPFR_RNDN);
        ;
        mpfr_pow(r8688, r8686, r8687, MPFR_RNDN);
        mpfr_div(r8689, r8682, r8688, MPFR_RNDN);
        mpfr_div(r8690, r8681, r8689, MPFR_RNDN);
        mpfr_const_pi(r8691, MPFR_RNDN);
        mpfr_set_d(r8692, u2, MPFR_RNDN);
        ;
        mpfr_mul(r8694, r8692, r8693, MPFR_RNDN);
        mpfr_mul(r8695, r8691, r8694, MPFR_RNDN);
        mpfr_cos(r8696, r8695, MPFR_RNDN);
        mpfr_fma(r8697, r8690, r8696, r8687, MPFR_RNDN);
        return mpfr_get_d(r8697, MPFR_RNDN);
}

