#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 r26677 = J;
        float r26678 = l;
        float r26679 = exp(r26678);
        float r26680 = -r26678;
        float r26681 = exp(r26680);
        float r26682 = r26679 - r26681;
        float r26683 = r26677 * r26682;
        float r26684 = K;
        float r26685 = 2.0f;
        float r26686 = r26684 / r26685;
        float r26687 = cos(r26686);
        float r26688 = r26683 * r26687;
        float r26689 = U;
        float r26690 = r26688 + r26689;
        return r26690;
}

double f_id(double J, double l, double K, double U) {
        double r26691 = J;
        double r26692 = l;
        double r26693 = exp(r26692);
        double r26694 = -r26692;
        double r26695 = exp(r26694);
        double r26696 = r26693 - r26695;
        double r26697 = r26691 * r26696;
        double r26698 = K;
        double r26699 = 2.0;
        double r26700 = r26698 / r26699;
        double r26701 = cos(r26700);
        double r26702 = r26697 * r26701;
        double r26703 = U;
        double r26704 = r26702 + r26703;
        return r26704;
}


double f_of(float J, float l, float K, float U) {
        float r26705 = l;
        float r26706 = r26705 * (r26705 * r26705);
        float r26707 = 0.3333333333333333f;
        float r26708 = r26706 * r26707;
        float r26709 = 0.016666666666666666f;
        float r26710 = 5.0f;
        float r26711 = pow(r26705, r26710);
        float r26712 = r26709 * r26711;
        float r26713 = r26705 + r26705;
        float r26714 = r26712 + r26713;
        float r26715 = r26708 + r26714;
        float r26716 = K;
        float r26717 = 2.0f;
        float r26718 = r26716 / r26717;
        float r26719 = cos(r26718);
        float r26720 = J;
        float r26721 = r26719 * r26720;
        float r26722 = r26715 * r26721;
        float r26723 = 1.0f;
        float r26724 = pow(r26722, r26723);
        float r26725 = U;
        float r26726 = r26724 + r26725;
        return r26726;
}

double f_od(double J, double l, double K, double U) {
        double r26727 = l;
        double r26728 = r26727 * (r26727 * r26727);
        double r26729 = 0.3333333333333333;
        double r26730 = r26728 * r26729;
        double r26731 = 0.016666666666666666;
        double r26732 = 5.0;
        double r26733 = pow(r26727, r26732);
        double r26734 = r26731 * r26733;
        double r26735 = r26727 + r26727;
        double r26736 = r26734 + r26735;
        double r26737 = r26730 + r26736;
        double r26738 = K;
        double r26739 = 2.0;
        double r26740 = r26738 / r26739;
        double r26741 = cos(r26740);
        double r26742 = J;
        double r26743 = r26741 * r26742;
        double r26744 = r26737 * r26743;
        double r26745 = 1.0;
        double r26746 = pow(r26744, r26745);
        double r26747 = U;
        double r26748 = r26746 + r26747;
        return r26748;
}

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 r26749, r26750, r26751, r26752, r26753, r26754, r26755, r26756, r26757, r26758, r26759, r26760, r26761, r26762;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r26749);
        mpfr_init(r26750);
        mpfr_init(r26751);
        mpfr_init(r26752);
        mpfr_init(r26753);
        mpfr_init(r26754);
        mpfr_init(r26755);
        mpfr_init(r26756);
        mpfr_init_set_str(r26757, "2", 10, MPFR_RNDN);
        mpfr_init(r26758);
        mpfr_init(r26759);
        mpfr_init(r26760);
        mpfr_init(r26761);
        mpfr_init(r26762);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r26749, J, MPFR_RNDN);
        mpfr_set_d(r26750, l, MPFR_RNDN);
        mpfr_exp(r26751, r26750, MPFR_RNDN);
        mpfr_neg(r26752, r26750, MPFR_RNDN);
        mpfr_exp(r26753, r26752, MPFR_RNDN);
        mpfr_sub(r26754, r26751, r26753, MPFR_RNDN);
        mpfr_mul(r26755, r26749, r26754, MPFR_RNDN);
        mpfr_set_d(r26756, K, MPFR_RNDN);
        ;
        mpfr_div(r26758, r26756, r26757, MPFR_RNDN);
        mpfr_cos(r26759, r26758, MPFR_RNDN);
        mpfr_mul(r26760, r26755, r26759, MPFR_RNDN);
        mpfr_set_d(r26761, U, MPFR_RNDN);
        mpfr_add(r26762, r26760, r26761, MPFR_RNDN);
        return mpfr_get_d(r26762, MPFR_RNDN);
}

