#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 r28914 = -2;
        float r28915 = J;
        float r28916 = r28914 * r28915;
        float r28917 = K;
        float r28918 = 2;
        float r28919 = r28917 / r28918;
        float r28920 = cos(r28919);
        float r28921 = r28916 * r28920;
        float r28922 = 1;
        float r28923 = U;
        float r28924 = r28918 * r28915;
        float r28925 = r28924 * r28920;
        float r28926 = r28923 / r28925;
        float r28927 = pow(r28926, r28918);
        float r28928 = r28922 + r28927;
        float r28929 = sqrt(r28928);
        float r28930 = r28921 * r28929;
        return r28930;
}

double f_id(double J, double K, double U) {
        double r28931 = -2;
        double r28932 = J;
        double r28933 = r28931 * r28932;
        double r28934 = K;
        double r28935 = 2;
        double r28936 = r28934 / r28935;
        double r28937 = cos(r28936);
        double r28938 = r28933 * r28937;
        double r28939 = 1;
        double r28940 = U;
        double r28941 = r28935 * r28932;
        double r28942 = r28941 * r28937;
        double r28943 = r28940 / r28942;
        double r28944 = pow(r28943, r28935);
        double r28945 = r28939 + r28944;
        double r28946 = sqrt(r28945);
        double r28947 = r28938 * r28946;
        return r28947;
}


double f_of(float J, float K, float U) {
        float r28948 = -2;
        float r28949 = J;
        float r28950 = K;
        float r28951 = 2;
        float r28952 = r28950 / r28951;
        float r28953 = cos(r28952);
        float r28954 = r28949 * r28953;
        float r28955 = r28948 * r28954;
        float r28956 = 1;
        float r28957 = U;
        float r28958 = r28951 * r28949;
        float r28959 = r28958 * r28953;
        float r28960 = r28957 / r28959;
        float r28961 = pow(r28960, r28951);
        float r28962 = r28956 + r28961;
        float r28963 = sqrt(r28962);
        float r28964 = r28955 * r28963;
        return r28964;
}

double f_od(double J, double K, double U) {
        double r28965 = -2;
        double r28966 = J;
        double r28967 = K;
        double r28968 = 2;
        double r28969 = r28967 / r28968;
        double r28970 = cos(r28969);
        double r28971 = r28966 * r28970;
        double r28972 = r28965 * r28971;
        double r28973 = 1;
        double r28974 = U;
        double r28975 = r28968 * r28966;
        double r28976 = r28975 * r28970;
        double r28977 = r28974 / r28976;
        double r28978 = pow(r28977, r28968);
        double r28979 = r28973 + r28978;
        double r28980 = sqrt(r28979);
        double r28981 = r28972 * r28980;
        return r28981;
}

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 r28982, r28983, r28984, r28985, r28986, r28987, r28988, r28989, r28990, r28991, r28992, r28993, r28994, r28995, r28996, r28997, r28998;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28982, "-2", 10, MPFR_RNDN);
        mpfr_init(r28983);
        mpfr_init(r28984);
        mpfr_init(r28985);
        mpfr_init_set_str(r28986, "2", 10, MPFR_RNDN);
        mpfr_init(r28987);
        mpfr_init(r28988);
        mpfr_init(r28989);
        mpfr_init_set_str(r28990, "1", 10, MPFR_RNDN);
        mpfr_init(r28991);
        mpfr_init(r28992);
        mpfr_init(r28993);
        mpfr_init(r28994);
        mpfr_init(r28995);
        mpfr_init(r28996);
        mpfr_init(r28997);
        mpfr_init(r28998);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r28983, J, MPFR_RNDN);
        mpfr_mul(r28984, r28982, r28983, MPFR_RNDN);
        mpfr_set_d(r28985, K, MPFR_RNDN);
        ;
        mpfr_div(r28987, r28985, r28986, MPFR_RNDN);
        mpfr_cos(r28988, r28987, MPFR_RNDN);
        mpfr_mul(r28989, r28984, r28988, MPFR_RNDN);
        ;
        mpfr_set_d(r28991, U, MPFR_RNDN);
        mpfr_mul(r28992, r28986, r28983, MPFR_RNDN);
        mpfr_mul(r28993, r28992, r28988, MPFR_RNDN);
        mpfr_div(r28994, r28991, r28993, MPFR_RNDN);
        mpfr_pow(r28995, r28994, r28986, MPFR_RNDN);
        mpfr_add(r28996, r28990, r28995, MPFR_RNDN);
        mpfr_sqrt(r28997, r28996, MPFR_RNDN);
        mpfr_mul(r28998, r28989, r28997, MPFR_RNDN);
        return mpfr_get_d(r28998, MPFR_RNDN);
}

