#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 r25923 = -2;
        float r25924 = J;
        float r25925 = r25923 * r25924;
        float r25926 = K;
        float r25927 = 2;
        float r25928 = r25926 / r25927;
        float r25929 = cos(r25928);
        float r25930 = r25925 * r25929;
        float r25931 = 1;
        float r25932 = U;
        float r25933 = r25927 * r25924;
        float r25934 = r25933 * r25929;
        float r25935 = r25932 / r25934;
        float r25936 = pow(r25935, r25927);
        float r25937 = r25931 + r25936;
        float r25938 = sqrt(r25937);
        float r25939 = r25930 * r25938;
        return r25939;
}

double f_id(double J, double K, double U) {
        double r25940 = -2;
        double r25941 = J;
        double r25942 = r25940 * r25941;
        double r25943 = K;
        double r25944 = 2;
        double r25945 = r25943 / r25944;
        double r25946 = cos(r25945);
        double r25947 = r25942 * r25946;
        double r25948 = 1;
        double r25949 = U;
        double r25950 = r25944 * r25941;
        double r25951 = r25950 * r25946;
        double r25952 = r25949 / r25951;
        double r25953 = pow(r25952, r25944);
        double r25954 = r25948 + r25953;
        double r25955 = sqrt(r25954);
        double r25956 = r25947 * r25955;
        return r25956;
}


double f_of(float J, float K, float U) {
        float r25957 = J;
        float r25958 = -2;
        float r25959 = r25957 * r25958;
        float r25960 = K;
        float r25961 = 2;
        float r25962 = r25960 / r25961;
        float r25963 = cos(r25962);
        float r25964 = cbrt(r25963);
        float r25965 = r25964 * r25964;
        float r25966 = r25959 * r25965;
        float r25967 = cbrt(r25964);
        float r25968 = r25967 * r25967;
        float r25969 = r25968 * r25967;
        float r25970 = r25966 * r25969;
        float r25971 = 1;
        float r25972 = U;
        float r25973 = r25972 / r25961;
        float r25974 = r25973 / r25957;
        float r25975 = r25974 / r25963;
        float r25976 = hypot(r25971, r25975);
        float r25977 = r25970 * r25976;
        float r25978 = -1.7720578684878594e+308;
        bool r25979 = r25977 <= r25978;
        float r25980 = 1/2;
        float r25981 = r25980 * r25972;
        float r25982 = r25958 * r25981;
        float r25983 = 1.7702087257768256e+308;
        bool r25984 = r25977 <= r25983;
        float r25985 = r25963 * r25976;
        float r25986 = r25959 * r25985;
        float r25987 = r25984 ? r25986 : r25982;
        float r25988 = r25979 ? r25982 : r25987;
        return r25988;
}

double f_od(double J, double K, double U) {
        double r25989 = J;
        double r25990 = -2;
        double r25991 = r25989 * r25990;
        double r25992 = K;
        double r25993 = 2;
        double r25994 = r25992 / r25993;
        double r25995 = cos(r25994);
        double r25996 = cbrt(r25995);
        double r25997 = r25996 * r25996;
        double r25998 = r25991 * r25997;
        double r25999 = cbrt(r25996);
        double r26000 = r25999 * r25999;
        double r26001 = r26000 * r25999;
        double r26002 = r25998 * r26001;
        double r26003 = 1;
        double r26004 = U;
        double r26005 = r26004 / r25993;
        double r26006 = r26005 / r25989;
        double r26007 = r26006 / r25995;
        double r26008 = hypot(r26003, r26007);
        double r26009 = r26002 * r26008;
        double r26010 = -1.7720578684878594e+308;
        bool r26011 = r26009 <= r26010;
        double r26012 = 1/2;
        double r26013 = r26012 * r26004;
        double r26014 = r25990 * r26013;
        double r26015 = 1.7702087257768256e+308;
        bool r26016 = r26009 <= r26015;
        double r26017 = r25995 * r26008;
        double r26018 = r25991 * r26017;
        double r26019 = r26016 ? r26018 : r26014;
        double r26020 = r26011 ? r26014 : r26019;
        return r26020;
}

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 r26021, r26022, r26023, r26024, r26025, r26026, r26027, r26028, r26029, r26030, r26031, r26032, r26033, r26034, r26035, r26036, r26037;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26021, "-2", 10, MPFR_RNDN);
        mpfr_init(r26022);
        mpfr_init(r26023);
        mpfr_init(r26024);
        mpfr_init_set_str(r26025, "2", 10, MPFR_RNDN);
        mpfr_init(r26026);
        mpfr_init(r26027);
        mpfr_init(r26028);
        mpfr_init_set_str(r26029, "1", 10, MPFR_RNDN);
        mpfr_init(r26030);
        mpfr_init(r26031);
        mpfr_init(r26032);
        mpfr_init(r26033);
        mpfr_init(r26034);
        mpfr_init(r26035);
        mpfr_init(r26036);
        mpfr_init(r26037);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r26022, J, MPFR_RNDN);
        mpfr_mul(r26023, r26021, r26022, MPFR_RNDN);
        mpfr_set_d(r26024, K, MPFR_RNDN);
        ;
        mpfr_div(r26026, r26024, r26025, MPFR_RNDN);
        mpfr_cos(r26027, r26026, MPFR_RNDN);
        mpfr_mul(r26028, r26023, r26027, MPFR_RNDN);
        ;
        mpfr_set_d(r26030, U, MPFR_RNDN);
        mpfr_mul(r26031, r26025, r26022, MPFR_RNDN);
        mpfr_mul(r26032, r26031, r26027, MPFR_RNDN);
        mpfr_div(r26033, r26030, r26032, MPFR_RNDN);
        mpfr_pow(r26034, r26033, r26025, MPFR_RNDN);
        mpfr_add(r26035, r26029, r26034, MPFR_RNDN);
        mpfr_sqrt(r26036, r26035, MPFR_RNDN);
        mpfr_mul(r26037, r26028, r26036, MPFR_RNDN);
        return mpfr_get_d(r26037, MPFR_RNDN);
}

