#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 r28973 = -2;
        float r28974 = J;
        float r28975 = r28973 * r28974;
        float r28976 = K;
        float r28977 = 2;
        float r28978 = r28976 / r28977;
        float r28979 = cos(r28978);
        float r28980 = r28975 * r28979;
        float r28981 = 1;
        float r28982 = U;
        float r28983 = r28977 * r28974;
        float r28984 = r28983 * r28979;
        float r28985 = r28982 / r28984;
        float r28986 = pow(r28985, r28977);
        float r28987 = r28981 + r28986;
        float r28988 = sqrt(r28987);
        float r28989 = r28980 * r28988;
        return r28989;
}

double f_id(double J, double K, double U) {
        double r28990 = -2;
        double r28991 = J;
        double r28992 = r28990 * r28991;
        double r28993 = K;
        double r28994 = 2;
        double r28995 = r28993 / r28994;
        double r28996 = cos(r28995);
        double r28997 = r28992 * r28996;
        double r28998 = 1;
        double r28999 = U;
        double r29000 = r28994 * r28991;
        double r29001 = r29000 * r28996;
        double r29002 = r28999 / r29001;
        double r29003 = pow(r29002, r28994);
        double r29004 = r28998 + r29003;
        double r29005 = sqrt(r29004);
        double r29006 = r28997 * r29005;
        return r29006;
}


double f_of(float J, float K, float U) {
        float r29007 = -2;
        float r29008 = J;
        float r29009 = K;
        float r29010 = 2;
        float r29011 = r29009 / r29010;
        float r29012 = cos(r29011);
        float r29013 = r29008 * r29012;
        float r29014 = r29007 * r29013;
        float r29015 = 1;
        float r29016 = U;
        float r29017 = r29010 * r29008;
        float r29018 = r29017 * r29012;
        float r29019 = r29016 / r29018;
        float r29020 = pow(r29019, r29010);
        float r29021 = r29015 + r29020;
        float r29022 = sqrt(r29021);
        float r29023 = r29014 * r29022;
        return r29023;
}

double f_od(double J, double K, double U) {
        double r29024 = -2;
        double r29025 = J;
        double r29026 = K;
        double r29027 = 2;
        double r29028 = r29026 / r29027;
        double r29029 = cos(r29028);
        double r29030 = r29025 * r29029;
        double r29031 = r29024 * r29030;
        double r29032 = 1;
        double r29033 = U;
        double r29034 = r29027 * r29025;
        double r29035 = r29034 * r29029;
        double r29036 = r29033 / r29035;
        double r29037 = pow(r29036, r29027);
        double r29038 = r29032 + r29037;
        double r29039 = sqrt(r29038);
        double r29040 = r29031 * r29039;
        return r29040;
}

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 r29041, r29042, r29043, r29044, r29045, r29046, r29047, r29048, r29049, r29050, r29051, r29052, r29053, r29054, r29055, r29056, r29057;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29041, "-2", 10, MPFR_RNDN);
        mpfr_init(r29042);
        mpfr_init(r29043);
        mpfr_init(r29044);
        mpfr_init_set_str(r29045, "2", 10, MPFR_RNDN);
        mpfr_init(r29046);
        mpfr_init(r29047);
        mpfr_init(r29048);
        mpfr_init_set_str(r29049, "1", 10, MPFR_RNDN);
        mpfr_init(r29050);
        mpfr_init(r29051);
        mpfr_init(r29052);
        mpfr_init(r29053);
        mpfr_init(r29054);
        mpfr_init(r29055);
        mpfr_init(r29056);
        mpfr_init(r29057);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r29042, J, MPFR_RNDN);
        mpfr_mul(r29043, r29041, r29042, MPFR_RNDN);
        mpfr_set_d(r29044, K, MPFR_RNDN);
        ;
        mpfr_div(r29046, r29044, r29045, MPFR_RNDN);
        mpfr_cos(r29047, r29046, MPFR_RNDN);
        mpfr_mul(r29048, r29043, r29047, MPFR_RNDN);
        ;
        mpfr_set_d(r29050, U, MPFR_RNDN);
        mpfr_mul(r29051, r29045, r29042, MPFR_RNDN);
        mpfr_mul(r29052, r29051, r29047, MPFR_RNDN);
        mpfr_div(r29053, r29050, r29052, MPFR_RNDN);
        mpfr_pow(r29054, r29053, r29045, MPFR_RNDN);
        mpfr_add(r29055, r29049, r29054, MPFR_RNDN);
        mpfr_sqrt(r29056, r29055, MPFR_RNDN);
        mpfr_mul(r29057, r29048, r29056, MPFR_RNDN);
        return mpfr_get_d(r29057, MPFR_RNDN);
}