static mpfr_t r28999, r29000, r29001, r29002, r29003, r29004, r29005, r29006, r29007, r29008, r29009, r29010, r29011, r29012, r29013, r29014, r29015;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28999, "-2", 10, MPFR_RNDN);
        mpfr_init(r29000);
        mpfr_init(r29001);
        mpfr_init_set_str(r29002, "2", 10, MPFR_RNDN);
        mpfr_init(r29003);
        mpfr_init(r29004);
        mpfr_init(r29005);
        mpfr_init(r29006);
        mpfr_init_set_str(r29007, "1", 10, MPFR_RNDN);
        mpfr_init(r29008);
        mpfr_init(r29009);
        mpfr_init(r29010);
        mpfr_init(r29011);
        mpfr_init(r29012);
        mpfr_init(r29013);
        mpfr_init(r29014);
        mpfr_init(r29015);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r29000, J, MPFR_RNDN);
        mpfr_set_d(r29001, K, MPFR_RNDN);
        ;
        mpfr_div(r29003, r29001, r29002, MPFR_RNDN);
        mpfr_cos(r29004, r29003, MPFR_RNDN);
        mpfr_mul(r29005, r29000, r29004, MPFR_RNDN);
        mpfr_mul(r29006, r28999, r29005, MPFR_RNDN);
        ;
        mpfr_set_d(r29008, U, MPFR_RNDN);
        mpfr_mul(r29009, r29002, r29000, MPFR_RNDN);
        mpfr_mul(r29010, r29009, r29004, MPFR_RNDN);
        mpfr_div(r29011, r29008, r29010, MPFR_RNDN);
        mpfr_pow(r29012, r29011, r29002, MPFR_RNDN);
        mpfr_add(r29013, r29007, r29012, MPFR_RNDN);
        mpfr_sqrt(r29014, r29013, MPFR_RNDN);
        mpfr_mul(r29015, r29006, r29014, MPFR_RNDN);
        return mpfr_get_d(r29015, MPFR_RNDN);
}

static mpfr_t r29016, r29017, r29018, r29019, r29020, r29021, r29022, r29023, r29024, r29025, r29026, r29027, r29028, r29029, r29030, r29031, r29032;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29016, "-2", 10, MPFR_RNDN);
        mpfr_init(r29017);
        mpfr_init(r29018);
        mpfr_init_set_str(r29019, "2", 10, MPFR_RNDN);
        mpfr_init(r29020);
        mpfr_init(r29021);
        mpfr_init(r29022);
        mpfr_init(r29023);
        mpfr_init_set_str(r29024, "1", 10, MPFR_RNDN);
        mpfr_init(r29025);
        mpfr_init(r29026);
        mpfr_init(r29027);
        mpfr_init(r29028);
        mpfr_init(r29029);
        mpfr_init(r29030);
        mpfr_init(r29031);
        mpfr_init(r29032);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r29017, J, MPFR_RNDN);
        mpfr_set_d(r29018, K, MPFR_RNDN);
        ;
        mpfr_div(r29020, r29018, r29019, MPFR_RNDN);
        mpfr_cos(r29021, r29020, MPFR_RNDN);
        mpfr_mul(r29022, r29017, r29021, MPFR_RNDN);
        mpfr_mul(r29023, r29016, r29022, MPFR_RNDN);
        ;
        mpfr_set_d(r29025, U, MPFR_RNDN);
        mpfr_mul(r29026, r29019, r29017, MPFR_RNDN);
        mpfr_mul(r29027, r29026, r29021, MPFR_RNDN);
        mpfr_div(r29028, r29025, r29027, MPFR_RNDN);
        mpfr_pow(r29029, r29028, r29019, MPFR_RNDN);
        mpfr_add(r29030, r29024, r29029, MPFR_RNDN);
        mpfr_sqrt(r29031, r29030, MPFR_RNDN);
        mpfr_mul(r29032, r29023, r29031, MPFR_RNDN);
        return mpfr_get_d(r29032, MPFR_RNDN);
}