static mpfr_t r26038, r26039, r26040, r26041, r26042, r26043, r26044, r26045, r26046, r26047, r26048, r26049, r26050, r26051, r26052, r26053, r26054, r26055, r26056, r26057, r26058, r26059, r26060, r26061, r26062, r26063, r26064, r26065, r26066, r26067, r26068, r26069;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26038);
        mpfr_init_set_str(r26039, "-2", 10, MPFR_RNDN);
        mpfr_init(r26040);
        mpfr_init(r26041);
        mpfr_init_set_str(r26042, "2", 10, MPFR_RNDN);
        mpfr_init(r26043);
        mpfr_init(r26044);
        mpfr_init(r26045);
        mpfr_init(r26046);
        mpfr_init(r26047);
        mpfr_init(r26048);
        mpfr_init(r26049);
        mpfr_init(r26050);
        mpfr_init(r26051);
        mpfr_init_set_str(r26052, "1", 10, MPFR_RNDN);
        mpfr_init(r26053);
        mpfr_init(r26054);
        mpfr_init(r26055);
        mpfr_init(r26056);
        mpfr_init(r26057);
        mpfr_init(r26058);
        mpfr_init_set_str(r26059, "-1.7720578684878594e+308", 10, MPFR_RNDN);
        mpfr_init(r26060);
        mpfr_init_set_str(r26061, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26062);
        mpfr_init(r26063);
        mpfr_init_set_str(r26064, "1.7702087257768256e+308", 10, MPFR_RNDN);
        mpfr_init(r26065);
        mpfr_init(r26066);
        mpfr_init(r26067);
        mpfr_init(r26068);
        mpfr_init(r26069);
}

double f_fm(double J, double K, double U) {
        mpfr_set_d(r26038, J, MPFR_RNDN);
        ;
        mpfr_mul(r26040, r26038, r26039, MPFR_RNDN);
        mpfr_set_d(r26041, K, MPFR_RNDN);
        ;
        mpfr_div(r26043, r26041, r26042, MPFR_RNDN);
        mpfr_cos(r26044, r26043, MPFR_RNDN);
        mpfr_cbrt(r26045, r26044, MPFR_RNDN);
        mpfr_mul(r26046, r26045, r26045, MPFR_RNDN);
        mpfr_mul(r26047, r26040, r26046, MPFR_RNDN);
        mpfr_cbrt(r26048, r26045, MPFR_RNDN);
        mpfr_mul(r26049, r26048, r26048, MPFR_RNDN);
        mpfr_mul(r26050, r26049, r26048, MPFR_RNDN);
        mpfr_mul(r26051, r26047, r26050, MPFR_RNDN);
        ;
        mpfr_set_d(r26053, U, MPFR_RNDN);
        mpfr_div(r26054, r26053, r26042, MPFR_RNDN);
        mpfr_div(r26055, r26054, r26038, MPFR_RNDN);
        mpfr_div(r26056, r26055, r26044, MPFR_RNDN);
        mpfr_hypot(r26057, r26052, r26056, MPFR_RNDN);
        mpfr_mul(r26058, r26051, r26057, MPFR_RNDN);
        ;
        mpfr_set_si(r26060, mpfr_cmp(r26058, r26059) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r26062, r26061, r26053, MPFR_RNDN);
        mpfr_mul(r26063, r26039, r26062, MPFR_RNDN);
        ;
        mpfr_set_si(r26065, mpfr_cmp(r26058, r26064) <= 0, MPFR_RNDN);
        mpfr_mul(r26066, r26044, r26057, MPFR_RNDN);
        mpfr_mul(r26067, r26040, r26066, MPFR_RNDN);
        if (mpfr_get_si(r26065, MPFR_RNDN)) { mpfr_set(r26068, r26067, MPFR_RNDN); } else { mpfr_set(r26068, r26063, MPFR_RNDN); };
        if (mpfr_get_si(r26060, MPFR_RNDN)) { mpfr_set(r26069, r26063, MPFR_RNDN); } else { mpfr_set(r26069, r26068, MPFR_RNDN); };
        return mpfr_get_d(r26069, MPFR_RNDN);
}

