#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 r29037 = -2;
        float r29038 = J;
        float r29039 = r29037 * r29038;
        float r29040 = K;
        float r29041 = 2;
        float r29042 = r29040 / r29041;
        float r29043 = cos(r29042);
        float r29044 = r29039 * r29043;
        float r29045 = 1;
        float r29046 = U;
        float r29047 = r29041 * r29038;
        float r29048 = r29047 * r29043;
        float r29049 = r29046 / r29048;
        float r29050 = pow(r29049, r29041);
        float r29051 = r29045 + r29050;
        float r29052 = sqrt(r29051);
        float r29053 = r29044 * r29052;
        return r29053;
}

double f_id(double J, double K, double U) {
        double r29054 = -2;
        double r29055 = J;
        double r29056 = r29054 * r29055;
        double r29057 = K;
        double r29058 = 2;
        double r29059 = r29057 / r29058;
        double r29060 = cos(r29059);
        double r29061 = r29056 * r29060;
        double r29062 = 1;
        double r29063 = U;
        double r29064 = r29058 * r29055;
        double r29065 = r29064 * r29060;
        double r29066 = r29063 / r29065;
        double r29067 = pow(r29066, r29058);
        double r29068 = r29062 + r29067;
        double r29069 = sqrt(r29068);
        double r29070 = r29061 * r29069;
        return r29070;
}


double f_of(float J, float K, float U) {
        float r29071 = -2;
        float r29072 = J;
        float r29073 = K;
        float r29074 = 2;
        float r29075 = r29073 / r29074;
        float r29076 = cos(r29075);
        float r29077 = r29072 * r29076;
        float r29078 = r29071 * r29077;
        float r29079 = 1;
        float r29080 = U;
        float r29081 = r29074 * r29072;
        float r29082 = r29081 * r29076;
        float r29083 = r29080 / r29082;
        float r29084 = pow(r29083, r29074);
        float r29085 = r29079 + r29084;
        float r29086 = sqrt(r29085);
        float r29087 = r29078 * r29086;
        return r29087;
}

double f_od(double J, double K, double U) {
        double r29088 = -2;
        double r29089 = J;
        double r29090 = K;
        double r29091 = 2;
        double r29092 = r29090 / r29091;
        double r29093 = cos(r29092);
        double r29094 = r29089 * r29093;
        double r29095 = r29088 * r29094;
        double r29096 = 1;
        double r29097 = U;
        double r29098 = r29091 * r29089;
        double r29099 = r29098 * r29093;
        double r29100 = r29097 / r29099;
        double r29101 = pow(r29100, r29091);
        double r29102 = r29096 + r29101;
        double r29103 = sqrt(r29102);
        double r29104 = r29095 * r29103;
        return r29104;
}

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 r29105, r29106, r29107, r29108, r29109, r29110, r29111, r29112, r29113, r29114, r29115, r29116, r29117, r29118, r29119, r29120, r29121;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29105, "-2", 10, MPFR_RNDN);
        mpfr_init(r29106);
        mpfr_init(r29107);
        mpfr_init(r29108);
        mpfr_init_set_str(r29109, "2", 10, MPFR_RNDN);
        mpfr_init(r29110);
        mpfr_init(r29111);
        mpfr_init(r29112);
        mpfr_init_set_str(r29113, "1", 10, MPFR_RNDN);
        mpfr_init(r29114);
        mpfr_init(r29115);
        mpfr_init(r29116);
        mpfr_init(r29117);
        mpfr_init(r29118);
        mpfr_init(r29119);
        mpfr_init(r29120);
        mpfr_init(r29121);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r29106, J, MPFR_RNDN);
        mpfr_mul(r29107, r29105, r29106, MPFR_RNDN);
        mpfr_set_d(r29108, K, MPFR_RNDN);
        ;
        mpfr_div(r29110, r29108, r29109, MPFR_RNDN);
        mpfr_cos(r29111, r29110, MPFR_RNDN);
        mpfr_mul(r29112, r29107, r29111, MPFR_RNDN);
        ;
        mpfr_set_d(r29114, U, MPFR_RNDN);
        mpfr_mul(r29115, r29109, r29106, MPFR_RNDN);
        mpfr_mul(r29116, r29115, r29111, MPFR_RNDN);
        mpfr_div(r29117, r29114, r29116, MPFR_RNDN);
        mpfr_pow(r29118, r29117, r29109, MPFR_RNDN);
        mpfr_add(r29119, r29113, r29118, MPFR_RNDN);
        mpfr_sqrt(r29120, r29119, MPFR_RNDN);
        mpfr_mul(r29121, r29112, r29120, MPFR_RNDN);
        return mpfr_get_d(r29121, MPFR_RNDN);
}

