#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 r28464 = J;
        float r28465 = l;
        float r28466 = exp(r28465);
        float r28467 = -r28465;
        float r28468 = exp(r28467);
        float r28469 = r28466 - r28468;
        float r28470 = r28464 * r28469;
        float r28471 = K;
        float r28472 = 2;
        float r28473 = r28471 / r28472;
        float r28474 = cos(r28473);
        float r28475 = r28470 * r28474;
        float r28476 = U;
        float r28477 = r28475 + r28476;
        return r28477;
}

double f_id(double J, double l, double K, double U) {
        double r28478 = J;
        double r28479 = l;
        double r28480 = exp(r28479);
        double r28481 = -r28479;
        double r28482 = exp(r28481);
        double r28483 = r28480 - r28482;
        double r28484 = r28478 * r28483;
        double r28485 = K;
        double r28486 = 2;
        double r28487 = r28485 / r28486;
        double r28488 = cos(r28487);
        double r28489 = r28484 * r28488;
        double r28490 = U;
        double r28491 = r28489 + r28490;
        return r28491;
}


double f_of(float J, float l, float K, float U) {
        float r28492 = J;
        float r28493 = 1/3;
        float r28494 = l;
        float r28495 = 3;
        float r28496 = pow(r28494, r28495);
        float r28497 = r28493 * r28496;
        float r28498 = 2;
        float r28499 = r28498 * r28494;
        float r28500 = 1/60;
        float r28501 = 5;
        float r28502 = pow(r28494, r28501);
        float r28503 = r28500 * r28502;
        float r28504 = r28499 + r28503;
        float r28505 = r28497 + r28504;
        float r28506 = r28492 * r28505;
        float r28507 = K;
        float r28508 = r28507 / r28498;
        float r28509 = cos(r28508);
        float r28510 = r28506 * r28509;
        float r28511 = U;
        float r28512 = r28510 + r28511;
        return r28512;
}

double f_od(double J, double l, double K, double U) {
        double r28513 = J;
        double r28514 = 1/3;
        double r28515 = l;
        double r28516 = 3;
        double r28517 = pow(r28515, r28516);
        double r28518 = r28514 * r28517;
        double r28519 = 2;
        double r28520 = r28519 * r28515;
        double r28521 = 1/60;
        double r28522 = 5;
        double r28523 = pow(r28515, r28522);
        double r28524 = r28521 * r28523;
        double r28525 = r28520 + r28524;
        double r28526 = r28518 + r28525;
        double r28527 = r28513 * r28526;
        double r28528 = K;
        double r28529 = r28528 / r28519;
        double r28530 = cos(r28529);
        double r28531 = r28527 * r28530;
        double r28532 = U;
        double r28533 = r28531 + r28532;
        return r28533;
}

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 r28534, r28535, r28536, r28537, r28538, r28539, r28540, r28541, r28542, r28543, r28544, r28545, r28546, r28547;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28534);
        mpfr_init(r28535);
        mpfr_init(r28536);
        mpfr_init(r28537);
        mpfr_init(r28538);
        mpfr_init(r28539);
        mpfr_init(r28540);
        mpfr_init(r28541);
        mpfr_init_set_str(r28542, "2", 10, MPFR_RNDN);
        mpfr_init(r28543);
        mpfr_init(r28544);
        mpfr_init(r28545);
        mpfr_init(r28546);
        mpfr_init(r28547);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r28534, J, MPFR_RNDN);
        mpfr_set_d(r28535, l, MPFR_RNDN);
        mpfr_exp(r28536, r28535, MPFR_RNDN);
        mpfr_neg(r28537, r28535, MPFR_RNDN);
        mpfr_exp(r28538, r28537, MPFR_RNDN);
        mpfr_sub(r28539, r28536, r28538, MPFR_RNDN);
        mpfr_mul(r28540, r28534, r28539, MPFR_RNDN);
        mpfr_set_d(r28541, K, MPFR_RNDN);
        ;
        mpfr_div(r28543, r28541, r28542, MPFR_RNDN);
        mpfr_cos(r28544, r28543, MPFR_RNDN);
        mpfr_mul(r28545, r28540, r28544, MPFR_RNDN);
        mpfr_set_d(r28546, U, MPFR_RNDN);
        mpfr_add(r28547, r28545, r28546, MPFR_RNDN);
        return mpfr_get_d(r28547, MPFR_RNDN);
}