static mpfr_t r26070, r26071, r26072, r26073, r26074, r26075, r26076, r26077, r26078, r26079, r26080, r26081, r26082, r26083, r26084, r26085, r26086, r26087, r26088, r26089, r26090, r26091, r26092, r26093, r26094, r26095, r26096, r26097, r26098, r26099, r26100, r26101;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26070);
        mpfr_init_set_str(r26071, "-2", 10, MPFR_RNDN);
        mpfr_init(r26072);
        mpfr_init(r26073);
        mpfr_init_set_str(r26074, "2", 10, MPFR_RNDN);
        mpfr_init(r26075);
        mpfr_init(r26076);
        mpfr_init(r26077);
        mpfr_init(r26078);
        mpfr_init(r26079);
        mpfr_init(r26080);
        mpfr_init(r26081);
        mpfr_init(r26082);
        mpfr_init(r26083);
        mpfr_init_set_str(r26084, "1", 10, MPFR_RNDN);
        mpfr_init(r26085);
        mpfr_init(r26086);
        mpfr_init(r26087);
        mpfr_init(r26088);
        mpfr_init(r26089);
        mpfr_init(r26090);
        mpfr_init_set_str(r26091, "-1.7720578684878594e+308", 10, MPFR_RNDN);
        mpfr_init(r26092);
        mpfr_init_set_str(r26093, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26094);
        mpfr_init(r26095);
        mpfr_init_set_str(r26096, "1.7702087257768256e+308", 10, MPFR_RNDN);
        mpfr_init(r26097);
        mpfr_init(r26098);
        mpfr_init(r26099);
        mpfr_init(r26100);
        mpfr_init(r26101);
}

double f_dm(double J, double K, double U) {
        mpfr_set_d(r26070, J, MPFR_RNDN);
        ;
        mpfr_mul(r26072, r26070, r26071, MPFR_RNDN);
        mpfr_set_d(r26073, K, MPFR_RNDN);
        ;
        mpfr_div(r26075, r26073, r26074, MPFR_RNDN);
        mpfr_cos(r26076, r26075, MPFR_RNDN);
        mpfr_cbrt(r26077, r26076, MPFR_RNDN);
        mpfr_mul(r26078, r26077, r26077, MPFR_RNDN);
        mpfr_mul(r26079, r26072, r26078, MPFR_RNDN);
        mpfr_cbrt(r26080, r26077, MPFR_RNDN);
        mpfr_mul(r26081, r26080, r26080, MPFR_RNDN);
        mpfr_mul(r26082, r26081, r26080, MPFR_RNDN);
        mpfr_mul(r26083, r26079, r26082, MPFR_RNDN);
        ;
        mpfr_set_d(r26085, U, MPFR_RNDN);
        mpfr_div(r26086, r26085, r26074, MPFR_RNDN);
        mpfr_div(r26087, r26086, r26070, MPFR_RNDN);
        mpfr_div(r26088, r26087, r26076, MPFR_RNDN);
        mpfr_hypot(r26089, r26084, r26088, MPFR_RNDN);
        mpfr_mul(r26090, r26083, r26089, MPFR_RNDN);
        ;
        mpfr_set_si(r26092, mpfr_cmp(r26090, r26091) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r26094, r26093, r26085, MPFR_RNDN);
        mpfr_mul(r26095, r26071, r26094, MPFR_RNDN);
        ;
        mpfr_set_si(r26097, mpfr_cmp(r26090, r26096) <= 0, MPFR_RNDN);
        mpfr_mul(r26098, r26076, r26089, MPFR_RNDN);
        mpfr_mul(r26099, r26072, r26098, MPFR_RNDN);
        if (mpfr_get_si(r26097, MPFR_RNDN)) { mpfr_set(r26100, r26099, MPFR_RNDN); } else { mpfr_set(r26100, r26095, MPFR_RNDN); };
        if (mpfr_get_si(r26092, MPFR_RNDN)) { mpfr_set(r26101, r26095, MPFR_RNDN); } else { mpfr_set(r26101, r26100, MPFR_RNDN); };
        return mpfr_get_d(r26101, MPFR_RNDN);
}

