#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 r7859 = 1.0f;
        float r7860 = 6.0f;
        float r7861 = r7859 / r7860;
        float r7862 = -2.0f;
        float r7863 = u1;
        float r7864 = log(r7863);
        float r7865 = r7862 * r7864;
        float r7866 = 0.5f;
        float r7867 = pow(r7865, r7866);
        float r7868 = r7861 * r7867;
        float r7869 = 2.0f;
        float r7870 = atan2(1.0, 0.0);
        float r7871 = r7869 * r7870;
        float r7872 = u2;
        float r7873 = r7871 * r7872;
        float r7874 = cos(r7873);
        float r7875 = r7868 * r7874;
        float r7876 = r7875 + r7866;
        return r7876;
}

double f_id(double u1, double u2) {
        double r7877 = 1.0;
        double r7878 = 6.0;
        double r7879 = r7877 / r7878;
        double r7880 = -2.0;
        double r7881 = u1;
        double r7882 = log(r7881);
        double r7883 = r7880 * r7882;
        double r7884 = 0.5;
        double r7885 = pow(r7883, r7884);
        double r7886 = r7879 * r7885;
        double r7887 = 2.0;
        double r7888 = atan2(1.0, 0.0);
        double r7889 = r7887 * r7888;
        double r7890 = u2;
        double r7891 = r7889 * r7890;
        double r7892 = cos(r7891);
        double r7893 = r7886 * r7892;
        double r7894 = r7893 + r7884;
        return r7894;
}


double f_of(float u1, float u2) {
        float r7895 = u1;
        float r7896 = log(r7895);
        float r7897 = -2.0f;
        float r7898 = r7896 * r7897;
        float r7899 = 0.5f;
        float r7900 = pow(r7898, r7899);
        float r7901 = 6.0f;
        float r7902 = r7900 / r7901;
        float r7903 = log(r7902);
        float r7904 = exp(r7903);
        float r7905 = atan2(1.0, 0.0);
        float r7906 = 2.0f;
        float r7907 = u2;
        float r7908 = r7906 * r7907;
        float r7909 = r7905 * r7908;
        float r7910 = cos(r7909);
        float r7911 = r7904 * r7910;
        float r7912 = r7911 + r7899;
        return r7912;
}

double f_od(double u1, double u2) {
        double r7913 = u1;
        double r7914 = log(r7913);
        double r7915 = -2.0;
        double r7916 = r7914 * r7915;
        double r7917 = 0.5;
        double r7918 = pow(r7916, r7917);
        double r7919 = 6.0;
        double r7920 = r7918 / r7919;
        double r7921 = log(r7920);
        double r7922 = exp(r7921);
        double r7923 = atan2(1.0, 0.0);
        double r7924 = 2.0;
        double r7925 = u2;
        double r7926 = r7924 * r7925;
        double r7927 = r7923 * r7926;
        double r7928 = cos(r7927);
        double r7929 = r7922 * r7928;
        double r7930 = r7929 + r7917;
        return r7930;
}

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 r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7931, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r7932, "6", 10, MPFR_RNDN);
        mpfr_init(r7933);
        mpfr_init_set_str(r7934, "-2", 10, MPFR_RNDN);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init_set_str(r7938, "0.5", 10, MPFR_RNDN);
        mpfr_init(r7939);
        mpfr_init(r7940);
        mpfr_init_set_str(r7941, "2", 10, MPFR_RNDN);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
}

double f_im(double u1, double u2) {
        ;
        ;
        mpfr_div(r7933, r7931, r7932, MPFR_RNDN);
        ;
        mpfr_set_d(r7935, u1, MPFR_RNDN);
        mpfr_log(r7936, r7935, MPFR_RNDN);
        mpfr_mul(r7937, r7934, r7936, MPFR_RNDN);
        ;
        mpfr_pow(r7939, r7937, r7938, MPFR_RNDN);
        mpfr_mul(r7940, r7933, r7939, MPFR_RNDN);
        ;
        mpfr_const_pi(r7942, MPFR_RNDN);
        mpfr_mul(r7943, r7941, r7942, MPFR_RNDN);
        mpfr_set_d(r7944, u2, MPFR_RNDN);
        mpfr_mul(r7945, r7943, r7944, MPFR_RNDN);
        mpfr_cos(r7946, r7945, MPFR_RNDN);
        mpfr_mul(r7947, r7940, r7946, MPFR_RNDN);
        mpfr_add(r7948, r7947, r7938, MPFR_RNDN);
        return mpfr_get_d(r7948, MPFR_RNDN);
}

