#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 r9429 = J;
        float r9430 = l;
        float r9431 = exp(r9430);
        float r9432 = -r9430;
        float r9433 = exp(r9432);
        float r9434 = r9431 - r9433;
        float r9435 = r9429 * r9434;
        float r9436 = K;
        float r9437 = 2;
        float r9438 = r9436 / r9437;
        float r9439 = cos(r9438);
        float r9440 = r9435 * r9439;
        float r9441 = U;
        float r9442 = r9440 + r9441;
        return r9442;
}

double f_id(double J, double l, double K, double U) {
        double r9443 = J;
        double r9444 = l;
        double r9445 = exp(r9444);
        double r9446 = -r9444;
        double r9447 = exp(r9446);
        double r9448 = r9445 - r9447;
        double r9449 = r9443 * r9448;
        double r9450 = K;
        double r9451 = 2;
        double r9452 = r9450 / r9451;
        double r9453 = cos(r9452);
        double r9454 = r9449 * r9453;
        double r9455 = U;
        double r9456 = r9454 + r9455;
        return r9456;
}


double f_of(float J, float l, float K, float U) {
        float r9457 = J;
        float r9458 = K;
        float r9459 = 2;
        float r9460 = r9458 / r9459;
        float r9461 = cos(r9460);
        float r9462 = r9457 * r9461;
        float r9463 = l;
        float r9464 = r9463 * r9463;
        float r9465 = 1/3;
        float r9466 = fma(r9464, r9465, r9459);
        float r9467 = 1/60;
        float r9468 = 5;
        float r9469 = pow(r9463, r9468);
        float r9470 = r9467 * r9469;
        float r9471 = fma(r9463, r9466, r9470);
        float r9472 = U;
        float r9473 = fma(r9462, r9471, r9472);
        return r9473;
}

double f_od(double J, double l, double K, double U) {
        double r9474 = J;
        double r9475 = K;
        double r9476 = 2;
        double r9477 = r9475 / r9476;
        double r9478 = cos(r9477);
        double r9479 = r9474 * r9478;
        double r9480 = l;
        double r9481 = r9480 * r9480;
        double r9482 = 1/3;
        double r9483 = fma(r9481, r9482, r9476);
        double r9484 = 1/60;
        double r9485 = 5;
        double r9486 = pow(r9480, r9485);
        double r9487 = r9484 * r9486;
        double r9488 = fma(r9480, r9483, r9487);
        double r9489 = U;
        double r9490 = fma(r9479, r9488, r9489);
        return r9490;
}

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 r9491, r9492, r9493, r9494, r9495, r9496, r9497, r9498, r9499, r9500, r9501, r9502, r9503, r9504;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9491);
        mpfr_init(r9492);
        mpfr_init(r9493);
        mpfr_init(r9494);
        mpfr_init(r9495);
        mpfr_init(r9496);
        mpfr_init(r9497);
        mpfr_init(r9498);
        mpfr_init_set_str(r9499, "2", 10, MPFR_RNDN);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r9491, J, MPFR_RNDN);
        mpfr_set_d(r9492, l, MPFR_RNDN);
        mpfr_exp(r9493, r9492, MPFR_RNDN);
        mpfr_neg(r9494, r9492, MPFR_RNDN);
        mpfr_exp(r9495, r9494, MPFR_RNDN);
        mpfr_sub(r9496, r9493, r9495, MPFR_RNDN);
        mpfr_mul(r9497, r9491, r9496, MPFR_RNDN);
        mpfr_set_d(r9498, K, MPFR_RNDN);
        ;
        mpfr_div(r9500, r9498, r9499, MPFR_RNDN);
        mpfr_cos(r9501, r9500, MPFR_RNDN);
        mpfr_mul(r9502, r9497, r9501, MPFR_RNDN);
        mpfr_set_d(r9503, U, MPFR_RNDN);
        mpfr_add(r9504, r9502, r9503, MPFR_RNDN);
        return mpfr_get_d(r9504, MPFR_RNDN);
}

static mpfr_t r9505, r9506, r9507, r9508, r9509, r9510, r9511, r9512, r9513, r9514, r9515, r9516, r9517, r9518, r9519, r9520, r9521;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9505);
        mpfr_init(r9506);
        mpfr_init_set_str(r9507, "2", 10, MPFR_RNDN);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init(r9512);
        mpfr_init_set_str(r9513, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9514);
        mpfr_init_set_str(r9515, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r9516, "5", 10, MPFR_RNDN);
        mpfr_init(r9517);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r9505, J, MPFR_RNDN);
        mpfr_set_d(r9506, K, MPFR_RNDN);
        ;
        mpfr_div(r9508, r9506, r9507, MPFR_RNDN);
        mpfr_cos(r9509, r9508, MPFR_RNDN);
        mpfr_mul(r9510, r9505, r9509, MPFR_RNDN);
        mpfr_set_d(r9511, l, MPFR_RNDN);
        mpfr_mul(r9512, r9511, r9511, MPFR_RNDN);
        ;
        mpfr_fma(r9514, r9512, r9513, r9507, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9517, r9511, r9516, MPFR_RNDN);
        mpfr_mul(r9518, r9515, r9517, MPFR_RNDN);
        mpfr_fma(r9519, r9511, r9514, r9518, MPFR_RNDN);
        mpfr_set_d(r9520, U, MPFR_RNDN);
        mpfr_fma(r9521, r9510, r9519, r9520, MPFR_RNDN);
        return mpfr_get_d(r9521, MPFR_RNDN);
}

static mpfr_t r9522, r9523, r9524, r9525, r9526, r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9522);
        mpfr_init(r9523);
        mpfr_init_set_str(r9524, "2", 10, MPFR_RNDN);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
        mpfr_init(r9528);
        mpfr_init(r9529);
        mpfr_init_set_str(r9530, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9531);
        mpfr_init_set_str(r9532, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r9533, "5", 10, MPFR_RNDN);
        mpfr_init(r9534);
        mpfr_init(r9535);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r9522, J, MPFR_RNDN);
        mpfr_set_d(r9523, K, MPFR_RNDN);
        ;
        mpfr_div(r9525, r9523, r9524, MPFR_RNDN);
        mpfr_cos(r9526, r9525, MPFR_RNDN);
        mpfr_mul(r9527, r9522, r9526, MPFR_RNDN);
        mpfr_set_d(r9528, l, MPFR_RNDN);
        mpfr_mul(r9529, r9528, r9528, MPFR_RNDN);
        ;
        mpfr_fma(r9531, r9529, r9530, r9524, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9534, r9528, r9533, MPFR_RNDN);
        mpfr_mul(r9535, r9532, r9534, MPFR_RNDN);
        mpfr_fma(r9536, r9528, r9531, r9535, MPFR_RNDN);
        mpfr_set_d(r9537, U, MPFR_RNDN);
        mpfr_fma(r9538, r9527, r9536, r9537, MPFR_RNDN);
        return mpfr_get_d(r9538, MPFR_RNDN);
}

