#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 r28656 = J;
        float r28657 = l;
        float r28658 = exp(r28657);
        float r28659 = -r28657;
        float r28660 = exp(r28659);
        float r28661 = r28658 - r28660;
        float r28662 = r28656 * r28661;
        float r28663 = K;
        float r28664 = 2;
        float r28665 = r28663 / r28664;
        float r28666 = cos(r28665);
        float r28667 = r28662 * r28666;
        float r28668 = U;
        float r28669 = r28667 + r28668;
        return r28669;
}

double f_id(double J, double l, double K, double U) {
        double r28670 = J;
        double r28671 = l;
        double r28672 = exp(r28671);
        double r28673 = -r28671;
        double r28674 = exp(r28673);
        double r28675 = r28672 - r28674;
        double r28676 = r28670 * r28675;
        double r28677 = K;
        double r28678 = 2;
        double r28679 = r28677 / r28678;
        double r28680 = cos(r28679);
        double r28681 = r28676 * r28680;
        double r28682 = U;
        double r28683 = r28681 + r28682;
        return r28683;
}


double f_of(float J, float l, float K, float U) {
        float r28684 = J;
        float r28685 = 1/3;
        float r28686 = l;
        float r28687 = 3;
        float r28688 = pow(r28686, r28687);
        float r28689 = r28685 * r28688;
        float r28690 = 2;
        float r28691 = r28690 * r28686;
        float r28692 = 1/60;
        float r28693 = 5;
        float r28694 = pow(r28686, r28693);
        float r28695 = r28692 * r28694;
        float r28696 = r28691 + r28695;
        float r28697 = r28689 + r28696;
        float r28698 = r28684 * r28697;
        float r28699 = K;
        float r28700 = r28699 / r28690;
        float r28701 = cos(r28700);
        float r28702 = r28698 * r28701;
        float r28703 = U;
        float r28704 = r28702 + r28703;
        return r28704;
}

double f_od(double J, double l, double K, double U) {
        double r28705 = J;
        double r28706 = 1/3;
        double r28707 = l;
        double r28708 = 3;
        double r28709 = pow(r28707, r28708);
        double r28710 = r28706 * r28709;
        double r28711 = 2;
        double r28712 = r28711 * r28707;
        double r28713 = 1/60;
        double r28714 = 5;
        double r28715 = pow(r28707, r28714);
        double r28716 = r28713 * r28715;
        double r28717 = r28712 + r28716;
        double r28718 = r28710 + r28717;
        double r28719 = r28705 * r28718;
        double r28720 = K;
        double r28721 = r28720 / r28711;
        double r28722 = cos(r28721);
        double r28723 = r28719 * r28722;
        double r28724 = U;
        double r28725 = r28723 + r28724;
        return r28725;
}

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 r28726, r28727, r28728, r28729, r28730, r28731, r28732, r28733, r28734, r28735, r28736, r28737, r28738, r28739;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28726);
        mpfr_init(r28727);
        mpfr_init(r28728);
        mpfr_init(r28729);
        mpfr_init(r28730);
        mpfr_init(r28731);
        mpfr_init(r28732);
        mpfr_init(r28733);
        mpfr_init_set_str(r28734, "2", 10, MPFR_RNDN);
        mpfr_init(r28735);
        mpfr_init(r28736);
        mpfr_init(r28737);
        mpfr_init(r28738);
        mpfr_init(r28739);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r28726, J, MPFR_RNDN);
        mpfr_set_d(r28727, l, MPFR_RNDN);
        mpfr_exp(r28728, r28727, MPFR_RNDN);
        mpfr_neg(r28729, r28727, MPFR_RNDN);
        mpfr_exp(r28730, r28729, MPFR_RNDN);
        mpfr_sub(r28731, r28728, r28730, MPFR_RNDN);
        mpfr_mul(r28732, r28726, r28731, MPFR_RNDN);
        mpfr_set_d(r28733, K, MPFR_RNDN);
        ;
        mpfr_div(r28735, r28733, r28734, MPFR_RNDN);
        mpfr_cos(r28736, r28735, MPFR_RNDN);
        mpfr_mul(r28737, r28732, r28736, MPFR_RNDN);
        mpfr_set_d(r28738, U, MPFR_RNDN);
        mpfr_add(r28739, r28737, r28738, MPFR_RNDN);
        return mpfr_get_d(r28739, MPFR_RNDN);
}