static mpfr_t r26763, r26764, r26765, r26766, r26767, r26768, r26769, r26770, r26771, r26772, r26773, r26774, r26775, r26776, r26777, r26778, r26779, r26780, r26781, r26782, r26783, r26784;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r26763);
        mpfr_init(r26764);
        mpfr_init_set_str(r26765, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26766);
        mpfr_init_set_str(r26767, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r26768, "5", 10, MPFR_RNDN);
        mpfr_init(r26769);
        mpfr_init(r26770);
        mpfr_init(r26771);
        mpfr_init(r26772);
        mpfr_init(r26773);
        mpfr_init(r26774);
        mpfr_init_set_str(r26775, "2", 10, MPFR_RNDN);
        mpfr_init(r26776);
        mpfr_init(r26777);
        mpfr_init(r26778);
        mpfr_init(r26779);
        mpfr_init(r26780);
        mpfr_init_set_str(r26781, "1", 10, MPFR_RNDN);
        mpfr_init(r26782);
        mpfr_init(r26783);
        mpfr_init(r26784);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r26763, l, MPFR_RNDN);
        mpfr_mul(r26764, r26763, r26763, MPFR_RNDN); mpfr_mul(r26764, r26764, r26763, MPFR_RNDN);
        ;
        mpfr_mul(r26766, r26764, r26765, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26769, r26763, r26768, MPFR_RNDN);
        mpfr_mul(r26770, r26767, r26769, MPFR_RNDN);
        mpfr_add(r26771, r26763, r26763, MPFR_RNDN);
        mpfr_add(r26772, r26770, r26771, MPFR_RNDN);
        mpfr_add(r26773, r26766, r26772, MPFR_RNDN);
        mpfr_set_d(r26774, K, MPFR_RNDN);
        ;
        mpfr_div(r26776, r26774, r26775, MPFR_RNDN);
        mpfr_cos(r26777, r26776, MPFR_RNDN);
        mpfr_set_d(r26778, J, MPFR_RNDN);
        mpfr_mul(r26779, r26777, r26778, MPFR_RNDN);
        mpfr_mul(r26780, r26773, r26779, MPFR_RNDN);
        ;
        mpfr_pow(r26782, r26780, r26781, MPFR_RNDN);
        mpfr_set_d(r26783, U, MPFR_RNDN);
        mpfr_add(r26784, r26782, r26783, MPFR_RNDN);
        return mpfr_get_d(r26784, MPFR_RNDN);
}

static mpfr_t r26785, r26786, r26787, r26788, r26789, r26790, r26791, r26792, r26793, r26794, r26795, r26796, r26797, r26798, r26799, r26800, r26801, r26802, r26803, r26804, r26805, r26806;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r26785);
        mpfr_init(r26786);
        mpfr_init_set_str(r26787, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26788);
        mpfr_init_set_str(r26789, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r26790, "5", 10, MPFR_RNDN);
        mpfr_init(r26791);
        mpfr_init(r26792);
        mpfr_init(r26793);
        mpfr_init(r26794);
        mpfr_init(r26795);
        mpfr_init(r26796);
        mpfr_init_set_str(r26797, "2", 10, MPFR_RNDN);
        mpfr_init(r26798);
        mpfr_init(r26799);
        mpfr_init(r26800);
        mpfr_init(r26801);
        mpfr_init(r26802);
        mpfr_init_set_str(r26803, "1", 10, MPFR_RNDN);
        mpfr_init(r26804);
        mpfr_init(r26805);
        mpfr_init(r26806);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r26785, l, MPFR_RNDN);
        mpfr_mul(r26786, r26785, r26785, MPFR_RNDN); mpfr_mul(r26786, r26786, r26785, MPFR_RNDN);
        ;
        mpfr_mul(r26788, r26786, r26787, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26791, r26785, r26790, MPFR_RNDN);
        mpfr_mul(r26792, r26789, r26791, MPFR_RNDN);
        mpfr_add(r26793, r26785, r26785, MPFR_RNDN);
        mpfr_add(r26794, r26792, r26793, MPFR_RNDN);
        mpfr_add(r26795, r26788, r26794, MPFR_RNDN);
        mpfr_set_d(r26796, K, MPFR_RNDN);
        ;
        mpfr_div(r26798, r26796, r26797, MPFR_RNDN);
        mpfr_cos(r26799, r26798, MPFR_RNDN);
        mpfr_set_d(r26800, J, MPFR_RNDN);
        mpfr_mul(r26801, r26799, r26800, MPFR_RNDN);
        mpfr_mul(r26802, r26795, r26801, MPFR_RNDN);
        ;
        mpfr_pow(r26804, r26802, r26803, MPFR_RNDN);
        mpfr_set_d(r26805, U, MPFR_RNDN);
        mpfr_add(r26806, r26804, r26805, MPFR_RNDN);
        return mpfr_get_d(r26806, MPFR_RNDN);
}

