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

char *name = "Maksimov and Kolovsky, Equation (3)";

double f_if(float J, float K, float U) {
        float r9958 = -2;
        float r9959 = J;
        float r9960 = r9958 * r9959;
        float r9961 = K;
        float r9962 = 2;
        float r9963 = r9961 / r9962;
        float r9964 = cos(r9963);
        float r9965 = r9960 * r9964;
        float r9966 = 1;
        float r9967 = U;
        float r9968 = r9962 * r9959;
        float r9969 = r9968 * r9964;
        float r9970 = r9967 / r9969;
        float r9971 = pow(r9970, r9962);
        float r9972 = r9966 + r9971;
        float r9973 = sqrt(r9972);
        float r9974 = r9965 * r9973;
        return r9974;
}

double f_id(double J, double K, double U) {
        double r9975 = -2;
        double r9976 = J;
        double r9977 = r9975 * r9976;
        double r9978 = K;
        double r9979 = 2;
        double r9980 = r9978 / r9979;
        double r9981 = cos(r9980);
        double r9982 = r9977 * r9981;
        double r9983 = 1;
        double r9984 = U;
        double r9985 = r9979 * r9976;
        double r9986 = r9985 * r9981;
        double r9987 = r9984 / r9986;
        double r9988 = pow(r9987, r9979);
        double r9989 = r9983 + r9988;
        double r9990 = sqrt(r9989);
        double r9991 = r9982 * r9990;
        return r9991;
}


double f_of(float J, float K, float U) {
        float r9992 = 1;
        float r9993 = U;
        float r9994 = 2;
        float r9995 = r9993 / r9994;
        float r9996 = J;
        float r9997 = r9995 / r9996;
        float r9998 = K;
        float r9999 = r9998 / r9994;
        float r10000 = cos(r9999);
        float r10001 = r9997 / r10000;
        float r10002 = hypot(r9992, r10001);
        float r10003 = log(r10002);
        float r10004 = log(r10000);
        float r10005 = r10003 + r10004;
        float r10006 = exp(r10005);
        float r10007 = -2;
        float r10008 = r10007 * r9996;
        float r10009 = r10006 * r10008;
        float r10010 = -1.7784676733747042e+308;
        bool r10011 = r10009 <= r10010;
        float r10012 = -r9993;
        float r10013 = r10002 * r10000;
        float r10014 = r10013 * r10008;
        float r10015 = r10011 ? r10012 : r10014;
        return r10015;
}

double f_od(double J, double K, double U) {
        double r10016 = 1;
        double r10017 = U;
        double r10018 = 2;
        double r10019 = r10017 / r10018;
        double r10020 = J;
        double r10021 = r10019 / r10020;
        double r10022 = K;
        double r10023 = r10022 / r10018;
        double r10024 = cos(r10023);
        double r10025 = r10021 / r10024;
        double r10026 = hypot(r10016, r10025);
        double r10027 = log(r10026);
        double r10028 = log(r10024);
        double r10029 = r10027 + r10028;
        double r10030 = exp(r10029);
        double r10031 = -2;
        double r10032 = r10031 * r10020;
        double r10033 = r10030 * r10032;
        double r10034 = -1.7784676733747042e+308;
        bool r10035 = r10033 <= r10034;
        double r10036 = -r10017;
        double r10037 = r10026 * r10024;
        double r10038 = r10037 * r10032;
        double r10039 = r10035 ? r10036 : r10038;
        return r10039;
}

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 r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048, r10049, r10050, r10051, r10052, r10053, r10054, r10055, r10056;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10040, "-2", 10, MPFR_RNDN);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init_set_str(r10044, "2", 10, MPFR_RNDN);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
        mpfr_init_set_str(r10048, "1", 10, MPFR_RNDN);
        mpfr_init(r10049);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r10041, J, MPFR_RNDN);
        mpfr_mul(r10042, r10040, r10041, MPFR_RNDN);
        mpfr_set_d(r10043, K, MPFR_RNDN);
        ;
        mpfr_div(r10045, r10043, r10044, MPFR_RNDN);
        mpfr_cos(r10046, r10045, MPFR_RNDN);
        mpfr_mul(r10047, r10042, r10046, MPFR_RNDN);
        ;
        mpfr_set_d(r10049, U, MPFR_RNDN);
        mpfr_mul(r10050, r10044, r10041, MPFR_RNDN);
        mpfr_mul(r10051, r10050, r10046, MPFR_RNDN);
        mpfr_div(r10052, r10049, r10051, MPFR_RNDN);
        mpfr_pow(r10053, r10052, r10044, MPFR_RNDN);
        mpfr_add(r10054, r10048, r10053, MPFR_RNDN);
        mpfr_sqrt(r10055, r10054, MPFR_RNDN);
        mpfr_mul(r10056, r10047, r10055, MPFR_RNDN);
        return mpfr_get_d(r10056, MPFR_RNDN);
}

