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

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

double f_if(float K, float m, float n, float M, float l) {
        float r25724 = K;
        float r25725 = m;
        float r25726 = n;
        float r25727 = r25725 + r25726;
        float r25728 = r25724 * r25727;
        float r25729 = 2;
        float r25730 = r25728 / r25729;
        float r25731 = M;
        float r25732 = r25730 - r25731;
        float r25733 = cos(r25732);
        float r25734 = r25727 / r25729;
        float r25735 = r25734 - r25731;
        float r25736 = pow(r25735, r25729);
        float r25737 = -r25736;
        float r25738 = l;
        float r25739 = r25725 - r25726;
        float r25740 = fabs(r25739);
        float r25741 = r25738 - r25740;
        float r25742 = r25737 - r25741;
        float r25743 = exp(r25742);
        float r25744 = r25733 * r25743;
        return r25744;
}

double f_id(double K, double m, double n, double M, double l) {
        double r25745 = K;
        double r25746 = m;
        double r25747 = n;
        double r25748 = r25746 + r25747;
        double r25749 = r25745 * r25748;
        double r25750 = 2;
        double r25751 = r25749 / r25750;
        double r25752 = M;
        double r25753 = r25751 - r25752;
        double r25754 = cos(r25753);
        double r25755 = r25748 / r25750;
        double r25756 = r25755 - r25752;
        double r25757 = pow(r25756, r25750);
        double r25758 = -r25757;
        double r25759 = l;
        double r25760 = r25746 - r25747;
        double r25761 = fabs(r25760);
        double r25762 = r25759 - r25761;
        double r25763 = r25758 - r25762;
        double r25764 = exp(r25763);
        double r25765 = r25754 * r25764;
        return r25765;
}


double f_of(float __attribute__((unused)) K, float m, float n, float M, float l) {
        float r25766 = m;
        float r25767 = n;
        float r25768 = r25766 + r25767;
        float r25769 = 2;
        float r25770 = r25768 / r25769;
        float r25771 = M;
        float r25772 = r25770 - r25771;
        float r25773 = pow(r25772, r25769);
        float r25774 = -r25773;
        float r25775 = l;
        float r25776 = r25766 - r25767;
        float r25777 = fabs(r25776);
        float r25778 = r25775 - r25777;
        float r25779 = r25774 - r25778;
        float r25780 = exp(r25779);
        return r25780;
}

double f_od(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r25781 = m;
        double r25782 = n;
        double r25783 = r25781 + r25782;
        double r25784 = 2;
        double r25785 = r25783 / r25784;
        double r25786 = M;
        double r25787 = r25785 - r25786;
        double r25788 = pow(r25787, r25784);
        double r25789 = -r25788;
        double r25790 = l;
        double r25791 = r25781 - r25782;
        double r25792 = fabs(r25791);
        double r25793 = r25790 - r25792;
        double r25794 = r25789 - r25793;
        double r25795 = exp(r25794);
        return r25795;
}

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 r25796, r25797, r25798, r25799, r25800, r25801, r25802, r25803, r25804, r25805, r25806, r25807, r25808, r25809, r25810, r25811, r25812, r25813, r25814, r25815, r25816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1616);
        mpfr_init(r25796);
        mpfr_init(r25797);
        mpfr_init(r25798);
        mpfr_init(r25799);
        mpfr_init(r25800);
        mpfr_init_set_str(r25801, "2", 10, MPFR_RNDN);
        mpfr_init(r25802);
        mpfr_init(r25803);
        mpfr_init(r25804);
        mpfr_init(r25805);
        mpfr_init(r25806);
        mpfr_init(r25807);
        mpfr_init(r25808);
        mpfr_init(r25809);
        mpfr_init(r25810);
        mpfr_init(r25811);
        mpfr_init(r25812);
        mpfr_init(r25813);
        mpfr_init(r25814);
        mpfr_init(r25815);
        mpfr_init(r25816);
}

