#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Maksimov and Kolovsky, Equation (4)";

double f_if(float J, float l, float K, float U) {
        float r25682 = J;
        float r25683 = l;
        float r25684 = exp(r25683);
        float r25685 = -r25683;
        float r25686 = exp(r25685);
        float r25687 = r25684 - r25686;
        float r25688 = r25682 * r25687;
        float r25689 = K;
        float r25690 = 2;
        float r25691 = r25689 / r25690;
        float r25692 = cos(r25691);
        float r25693 = r25688 * r25692;
        float r25694 = U;
        float r25695 = r25693 + r25694;
        return r25695;
}

double f_id(double J, double l, double K, double U) {
        double r25696 = J;
        double r25697 = l;
        double r25698 = exp(r25697);
        double r25699 = -r25697;
        double r25700 = exp(r25699);
        double r25701 = r25698 - r25700;
        double r25702 = r25696 * r25701;
        double r25703 = K;
        double r25704 = 2;
        double r25705 = r25703 / r25704;
        double r25706 = cos(r25705);
        double r25707 = r25702 * r25706;
        double r25708 = U;
        double r25709 = r25707 + r25708;
        return r25709;
}


double f_of(float J, float l, float K, float U) {
        float r25710 = J;
        float r25711 = 1/3;
        float r25712 = l;
        float r25713 = 3;
        float r25714 = pow(r25712, r25713);
        float r25715 = r25711 * r25714;
        float r25716 = 2;
        float r25717 = r25716 * r25712;
        float r25718 = 1/60;
        float r25719 = 5;
        float r25720 = pow(r25712, r25719);
        float r25721 = r25718 * r25720;
        float r25722 = r25717 + r25721;
        float r25723 = r25715 + r25722;
        float r25724 = r25710 * r25723;
        float r25725 = K;
        float r25726 = r25725 / r25716;
        float r25727 = cos(r25726);
        float r25728 = r25724 * r25727;
        float r25729 = U;
        float r25730 = r25728 + r25729;
        return r25730;
}

double f_od(double J, double l, double K, double U) {
        double r25731 = J;
        double r25732 = 1/3;
        double r25733 = l;
        double r25734 = 3;
        double r25735 = pow(r25733, r25734);
        double r25736 = r25732 * r25735;
        double r25737 = 2;
        double r25738 = r25737 * r25733;
        double r25739 = 1/60;
        double r25740 = 5;
        double r25741 = pow(r25733, r25740);
        double r25742 = r25739 * r25741;
        double r25743 = r25738 + r25742;
        double r25744 = r25736 + r25743;
        double r25745 = r25731 * r25744;
        double r25746 = K;
        double r25747 = r25746 / r25737;
        double r25748 = cos(r25747);
        double r25749 = r25745 * r25748;
        double r25750 = U;
        double r25751 = r25749 + r25750;
        return r25751;
}

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 r25752, r25753, r25754, r25755, r25756, r25757, r25758, r25759, r25760, r25761, r25762, r25763, r25764, r25765;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init(r25754);
        mpfr_init(r25755);
        mpfr_init(r25756);
        mpfr_init(r25757);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init_set_str(r25760, "2", 10, MPFR_RNDN);
        mpfr_init(r25761);
        mpfr_init(r25762);
        mpfr_init(r25763);
        mpfr_init(r25764);
        mpfr_init(r25765);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r25752, J, MPFR_RNDN);
        mpfr_set_d(r25753, l, MPFR_RNDN);
        mpfr_exp(r25754, r25753, MPFR_RNDN);
        mpfr_neg(r25755, r25753, MPFR_RNDN);
        mpfr_exp(r25756, r25755, MPFR_RNDN);
        mpfr_sub(r25757, r25754, r25756, MPFR_RNDN);
        mpfr_mul(r25758, r25752, r25757, MPFR_RNDN);
        mpfr_set_d(r25759, K, MPFR_RNDN);
        ;
        mpfr_div(r25761, r25759, r25760, MPFR_RNDN);
        mpfr_cos(r25762, r25761, MPFR_RNDN);
        mpfr_mul(r25763, r25758, r25762, MPFR_RNDN);
        mpfr_set_d(r25764, U, MPFR_RNDN);
        mpfr_add(r25765, r25763, r25764, MPFR_RNDN);
        return mpfr_get_d(r25765, MPFR_RNDN);
}