static mpfr_t r10057, r10058, r10059, r10060, r10061, r10062, r10063, r10064, r10065, r10066, r10067, r10068, r10069, r10070, r10071, r10072, r10073, r10074, r10075, r10076, r10077, r10078, r10079, r10080;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10057, "1", 10, MPFR_RNDN);
        mpfr_init(r10058);
        mpfr_init_set_str(r10059, "2", 10, MPFR_RNDN);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
        mpfr_init(r10063);
        mpfr_init(r10064);
        mpfr_init(r10065);
        mpfr_init(r10066);
        mpfr_init(r10067);
        mpfr_init(r10068);
        mpfr_init(r10069);
        mpfr_init(r10070);
        mpfr_init(r10071);
        mpfr_init_set_str(r10072, "-2", 10, MPFR_RNDN);
        mpfr_init(r10073);
        mpfr_init(r10074);
        mpfr_init_set_str(r10075, "-1.7784676733747042e+308", 10, MPFR_RNDN);
        mpfr_init(r10076);
        mpfr_init(r10077);
        mpfr_init(r10078);
        mpfr_init(r10079);
        mpfr_init(r10080);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r10058, U, MPFR_RNDN);
        ;
        mpfr_div(r10060, r10058, r10059, MPFR_RNDN);
        mpfr_set_d(r10061, J, MPFR_RNDN);
        mpfr_div(r10062, r10060, r10061, MPFR_RNDN);
        mpfr_set_d(r10063, K, MPFR_RNDN);
        mpfr_div(r10064, r10063, r10059, MPFR_RNDN);
        mpfr_cos(r10065, r10064, MPFR_RNDN);
        mpfr_div(r10066, r10062, r10065, MPFR_RNDN);
        mpfr_hypot(r10067, r10057, r10066, MPFR_RNDN);
        mpfr_log(r10068, r10067, MPFR_RNDN);
        mpfr_log(r10069, r10065, MPFR_RNDN);
        mpfr_add(r10070, r10068, r10069, MPFR_RNDN);
        mpfr_exp(r10071, r10070, MPFR_RNDN);
        ;
        mpfr_mul(r10073, r10072, r10061, MPFR_RNDN);
        mpfr_mul(r10074, r10071, r10073, MPFR_RNDN);
        ;
        mpfr_set_si(r10076, mpfr_cmp(r10074, r10075) <= 0, MPFR_RNDN);
        mpfr_neg(r10077, r10058, MPFR_RNDN);
        mpfr_mul(r10078, r10067, r10065, MPFR_RNDN);
        mpfr_mul(r10079, r10078, r10073, MPFR_RNDN);
        if (mpfr_get_si(r10076, MPFR_RNDN)) { mpfr_set(r10080, r10077, MPFR_RNDN); } else { mpfr_set(r10080, r10079, MPFR_RNDN); };
        return mpfr_get_d(r10080, MPFR_RNDN);
}

static mpfr_t r10081, r10082, r10083, r10084, r10085, r10086, r10087, r10088, r10089, r10090, r10091, r10092, r10093, r10094, r10095, r10096, r10097, r10098, r10099, r10100, r10101, r10102, r10103, r10104;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10081, "1", 10, MPFR_RNDN);
        mpfr_init(r10082);
        mpfr_init_set_str(r10083, "2", 10, MPFR_RNDN);
        mpfr_init(r10084);
        mpfr_init(r10085);
        mpfr_init(r10086);
        mpfr_init(r10087);
        mpfr_init(r10088);
        mpfr_init(r10089);
        mpfr_init(r10090);
        mpfr_init(r10091);
        mpfr_init(r10092);
        mpfr_init(r10093);
        mpfr_init(r10094);
        mpfr_init(r10095);
        mpfr_init_set_str(r10096, "-2", 10, MPFR_RNDN);
        mpfr_init(r10097);
        mpfr_init(r10098);
        mpfr_init_set_str(r10099, "-1.7784676733747042e+308", 10, MPFR_RNDN);
        mpfr_init(r10100);
        mpfr_init(r10101);
        mpfr_init(r10102);
        mpfr_init(r10103);
        mpfr_init(r10104);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r10082, U, MPFR_RNDN);
        ;
        mpfr_div(r10084, r10082, r10083, MPFR_RNDN);
        mpfr_set_d(r10085, J, MPFR_RNDN);
        mpfr_div(r10086, r10084, r10085, MPFR_RNDN);
        mpfr_set_d(r10087, K, MPFR_RNDN);
        mpfr_div(r10088, r10087, r10083, MPFR_RNDN);
        mpfr_cos(r10089, r10088, MPFR_RNDN);
        mpfr_div(r10090, r10086, r10089, MPFR_RNDN);
        mpfr_hypot(r10091, r10081, r10090, MPFR_RNDN);
        mpfr_log(r10092, r10091, MPFR_RNDN);
        mpfr_log(r10093, r10089, MPFR_RNDN);
        mpfr_add(r10094, r10092, r10093, MPFR_RNDN);
        mpfr_exp(r10095, r10094, MPFR_RNDN);
        ;
        mpfr_mul(r10097, r10096, r10085, MPFR_RNDN);
        mpfr_mul(r10098, r10095, r10097, MPFR_RNDN);
        ;
        mpfr_set_si(r10100, mpfr_cmp(r10098, r10099) <= 0, MPFR_RNDN);
        mpfr_neg(r10101, r10082, MPFR_RNDN);
        mpfr_mul(r10102, r10091, r10089, MPFR_RNDN);
        mpfr_mul(r10103, r10102, r10097, MPFR_RNDN);
        if (mpfr_get_si(r10100, MPFR_RNDN)) { mpfr_set(r10104, r10101, MPFR_RNDN); } else { mpfr_set(r10104, r10103, MPFR_RNDN); };
        return mpfr_get_d(r10104, MPFR_RNDN);
}

