#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 r30463247 = K;
        float r30463248 = m;
        float r30463249 = n;
        float r30463250 = r30463248 + r30463249;
        float r30463251 = r30463247 * r30463250;
        float r30463252 = 2;
        float r30463253 = r30463251 / r30463252;
        float r30463254 = M;
        float r30463255 = r30463253 - r30463254;
        float r30463256 = cos(r30463255);
        float r30463257 = r30463250 / r30463252;
        float r30463258 = r30463257 - r30463254;
        float r30463259 = pow(r30463258, r30463252);
        float r30463260 = -r30463259;
        float r30463261 = l;
        float r30463262 = r30463248 - r30463249;
        float r30463263 = fabs(r30463262);
        float r30463264 = r30463261 - r30463263;
        float r30463265 = r30463260 - r30463264;
        float r30463266 = exp(r30463265);
        float r30463267 = r30463256 * r30463266;
        return r30463267;
}

double f_id(double K, double m, double n, double M, double l) {
        double r30463268 = K;
        double r30463269 = m;
        double r30463270 = n;
        double r30463271 = r30463269 + r30463270;
        double r30463272 = r30463268 * r30463271;
        double r30463273 = 2;
        double r30463274 = r30463272 / r30463273;
        double r30463275 = M;
        double r30463276 = r30463274 - r30463275;
        double r30463277 = cos(r30463276);
        double r30463278 = r30463271 / r30463273;
        double r30463279 = r30463278 - r30463275;
        double r30463280 = pow(r30463279, r30463273);
        double r30463281 = -r30463280;
        double r30463282 = l;
        double r30463283 = r30463269 - r30463270;
        double r30463284 = fabs(r30463283);
        double r30463285 = r30463282 - r30463284;
        double r30463286 = r30463281 - r30463285;
        double r30463287 = exp(r30463286);
        double r30463288 = r30463277 * r30463287;
        return r30463288;
}


double f_of(float __attribute__((unused)) K, float m, float n, float M, float l) {
        float r30463289 = 1;
        float r30463290 = m;
        float r30463291 = n;
        float r30463292 = r30463290 + r30463291;
        float r30463293 = 2;
        float r30463294 = r30463292 / r30463293;
        float r30463295 = M;
        float r30463296 = r30463294 - r30463295;
        float r30463297 = pow(r30463296, r30463293);
        float r30463298 = -r30463297;
        float r30463299 = l;
        float r30463300 = r30463290 - r30463291;
        float r30463301 = fabs(r30463300);
        float r30463302 = r30463299 - r30463301;
        float r30463303 = r30463298 - r30463302;
        float r30463304 = exp(r30463303);
        float r30463305 = r30463289 * r30463304;
        return r30463305;
}

double f_od(double __attribute__((unused)) K, double m, double n, double M, double l) {
        double r30463306 = 1;
        double r30463307 = m;
        double r30463308 = n;
        double r30463309 = r30463307 + r30463308;
        double r30463310 = 2;
        double r30463311 = r30463309 / r30463310;
        double r30463312 = M;
        double r30463313 = r30463311 - r30463312;
        double r30463314 = pow(r30463313, r30463310);
        double r30463315 = -r30463314;
        double r30463316 = l;
        double r30463317 = r30463307 - r30463308;
        double r30463318 = fabs(r30463317);
        double r30463319 = r30463316 - r30463318;
        double r30463320 = r30463315 - r30463319;
        double r30463321 = exp(r30463320);
        double r30463322 = r30463306 * r30463321;
        return r30463322;
}

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 r30463323, r30463324, r30463325, r30463326, r30463327, r30463328, r30463329, r30463330, r30463331, r30463332, r30463333, r30463334, r30463335, r30463336, r30463337, r30463338, r30463339, r30463340, r30463341, r30463342, r30463343;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1680);
        mpfr_init(r30463323);
        mpfr_init(r30463324);
        mpfr_init(r30463325);
        mpfr_init(r30463326);
        mpfr_init(r30463327);
        mpfr_init_set_str(r30463328, "2", 10, MPFR_RNDN);
        mpfr_init(r30463329);
        mpfr_init(r30463330);
        mpfr_init(r30463331);
        mpfr_init(r30463332);
        mpfr_init(r30463333);
        mpfr_init(r30463334);
        mpfr_init(r30463335);
        mpfr_init(r30463336);
        mpfr_init(r30463337);
        mpfr_init(r30463338);
        mpfr_init(r30463339);
        mpfr_init(r30463340);
        mpfr_init(r30463341);
        mpfr_init(r30463342);
        mpfr_init(r30463343);
}

double f_im(double K, double m, double n, double M, double l) {
        mpfr_set_d(r30463323, K, MPFR_RNDN);
        mpfr_set_d(r30463324, m, MPFR_RNDN);
        mpfr_set_d(r30463325, n, MPFR_RNDN);
        mpfr_add(r30463326, r30463324, r30463325, MPFR_RNDN);
        mpfr_mul(r30463327, r30463323, r30463326, MPFR_RNDN);
        ;
        mpfr_div(r30463329, r30463327, r30463328, MPFR_RNDN);
        mpfr_set_d(r30463330, M, MPFR_RNDN);
        mpfr_sub(r30463331, r30463329, r30463330, MPFR_RNDN);
        mpfr_cos(r30463332, r30463331, MPFR_RNDN);
        mpfr_div(r30463333, r30463326, r30463328, MPFR_RNDN);
        mpfr_sub(r30463334, r30463333, r30463330, MPFR_RNDN);
        mpfr_pow(r30463335, r30463334, r30463328, MPFR_RNDN);
        mpfr_neg(r30463336, r30463335, MPFR_RNDN);
        mpfr_set_d(r30463337, l, MPFR_RNDN);
        mpfr_sub(r30463338, r30463324, r30463325, MPFR_RNDN);
        mpfr_abs(r30463339, r30463338, MPFR_RNDN);
        mpfr_sub(r30463340, r30463337, r30463339, MPFR_RNDN);
        mpfr_sub(r30463341, r30463336, r30463340, MPFR_RNDN);
        mpfr_exp(r30463342, r30463341, MPFR_RNDN);
        mpfr_mul(r30463343, r30463332, r30463342, MPFR_RNDN);
        return mpfr_get_d(r30463343, MPFR_RNDN);
}