static mpfr_t r25766, r25767, r25768, r25769, r25770, r25771, r25772, r25773, r25774, r25775, r25776, r25777, r25778, r25779, r25780, r25781, r25782, r25783, r25784, r25785, r25786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25766);
        mpfr_init_set_str(r25767, "1/3", 10, MPFR_RNDN);
        mpfr_init(r25768);
        mpfr_init_set_str(r25769, "3", 10, MPFR_RNDN);
        mpfr_init(r25770);
        mpfr_init(r25771);
        mpfr_init_set_str(r25772, "2", 10, MPFR_RNDN);
        mpfr_init(r25773);
        mpfr_init_set_str(r25774, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r25775, "5", 10, MPFR_RNDN);
        mpfr_init(r25776);
        mpfr_init(r25777);
        mpfr_init(r25778);
        mpfr_init(r25779);
        mpfr_init(r25780);
        mpfr_init(r25781);
        mpfr_init(r25782);
        mpfr_init(r25783);
        mpfr_init(r25784);
        mpfr_init(r25785);
        mpfr_init(r25786);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r25766, J, MPFR_RNDN);
        ;
        mpfr_set_d(r25768, l, MPFR_RNDN);
        ;
        mpfr_pow(r25770, r25768, r25769, MPFR_RNDN);
        mpfr_mul(r25771, r25767, r25770, MPFR_RNDN);
        ;
        mpfr_mul(r25773, r25772, r25768, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25776, r25768, r25775, MPFR_RNDN);
        mpfr_mul(r25777, r25774, r25776, MPFR_RNDN);
        mpfr_add(r25778, r25773, r25777, MPFR_RNDN);
        mpfr_add(r25779, r25771, r25778, MPFR_RNDN);
        mpfr_mul(r25780, r25766, r25779, MPFR_RNDN);
        mpfr_set_d(r25781, K, MPFR_RNDN);
        mpfr_div(r25782, r25781, r25772, MPFR_RNDN);
        mpfr_cos(r25783, r25782, MPFR_RNDN);
        mpfr_mul(r25784, r25780, r25783, MPFR_RNDN);
        mpfr_set_d(r25785, U, MPFR_RNDN);
        mpfr_add(r25786, r25784, r25785, MPFR_RNDN);
        return mpfr_get_d(r25786, MPFR_RNDN);
}

static mpfr_t r25787, r25788, r25789, r25790, r25791, r25792, r25793, r25794, r25795, r25796, r25797, r25798, r25799, r25800, r25801, r25802, r25803, r25804, r25805, r25806, r25807;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25787);
        mpfr_init_set_str(r25788, "1/3", 10, MPFR_RNDN);
        mpfr_init(r25789);
        mpfr_init_set_str(r25790, "3", 10, MPFR_RNDN);
        mpfr_init(r25791);
        mpfr_init(r25792);
        mpfr_init_set_str(r25793, "2", 10, MPFR_RNDN);
        mpfr_init(r25794);
        mpfr_init_set_str(r25795, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r25796, "5", 10, MPFR_RNDN);
        mpfr_init(r25797);
        mpfr_init(r25798);
        mpfr_init(r25799);
        mpfr_init(r25800);
        mpfr_init(r25801);
        mpfr_init(r25802);
        mpfr_init(r25803);
        mpfr_init(r25804);
        mpfr_init(r25805);
        mpfr_init(r25806);
        mpfr_init(r25807);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r25787, J, MPFR_RNDN);
        ;
        mpfr_set_d(r25789, l, MPFR_RNDN);
        ;
        mpfr_pow(r25791, r25789, r25790, MPFR_RNDN);
        mpfr_mul(r25792, r25788, r25791, MPFR_RNDN);
        ;
        mpfr_mul(r25794, r25793, r25789, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25797, r25789, r25796, MPFR_RNDN);
        mpfr_mul(r25798, r25795, r25797, MPFR_RNDN);
        mpfr_add(r25799, r25794, r25798, MPFR_RNDN);
        mpfr_add(r25800, r25792, r25799, MPFR_RNDN);
        mpfr_mul(r25801, r25787, r25800, MPFR_RNDN);
        mpfr_set_d(r25802, K, MPFR_RNDN);
        mpfr_div(r25803, r25802, r25793, MPFR_RNDN);
        mpfr_cos(r25804, r25803, MPFR_RNDN);
        mpfr_mul(r25805, r25801, r25804, MPFR_RNDN);
        mpfr_set_d(r25806, U, MPFR_RNDN);
        mpfr_add(r25807, r25805, r25806, MPFR_RNDN);
        return mpfr_get_d(r25807, MPFR_RNDN);
}