static mpfr_t r28548, r28549, r28550, r28551, r28552, r28553, r28554, r28555, r28556, r28557, r28558, r28559, r28560, r28561, r28562, r28563, r28564, r28565, r28566, r28567, r28568;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28548);
        mpfr_init_set_str(r28549, "1/3", 10, MPFR_RNDN);
        mpfr_init(r28550);
        mpfr_init_set_str(r28551, "3", 10, MPFR_RNDN);
        mpfr_init(r28552);
        mpfr_init(r28553);
        mpfr_init_set_str(r28554, "2", 10, MPFR_RNDN);
        mpfr_init(r28555);
        mpfr_init_set_str(r28556, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r28557, "5", 10, MPFR_RNDN);
        mpfr_init(r28558);
        mpfr_init(r28559);
        mpfr_init(r28560);
        mpfr_init(r28561);
        mpfr_init(r28562);
        mpfr_init(r28563);
        mpfr_init(r28564);
        mpfr_init(r28565);
        mpfr_init(r28566);
        mpfr_init(r28567);
        mpfr_init(r28568);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r28548, J, MPFR_RNDN);
        ;
        mpfr_set_d(r28550, l, MPFR_RNDN);
        ;
        mpfr_pow(r28552, r28550, r28551, MPFR_RNDN);
        mpfr_mul(r28553, r28549, r28552, MPFR_RNDN);
        ;
        mpfr_mul(r28555, r28554, r28550, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28558, r28550, r28557, MPFR_RNDN);
        mpfr_mul(r28559, r28556, r28558, MPFR_RNDN);
        mpfr_add(r28560, r28555, r28559, MPFR_RNDN);
        mpfr_add(r28561, r28553, r28560, MPFR_RNDN);
        mpfr_mul(r28562, r28548, r28561, MPFR_RNDN);
        mpfr_set_d(r28563, K, MPFR_RNDN);
        mpfr_div(r28564, r28563, r28554, MPFR_RNDN);
        mpfr_cos(r28565, r28564, MPFR_RNDN);
        mpfr_mul(r28566, r28562, r28565, MPFR_RNDN);
        mpfr_set_d(r28567, U, MPFR_RNDN);
        mpfr_add(r28568, r28566, r28567, MPFR_RNDN);
        return mpfr_get_d(r28568, MPFR_RNDN);
}

static mpfr_t r28569, r28570, r28571, r28572, r28573, r28574, r28575, r28576, r28577, r28578, r28579, r28580, r28581, r28582, r28583, r28584, r28585, r28586, r28587, r28588, r28589;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28569);
        mpfr_init_set_str(r28570, "1/3", 10, MPFR_RNDN);
        mpfr_init(r28571);
        mpfr_init_set_str(r28572, "3", 10, MPFR_RNDN);
        mpfr_init(r28573);
        mpfr_init(r28574);
        mpfr_init_set_str(r28575, "2", 10, MPFR_RNDN);
        mpfr_init(r28576);
        mpfr_init_set_str(r28577, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r28578, "5", 10, MPFR_RNDN);
        mpfr_init(r28579);
        mpfr_init(r28580);
        mpfr_init(r28581);
        mpfr_init(r28582);
        mpfr_init(r28583);
        mpfr_init(r28584);
        mpfr_init(r28585);
        mpfr_init(r28586);
        mpfr_init(r28587);
        mpfr_init(r28588);
        mpfr_init(r28589);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r28569, J, MPFR_RNDN);
        ;
        mpfr_set_d(r28571, l, MPFR_RNDN);
        ;
        mpfr_pow(r28573, r28571, r28572, MPFR_RNDN);
        mpfr_mul(r28574, r28570, r28573, MPFR_RNDN);
        ;
        mpfr_mul(r28576, r28575, r28571, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r28579, r28571, r28578, MPFR_RNDN);
        mpfr_mul(r28580, r28577, r28579, MPFR_RNDN);
        mpfr_add(r28581, r28576, r28580, MPFR_RNDN);
        mpfr_add(r28582, r28574, r28581, MPFR_RNDN);
        mpfr_mul(r28583, r28569, r28582, MPFR_RNDN);
        mpfr_set_d(r28584, K, MPFR_RNDN);
        mpfr_div(r28585, r28584, r28575, MPFR_RNDN);
        mpfr_cos(r28586, r28585, MPFR_RNDN);
        mpfr_mul(r28587, r28583, r28586, MPFR_RNDN);
        mpfr_set_d(r28588, U, MPFR_RNDN);
        mpfr_add(r28589, r28587, r28588, MPFR_RNDN);
        return mpfr_get_d(r28589, MPFR_RNDN);
}