static mpfr_t r29122, r29123, r29124, r29125, r29126, r29127, r29128, r29129, r29130, r29131, r29132, r29133, r29134, r29135, r29136, r29137, r29138;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29122, "-2", 10, MPFR_RNDN);
        mpfr_init(r29123);
        mpfr_init(r29124);
        mpfr_init_set_str(r29125, "2", 10, MPFR_RNDN);
        mpfr_init(r29126);
        mpfr_init(r29127);
        mpfr_init(r29128);
        mpfr_init(r29129);
        mpfr_init_set_str(r29130, "1", 10, MPFR_RNDN);
        mpfr_init(r29131);
        mpfr_init(r29132);
        mpfr_init(r29133);
        mpfr_init(r29134);
        mpfr_init(r29135);
        mpfr_init(r29136);
        mpfr_init(r29137);
        mpfr_init(r29138);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r29123, J, MPFR_RNDN);
        mpfr_set_d(r29124, K, MPFR_RNDN);
        ;
        mpfr_div(r29126, r29124, r29125, MPFR_RNDN);
        mpfr_cos(r29127, r29126, MPFR_RNDN);
        mpfr_mul(r29128, r29123, r29127, MPFR_RNDN);
        mpfr_mul(r29129, r29122, r29128, MPFR_RNDN);
        ;
        mpfr_set_d(r29131, U, MPFR_RNDN);
        mpfr_mul(r29132, r29125, r29123, MPFR_RNDN);
        mpfr_mul(r29133, r29132, r29127, MPFR_RNDN);
        mpfr_div(r29134, r29131, r29133, MPFR_RNDN);
        mpfr_pow(r29135, r29134, r29125, MPFR_RNDN);
        mpfr_add(r29136, r29130, r29135, MPFR_RNDN);
        mpfr_sqrt(r29137, r29136, MPFR_RNDN);
        mpfr_mul(r29138, r29129, r29137, MPFR_RNDN);
        return mpfr_get_d(r29138, MPFR_RNDN);
}

static mpfr_t r29139, r29140, r29141, r29142, r29143, r29144, r29145, r29146, r29147, r29148, r29149, r29150, r29151, r29152, r29153, r29154, r29155;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r29139, "-2", 10, MPFR_RNDN);
        mpfr_init(r29140);
        mpfr_init(r29141);
        mpfr_init_set_str(r29142, "2", 10, MPFR_RNDN);
        mpfr_init(r29143);
        mpfr_init(r29144);
        mpfr_init(r29145);
        mpfr_init(r29146);
        mpfr_init_set_str(r29147, "1", 10, MPFR_RNDN);
        mpfr_init(r29148);
        mpfr_init(r29149);
        mpfr_init(r29150);
        mpfr_init(r29151);
        mpfr_init(r29152);
        mpfr_init(r29153);
        mpfr_init(r29154);
        mpfr_init(r29155);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r29140, J, MPFR_RNDN);
        mpfr_set_d(r29141, K, MPFR_RNDN);
        ;
        mpfr_div(r29143, r29141, r29142, MPFR_RNDN);
        mpfr_cos(r29144, r29143, MPFR_RNDN);
        mpfr_mul(r29145, r29140, r29144, MPFR_RNDN);
        mpfr_mul(r29146, r29139, r29145, MPFR_RNDN);
        ;
        mpfr_set_d(r29148, U, MPFR_RNDN);
        mpfr_mul(r29149, r29142, r29140, MPFR_RNDN);
        mpfr_mul(r29150, r29149, r29144, MPFR_RNDN);
        mpfr_div(r29151, r29148, r29150, MPFR_RNDN);
        mpfr_pow(r29152, r29151, r29142, MPFR_RNDN);
        mpfr_add(r29153, r29147, r29152, MPFR_RNDN);
        mpfr_sqrt(r29154, r29153, MPFR_RNDN);
        mpfr_mul(r29155, r29146, r29154, MPFR_RNDN);
        return mpfr_get_d(r29155, MPFR_RNDN);
}