double f_im(double K, double m, double n, double M, double l) {
        mpfr_set_d(r25796, K, MPFR_RNDN);
        mpfr_set_d(r25797, m, MPFR_RNDN);
        mpfr_set_d(r25798, n, MPFR_RNDN);
        mpfr_add(r25799, r25797, r25798, MPFR_RNDN);
        mpfr_mul(r25800, r25796, r25799, MPFR_RNDN);
        ;
        mpfr_div(r25802, r25800, r25801, MPFR_RNDN);
        mpfr_set_d(r25803, M, MPFR_RNDN);
        mpfr_sub(r25804, r25802, r25803, MPFR_RNDN);
        mpfr_cos(r25805, r25804, MPFR_RNDN);
        mpfr_div(r25806, r25799, r25801, MPFR_RNDN);
        mpfr_sub(r25807, r25806, r25803, MPFR_RNDN);
        mpfr_pow(r25808, r25807, r25801, MPFR_RNDN);
        mpfr_neg(r25809, r25808, MPFR_RNDN);
        mpfr_set_d(r25810, l, MPFR_RNDN);
        mpfr_sub(r25811, r25797, r25798, MPFR_RNDN);
        mpfr_abs(r25812, r25811, MPFR_RNDN);
        mpfr_sub(r25813, r25810, r25812, MPFR_RNDN);
        mpfr_sub(r25814, r25809, r25813, MPFR_RNDN);
        mpfr_exp(r25815, r25814, MPFR_RNDN);
        mpfr_mul(r25816, r25805, r25815, MPFR_RNDN);
        return mpfr_get_d(r25816, MPFR_RNDN);
}

static mpfr_t r25817, r25818, r25819, r25820, r25821, r25822, r25823, r25824, r25825, r25826, r25827, r25828, r25829, r25830, r25831;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1616);
        mpfr_init(r25817);
        mpfr_init(r25818);
        mpfr_init(r25819);
        mpfr_init_set_str(r25820, "2", 10, MPFR_RNDN);
        mpfr_init(r25821);
        mpfr_init(r25822);
        mpfr_init(r25823);
        mpfr_init(r25824);
        mpfr_init(r25825);
        mpfr_init(r25826);
        mpfr_init(r25827);
        mpfr_init(r25828);
        mpfr_init(r25829);
        mpfr_init(r25830);
        mpfr_init(r25831);
}

double f_fm(double __attribute__((unused)) K, double m, double n, double M, double l) {
        mpfr_set_d(r25817, m, MPFR_RNDN);
        mpfr_set_d(r25818, n, MPFR_RNDN);
        mpfr_add(r25819, r25817, r25818, MPFR_RNDN);
        ;
        mpfr_div(r25821, r25819, r25820, MPFR_RNDN);
        mpfr_set_d(r25822, M, MPFR_RNDN);
        mpfr_sub(r25823, r25821, r25822, MPFR_RNDN);
        mpfr_pow(r25824, r25823, r25820, MPFR_RNDN);
        mpfr_neg(r25825, r25824, MPFR_RNDN);
        mpfr_set_d(r25826, l, MPFR_RNDN);
        mpfr_sub(r25827, r25817, r25818, MPFR_RNDN);
        mpfr_abs(r25828, r25827, MPFR_RNDN);
        mpfr_sub(r25829, r25826, r25828, MPFR_RNDN);
        mpfr_sub(r25830, r25825, r25829, MPFR_RNDN);
        mpfr_exp(r25831, r25830, MPFR_RNDN);
        return mpfr_get_d(r25831, MPFR_RNDN);
}

static mpfr_t r25832, r25833, r25834, r25835, r25836, r25837, r25838, r25839, r25840, r25841, r25842, r25843, r25844, r25845, r25846;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1616);
        mpfr_init(r25832);
        mpfr_init(r25833);
        mpfr_init(r25834);
        mpfr_init_set_str(r25835, "2", 10, MPFR_RNDN);
        mpfr_init(r25836);
        mpfr_init(r25837);
        mpfr_init(r25838);
        mpfr_init(r25839);
        mpfr_init(r25840);
        mpfr_init(r25841);
        mpfr_init(r25842);
        mpfr_init(r25843);
        mpfr_init(r25844);
        mpfr_init(r25845);
        mpfr_init(r25846);
}

double f_dm(double __attribute__((unused)) K, double m, double n, double M, double l) {
        mpfr_set_d(r25832, m, MPFR_RNDN);
        mpfr_set_d(r25833, n, MPFR_RNDN);
        mpfr_add(r25834, r25832, r25833, MPFR_RNDN);
        ;
        mpfr_div(r25836, r25834, r25835, MPFR_RNDN);
        mpfr_set_d(r25837, M, MPFR_RNDN);
        mpfr_sub(r25838, r25836, r25837, MPFR_RNDN);
        mpfr_pow(r25839, r25838, r25835, MPFR_RNDN);
        mpfr_neg(r25840, r25839, MPFR_RNDN);
        mpfr_set_d(r25841, l, MPFR_RNDN);
        mpfr_sub(r25842, r25832, r25833, MPFR_RNDN);
        mpfr_abs(r25843, r25842, MPFR_RNDN);
        mpfr_sub(r25844, r25841, r25843, MPFR_RNDN);
        mpfr_sub(r25845, r25840, r25844, MPFR_RNDN);
        mpfr_exp(r25846, r25845, MPFR_RNDN);
        return mpfr_get_d(r25846, MPFR_RNDN);
}