static mpfr_t r28740, r28741, r28742, r28743, r28744, r28745, r28746, r28747, r28748, r28749, r28750, r28751, r28752, r28753, r28754, r28755, r28756, r28757, r28758, r28759, r28760;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28740);
        mpfr_init_set_str(r28741, "1/3", 10, MPFR_RNDN);
        mpfr_init(r28742);
        mpfr_init_set_str(r28743, "3", 10, MPFR_RNDN);
        mpfr_init(r28744);
        mpfr_init(r28745);
        mpfr_init_set_str(r28746, "2", 10, MPFR_RNDN);
        mpfr_init(r28747);
        mpfr_init_set_str(r28748, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r28749, "5", 10, MPFR_RNDN);
        mpfr_init(r28750);
        mpfr_init(r28751);
        mpfr_init(r28752);
        mpfr_init(r28753);
        mpfr_init(r28754);
        mpfr_init(r28755);
        mpfr_init(r28756);
        mpfr_init(r28757);
        mpfr_init(r28758);
        mpfr_init(r28759);
        mpfr_init(r28760);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r28740, J, MPFR_RNDN);
        ;
        mpfr_set_d(r28742, l, MPFR_RNDN);
        ;
        mpfr_pow(r28744, r28742, r28743, MPFR_RNDN);
        mpfr_mul(r28745, r28741, r28744, MPFR_RNDN);
        ;
        mpfr_mul(r28747, r28746, r28742, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28750, r28742, r28749, MPFR_RNDN);
        mpfr_mul(r28751, r28748, r28750, MPFR_RNDN);
        mpfr_add(r28752, r28747, r28751, MPFR_RNDN);
        mpfr_add(r28753, r28745, r28752, MPFR_RNDN);
        mpfr_mul(r28754, r28740, r28753, MPFR_RNDN);
        mpfr_set_d(r28755, K, MPFR_RNDN);
        mpfr_div(r28756, r28755, r28746, MPFR_RNDN);
        mpfr_cos(r28757, r28756, MPFR_RNDN);
        mpfr_mul(r28758, r28754, r28757, MPFR_RNDN);
        mpfr_set_d(r28759, U, MPFR_RNDN);
        mpfr_add(r28760, r28758, r28759, MPFR_RNDN);
        return mpfr_get_d(r28760, MPFR_RNDN);
}

static mpfr_t r28761, r28762, r28763, r28764, r28765, r28766, r28767, r28768, r28769, r28770, r28771, r28772, r28773, r28774, r28775, r28776, r28777, r28778, r28779, r28780, r28781;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28761);
        mpfr_init_set_str(r28762, "1/3", 10, MPFR_RNDN);
        mpfr_init(r28763);
        mpfr_init_set_str(r28764, "3", 10, MPFR_RNDN);
        mpfr_init(r28765);
        mpfr_init(r28766);
        mpfr_init_set_str(r28767, "2", 10, MPFR_RNDN);
        mpfr_init(r28768);
        mpfr_init_set_str(r28769, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r28770, "5", 10, MPFR_RNDN);
        mpfr_init(r28771);
        mpfr_init(r28772);
        mpfr_init(r28773);
        mpfr_init(r28774);
        mpfr_init(r28775);
        mpfr_init(r28776);
        mpfr_init(r28777);
        mpfr_init(r28778);
        mpfr_init(r28779);
        mpfr_init(r28780);
        mpfr_init(r28781);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r28761, J, MPFR_RNDN);
        ;
        mpfr_set_d(r28763, l, MPFR_RNDN);
        ;
        mpfr_pow(r28765, r28763, r28764, MPFR_RNDN);
        mpfr_mul(r28766, r28762, r28765, MPFR_RNDN);
        ;
        mpfr_mul(r28768, r28767, r28763, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28771, r28763, r28770, MPFR_RNDN);
        mpfr_mul(r28772, r28769, r28771, MPFR_RNDN);
        mpfr_add(r28773, r28768, r28772, MPFR_RNDN);
        mpfr_add(r28774, r28766, r28773, MPFR_RNDN);
        mpfr_mul(r28775, r28761, r28774, MPFR_RNDN);
        mpfr_set_d(r28776, K, MPFR_RNDN);
        mpfr_div(r28777, r28776, r28767, MPFR_RNDN);
        mpfr_cos(r28778, r28777, MPFR_RNDN);
        mpfr_mul(r28779, r28775, r28778, MPFR_RNDN);
        mpfr_set_d(r28780, U, MPFR_RNDN);
        mpfr_add(r28781, r28779, r28780, MPFR_RNDN);
        return mpfr_get_d(r28781, MPFR_RNDN);
}

