#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 r8961 = -2.0f;
        float r8962 = J;
        float r8963 = r8961 * r8962;
        float r8964 = K;
        float r8965 = 2.0f;
        float r8966 = r8964 / r8965;
        float r8967 = cos(r8966);
        float r8968 = r8963 * r8967;
        float r8969 = 1.0f;
        float r8970 = U;
        float r8971 = r8965 * r8962;
        float r8972 = r8971 * r8967;
        float r8973 = r8970 / r8972;
        float r8974 = pow(r8973, r8965);
        float r8975 = r8969 + r8974;
        float r8976 = sqrt(r8975);
        float r8977 = r8968 * r8976;
        return r8977;
}

double f_id(double J, double K, double U) {
        double r8978 = -2.0;
        double r8979 = J;
        double r8980 = r8978 * r8979;
        double r8981 = K;
        double r8982 = 2.0;
        double r8983 = r8981 / r8982;
        double r8984 = cos(r8983);
        double r8985 = r8980 * r8984;
        double r8986 = 1.0;
        double r8987 = U;
        double r8988 = r8982 * r8979;
        double r8989 = r8988 * r8984;
        double r8990 = r8987 / r8989;
        double r8991 = pow(r8990, r8982);
        double r8992 = r8986 + r8991;
        double r8993 = sqrt(r8992);
        double r8994 = r8985 * r8993;
        return r8994;
}


double f_of(float J, float K, float U) {
        float r8995 = 1.0f;
        float r8996 = U;
        float r8997 = J;
        float r8998 = 2.0f;
        float r8999 = r8997 * r8998;
        float r9000 = K;
        float r9001 = r9000 / r8998;
        float r9002 = cos(r9001);
        float r9003 = r8999 * r9002;
        float r9004 = r8996 / r9003;
        float r9005 = pow(r9004, r8998);
        float r9006 = r8995 + r9005;
        float r9007 = sqrt(r9006);
        float r9008 = r9007 * r9002;
        float r9009 = -2.0f;
        float r9010 = r9009 * r8997;
        float r9011 = r9008 * r9010;
        return r9011;
}

double f_od(double J, double K, double U) {
        double r9012 = 1.0;
        double r9013 = U;
        double r9014 = J;
        double r9015 = 2.0;
        double r9016 = r9014 * r9015;
        double r9017 = K;
        double r9018 = r9017 / r9015;
        double r9019 = cos(r9018);
        double r9020 = r9016 * r9019;
        double r9021 = r9013 / r9020;
        double r9022 = pow(r9021, r9015);
        double r9023 = r9012 + r9022;
        double r9024 = sqrt(r9023);
        double r9025 = r9024 * r9019;
        double r9026 = -2.0;
        double r9027 = r9026 * r9014;
        double r9028 = r9025 * r9027;
        return r9028;
}

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 r9029, r9030, r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9029, "-2", 10, MPFR_RNDN);
        mpfr_init(r9030);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init_set_str(r9033, "2", 10, MPFR_RNDN);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init_set_str(r9037, "1", 10, MPFR_RNDN);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r9030, J, MPFR_RNDN);
        mpfr_mul(r9031, r9029, r9030, MPFR_RNDN);
        mpfr_set_d(r9032, K, MPFR_RNDN);
        ;
        mpfr_div(r9034, r9032, r9033, MPFR_RNDN);
        mpfr_cos(r9035, r9034, MPFR_RNDN);
        mpfr_mul(r9036, r9031, r9035, MPFR_RNDN);
        ;
        mpfr_set_d(r9038, U, MPFR_RNDN);
        mpfr_mul(r9039, r9033, r9030, MPFR_RNDN);
        mpfr_mul(r9040, r9039, r9035, MPFR_RNDN);
        mpfr_div(r9041, r9038, r9040, MPFR_RNDN);
        mpfr_pow(r9042, r9041, r9033, MPFR_RNDN);
        mpfr_add(r9043, r9037, r9042, MPFR_RNDN);
        mpfr_sqrt(r9044, r9043, MPFR_RNDN);
        mpfr_mul(r9045, r9036, r9044, MPFR_RNDN);
        return mpfr_get_d(r9045, MPFR_RNDN);
}

static mpfr_t r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9046, "1", 10, MPFR_RNDN);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init_set_str(r9049, "2", 10, MPFR_RNDN);
        mpfr_init(r9050);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init(r9058);
        mpfr_init(r9059);
        mpfr_init_set_str(r9060, "-2", 10, MPFR_RNDN);
        mpfr_init(r9061);
        mpfr_init(r9062);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r9047, U, MPFR_RNDN);
        mpfr_set_d(r9048, J, MPFR_RNDN);
        ;
        mpfr_mul(r9050, r9048, r9049, MPFR_RNDN);
        mpfr_set_d(r9051, K, MPFR_RNDN);
        mpfr_div(r9052, r9051, r9049, MPFR_RNDN);
        mpfr_cos(r9053, r9052, MPFR_RNDN);
        mpfr_mul(r9054, r9050, r9053, MPFR_RNDN);
        mpfr_div(r9055, r9047, r9054, MPFR_RNDN);
        mpfr_pow(r9056, r9055, r9049, MPFR_RNDN);
        mpfr_add(r9057, r9046, r9056, MPFR_RNDN);
        mpfr_sqrt(r9058, r9057, MPFR_RNDN);
        mpfr_mul(r9059, r9058, r9053, MPFR_RNDN);
        ;
        mpfr_mul(r9061, r9060, r9048, MPFR_RNDN);
        mpfr_mul(r9062, r9059, r9061, MPFR_RNDN);
        return mpfr_get_d(r9062, MPFR_RNDN);
}

static mpfr_t r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9063, "1", 10, MPFR_RNDN);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init_set_str(r9066, "2", 10, MPFR_RNDN);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
        mpfr_init_set_str(r9077, "-2", 10, MPFR_RNDN);
        mpfr_init(r9078);
        mpfr_init(r9079);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r9064, U, MPFR_RNDN);
        mpfr_set_d(r9065, J, MPFR_RNDN);
        ;
        mpfr_mul(r9067, r9065, r9066, MPFR_RNDN);
        mpfr_set_d(r9068, K, MPFR_RNDN);
        mpfr_div(r9069, r9068, r9066, MPFR_RNDN);
        mpfr_cos(r9070, r9069, MPFR_RNDN);
        mpfr_mul(r9071, r9067, r9070, MPFR_RNDN);
        mpfr_div(r9072, r9064, r9071, MPFR_RNDN);
        mpfr_pow(r9073, r9072, r9066, MPFR_RNDN);
        mpfr_add(r9074, r9063, r9073, MPFR_RNDN);
        mpfr_sqrt(r9075, r9074, MPFR_RNDN);
        mpfr_mul(r9076, r9075, r9070, MPFR_RNDN);
        ;
        mpfr_mul(r9078, r9077, r9065, MPFR_RNDN);
        mpfr_mul(r9079, r9076, r9078, MPFR_RNDN);
        return mpfr_get_d(r9079, MPFR_RNDN);
}