static mpfr_t r30463344, r30463345, r30463346, r30463347, r30463348, r30463349, r30463350, r30463351, r30463352, r30463353, r30463354, r30463355, r30463356, r30463357, r30463358, r30463359, r30463360;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1680);
        mpfr_init_set_str(r30463344, "1", 10, MPFR_RNDN);
        mpfr_init(r30463345);
        mpfr_init(r30463346);
        mpfr_init(r30463347);
        mpfr_init_set_str(r30463348, "2", 10, MPFR_RNDN);
        mpfr_init(r30463349);
        mpfr_init(r30463350);
        mpfr_init(r30463351);
        mpfr_init(r30463352);
        mpfr_init(r30463353);
        mpfr_init(r30463354);
        mpfr_init(r30463355);
        mpfr_init(r30463356);
        mpfr_init(r30463357);
        mpfr_init(r30463358);
        mpfr_init(r30463359);
        mpfr_init(r30463360);
}

double f_fm(double __attribute__((unused)) K, double m, double n, double M, double l) {
        ;
        mpfr_set_d(r30463345, m, MPFR_RNDN);
        mpfr_set_d(r30463346, n, MPFR_RNDN);
        mpfr_add(r30463347, r30463345, r30463346, MPFR_RNDN);
        ;
        mpfr_div(r30463349, r30463347, r30463348, MPFR_RNDN);
        mpfr_set_d(r30463350, M, MPFR_RNDN);
        mpfr_sub(r30463351, r30463349, r30463350, MPFR_RNDN);
        mpfr_pow(r30463352, r30463351, r30463348, MPFR_RNDN);
        mpfr_neg(r30463353, r30463352, MPFR_RNDN);
        mpfr_set_d(r30463354, l, MPFR_RNDN);
        mpfr_sub(r30463355, r30463345, r30463346, MPFR_RNDN);
        mpfr_abs(r30463356, r30463355, MPFR_RNDN);
        mpfr_sub(r30463357, r30463354, r30463356, MPFR_RNDN);
        mpfr_sub(r30463358, r30463353, r30463357, MPFR_RNDN);
        mpfr_exp(r30463359, r30463358, MPFR_RNDN);
        mpfr_mul(r30463360, r30463344, r30463359, MPFR_RNDN);
        return mpfr_get_d(r30463360, MPFR_RNDN);
}

static mpfr_t r30463361, r30463362, r30463363, r30463364, r30463365, r30463366, r30463367, r30463368, r30463369, r30463370, r30463371, r30463372, r30463373, r30463374, r30463375, r30463376, r30463377;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1680);
        mpfr_init_set_str(r30463361, "1", 10, MPFR_RNDN);
        mpfr_init(r30463362);
        mpfr_init(r30463363);
        mpfr_init(r30463364);
        mpfr_init_set_str(r30463365, "2", 10, MPFR_RNDN);
        mpfr_init(r30463366);
        mpfr_init(r30463367);
        mpfr_init(r30463368);
        mpfr_init(r30463369);
        mpfr_init(r30463370);
        mpfr_init(r30463371);
        mpfr_init(r30463372);
        mpfr_init(r30463373);
        mpfr_init(r30463374);
        mpfr_init(r30463375);
        mpfr_init(r30463376);
        mpfr_init(r30463377);
}

double f_dm(double __attribute__((unused)) K, double m, double n, double M, double l) {
        ;
        mpfr_set_d(r30463362, m, MPFR_RNDN);
        mpfr_set_d(r30463363, n, MPFR_RNDN);
        mpfr_add(r30463364, r30463362, r30463363, MPFR_RNDN);
        ;
        mpfr_div(r30463366, r30463364, r30463365, MPFR_RNDN);
        mpfr_set_d(r30463367, M, MPFR_RNDN);
        mpfr_sub(r30463368, r30463366, r30463367, MPFR_RNDN);
        mpfr_pow(r30463369, r30463368, r30463365, MPFR_RNDN);
        mpfr_neg(r30463370, r30463369, MPFR_RNDN);
        mpfr_set_d(r30463371, l, MPFR_RNDN);
        mpfr_sub(r30463372, r30463362, r30463363, MPFR_RNDN);
        mpfr_abs(r30463373, r30463372, MPFR_RNDN);
        mpfr_sub(r30463374, r30463371, r30463373, MPFR_RNDN);
        mpfr_sub(r30463375, r30463370, r30463374, MPFR_RNDN);
        mpfr_exp(r30463376, r30463375, MPFR_RNDN);
        mpfr_mul(r30463377, r30463361, r30463376, MPFR_RNDN);
        return mpfr_get_d(r30463377, MPFR_RNDN);
}