static mpfr_t r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963, r7964, r7965, r7966;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init_set_str(r7951, "-2", 10, MPFR_RNDN);
        mpfr_init(r7952);
        mpfr_init_set_str(r7953, "0.5", 10, MPFR_RNDN);
        mpfr_init(r7954);
        mpfr_init_set_str(r7955, "6", 10, MPFR_RNDN);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init_set_str(r7960, "2", 10, MPFR_RNDN);
        mpfr_init(r7961);
        mpfr_init(r7962);
        mpfr_init(r7963);
        mpfr_init(r7964);
        mpfr_init(r7965);
        mpfr_init(r7966);
}

double f_fm(double u1, double u2) {
        mpfr_set_d(r7949, u1, MPFR_RNDN);
        mpfr_log(r7950, r7949, MPFR_RNDN);
        ;
        mpfr_mul(r7952, r7950, r7951, MPFR_RNDN);
        ;
        mpfr_pow(r7954, r7952, r7953, MPFR_RNDN);
        ;
        mpfr_div(r7956, r7954, r7955, MPFR_RNDN);
        mpfr_log(r7957, r7956, MPFR_RNDN);
        mpfr_exp(r7958, r7957, MPFR_RNDN);
        mpfr_const_pi(r7959, MPFR_RNDN);
        ;
        mpfr_set_d(r7961, u2, MPFR_RNDN);
        mpfr_mul(r7962, r7960, r7961, MPFR_RNDN);
        mpfr_mul(r7963, r7959, r7962, MPFR_RNDN);
        mpfr_cos(r7964, r7963, MPFR_RNDN);
        mpfr_mul(r7965, r7958, r7964, MPFR_RNDN);
        mpfr_add(r7966, r7965, r7953, MPFR_RNDN);
        return mpfr_get_d(r7966, MPFR_RNDN);
}

static mpfr_t r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init_set_str(r7969, "-2", 10, MPFR_RNDN);
        mpfr_init(r7970);
        mpfr_init_set_str(r7971, "0.5", 10, MPFR_RNDN);
        mpfr_init(r7972);
        mpfr_init_set_str(r7973, "6", 10, MPFR_RNDN);
        mpfr_init(r7974);
        mpfr_init(r7975);
        mpfr_init(r7976);
        mpfr_init(r7977);
        mpfr_init_set_str(r7978, "2", 10, MPFR_RNDN);
        mpfr_init(r7979);
        mpfr_init(r7980);
        mpfr_init(r7981);
        mpfr_init(r7982);
        mpfr_init(r7983);
        mpfr_init(r7984);
}

double f_dm(double u1, double u2) {
        mpfr_set_d(r7967, u1, MPFR_RNDN);
        mpfr_log(r7968, r7967, MPFR_RNDN);
        ;
        mpfr_mul(r7970, r7968, r7969, MPFR_RNDN);
        ;
        mpfr_pow(r7972, r7970, r7971, MPFR_RNDN);
        ;
        mpfr_div(r7974, r7972, r7973, MPFR_RNDN);
        mpfr_log(r7975, r7974, MPFR_RNDN);
        mpfr_exp(r7976, r7975, MPFR_RNDN);
        mpfr_const_pi(r7977, MPFR_RNDN);
        ;
        mpfr_set_d(r7979, u2, MPFR_RNDN);
        mpfr_mul(r7980, r7978, r7979, MPFR_RNDN);
        mpfr_mul(r7981, r7977, r7980, MPFR_RNDN);
        mpfr_cos(r7982, r7981, MPFR_RNDN);
        mpfr_mul(r7983, r7976, r7982, MPFR_RNDN);
        mpfr_add(r7984, r7983, r7971, MPFR_RNDN);
        return mpfr_get_d(r7984, MPFR_RNDN);
}