static mpfr_t r29058, r29059, r29060, r29061, r29062, r29063, r29064, r29065, r29066, r29067, r29068, r29069, r29070, r29071, r29072, r29073, r29074;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29058, "-2", 10, MPFR_RNDN);
        mpfr_init(r29059);
        mpfr_init(r29060);
        mpfr_init_set_str(r29061, "2", 10, MPFR_RNDN);
        mpfr_init(r29062);
        mpfr_init(r29063);
        mpfr_init(r29064);
        mpfr_init(r29065);
        mpfr_init_set_str(r29066, "1", 10, MPFR_RNDN);
        mpfr_init(r29067);
        mpfr_init(r29068);
        mpfr_init(r29069);
        mpfr_init(r29070);
        mpfr_init(r29071);
        mpfr_init(r29072);
        mpfr_init(r29073);
        mpfr_init(r29074);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r29059, J, MPFR_RNDN);
        mpfr_set_d(r29060, K, MPFR_RNDN);
        ;
        mpfr_div(r29062, r29060, r29061, MPFR_RNDN);
        mpfr_cos(r29063, r29062, MPFR_RNDN);
        mpfr_mul(r29064, r29059, r29063, MPFR_RNDN);
        mpfr_mul(r29065, r29058, r29064, MPFR_RNDN);
        ;
        mpfr_set_d(r29067, U, MPFR_RNDN);
        mpfr_mul(r29068, r29061, r29059, MPFR_RNDN);
        mpfr_mul(r29069, r29068, r29063, MPFR_RNDN);
        mpfr_div(r29070, r29067, r29069, MPFR_RNDN);
        mpfr_pow(r29071, r29070, r29061, MPFR_RNDN);
        mpfr_add(r29072, r29066, r29071, MPFR_RNDN);
        mpfr_sqrt(r29073, r29072, MPFR_RNDN);
        mpfr_mul(r29074, r29065, r29073, MPFR_RNDN);
        return mpfr_get_d(r29074, MPFR_RNDN);
}

static mpfr_t r29075, r29076, r29077, r29078, r29079, r29080, r29081, r29082, r29083, r29084, r29085, r29086, r29087, r29088, r29089, r29090, r29091;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29075, "-2", 10, MPFR_RNDN);
        mpfr_init(r29076);
        mpfr_init(r29077);
        mpfr_init_set_str(r29078, "2", 10, MPFR_RNDN);
        mpfr_init(r29079);
        mpfr_init(r29080);
        mpfr_init(r29081);
        mpfr_init(r29082);
        mpfr_init_set_str(r29083, "1", 10, MPFR_RNDN);
        mpfr_init(r29084);
        mpfr_init(r29085);
        mpfr_init(r29086);
        mpfr_init(r29087);
        mpfr_init(r29088);
        mpfr_init(r29089);
        mpfr_init(r29090);
        mpfr_init(r29091);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r29076, J, MPFR_RNDN);
        mpfr_set_d(r29077, K, MPFR_RNDN);
        ;
        mpfr_div(r29079, r29077, r29078, MPFR_RNDN);
        mpfr_cos(r29080, r29079, MPFR_RNDN);
        mpfr_mul(r29081, r29076, r29080, MPFR_RNDN);
        mpfr_mul(r29082, r29075, r29081, MPFR_RNDN);
        ;
        mpfr_set_d(r29084, U, MPFR_RNDN);
        mpfr_mul(r29085, r29078, r29076, MPFR_RNDN);
        mpfr_mul(r29086, r29085, r29080, MPFR_RNDN);
        mpfr_div(r29087, r29084, r29086, MPFR_RNDN);
        mpfr_pow(r29088, r29087, r29078, MPFR_RNDN);
        mpfr_add(r29089, r29083, r29088, MPFR_RNDN);
        mpfr_sqrt(r29090, r29089, MPFR_RNDN);
        mpfr_mul(r29091, r29082, r29090, MPFR_RNDN);
        return mpfr_get_d(r29091, MPFR_RNDN);
}

