#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 r9205 = J;
        float r9206 = l;
        float r9207 = exp(r9206);
        float r9208 = -r9206;
        float r9209 = exp(r9208);
        float r9210 = r9207 - r9209;
        float r9211 = r9205 * r9210;
        float r9212 = K;
        float r9213 = 2.0f;
        float r9214 = r9212 / r9213;
        float r9215 = cos(r9214);
        float r9216 = r9211 * r9215;
        float r9217 = U;
        float r9218 = r9216 + r9217;
        return r9218;
}

double f_id(double J, double l, double K, double U) {
        double r9219 = J;
        double r9220 = l;
        double r9221 = exp(r9220);
        double r9222 = -r9220;
        double r9223 = exp(r9222);
        double r9224 = r9221 - r9223;
        double r9225 = r9219 * r9224;
        double r9226 = K;
        double r9227 = 2.0;
        double r9228 = r9226 / r9227;
        double r9229 = cos(r9228);
        double r9230 = r9225 * r9229;
        double r9231 = U;
        double r9232 = r9230 + r9231;
        return r9232;
}


double f_of(float J, float l, float K, float U) {
        float r9233 = J;
        float r9234 = 0.3333333333333333f;
        float r9235 = l;
        float r9236 = r9235 * r9235;
        float r9237 = 2.0f;
        float r9238 = fma(r9234, r9236, r9237);
        float r9239 = 5.0f;
        float r9240 = pow(r9235, r9239);
        float r9241 = 0.016666666666666666f;
        float r9242 = r9240 * r9241;
        float r9243 = fma(r9238, r9235, r9242);
        float r9244 = K;
        float r9245 = r9244 / r9237;
        float r9246 = cos(r9245);
        float r9247 = r9243 * r9246;
        float r9248 = r9233 * r9247;
        float r9249 = U;
        float r9250 = r9248 + r9249;
        return r9250;
}

double f_od(double J, double l, double K, double U) {
        double r9251 = J;
        double r9252 = 0.3333333333333333;
        double r9253 = l;
        double r9254 = r9253 * r9253;
        double r9255 = 2.0;
        double r9256 = fma(r9252, r9254, r9255);
        double r9257 = 5.0;
        double r9258 = pow(r9253, r9257);
        double r9259 = 0.016666666666666666;
        double r9260 = r9258 * r9259;
        double r9261 = fma(r9256, r9253, r9260);
        double r9262 = K;
        double r9263 = r9262 / r9255;
        double r9264 = cos(r9263);
        double r9265 = r9261 * r9264;
        double r9266 = r9251 * r9265;
        double r9267 = U;
        double r9268 = r9266 + r9267;
        return r9268;
}

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 r9269, r9270, r9271, r9272, r9273, r9274, r9275, r9276, r9277, r9278, r9279, r9280, r9281, r9282;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init(r9271);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init(r9274);
        mpfr_init(r9275);
        mpfr_init(r9276);
        mpfr_init_set_str(r9277, "2", 10, MPFR_RNDN);
        mpfr_init(r9278);
        mpfr_init(r9279);
        mpfr_init(r9280);
        mpfr_init(r9281);
        mpfr_init(r9282);
}

double f_im(double J, double l, double K, double U) {
        mpfr_set_d(r9269, J, MPFR_RNDN);
        mpfr_set_d(r9270, l, MPFR_RNDN);
        mpfr_exp(r9271, r9270, MPFR_RNDN);
        mpfr_neg(r9272, r9270, MPFR_RNDN);
        mpfr_exp(r9273, r9272, MPFR_RNDN);
        mpfr_sub(r9274, r9271, r9273, MPFR_RNDN);
        mpfr_mul(r9275, r9269, r9274, MPFR_RNDN);
        mpfr_set_d(r9276, K, MPFR_RNDN);
        ;
        mpfr_div(r9278, r9276, r9277, MPFR_RNDN);
        mpfr_cos(r9279, r9278, MPFR_RNDN);
        mpfr_mul(r9280, r9275, r9279, MPFR_RNDN);
        mpfr_set_d(r9281, U, MPFR_RNDN);
        mpfr_add(r9282, r9280, r9281, MPFR_RNDN);
        return mpfr_get_d(r9282, MPFR_RNDN);
}

static mpfr_t r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9283);
        mpfr_init_set_str(r9284, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init_set_str(r9287, "2", 10, MPFR_RNDN);
        mpfr_init(r9288);
        mpfr_init_set_str(r9289, "5", 10, MPFR_RNDN);
        mpfr_init(r9290);
        mpfr_init_set_str(r9291, "1/60", 10, MPFR_RNDN);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
}

double f_fm(double J, double l, double K, double U) {
        mpfr_set_d(r9283, J, MPFR_RNDN);
        ;
        mpfr_set_d(r9285, l, MPFR_RNDN);
        mpfr_mul(r9286, r9285, r9285, MPFR_RNDN);
        ;
        mpfr_fma(r9288, r9284, r9286, r9287, MPFR_RNDN);
        ;
        mpfr_pow(r9290, r9285, r9289, MPFR_RNDN);
        ;
        mpfr_mul(r9292, r9290, r9291, MPFR_RNDN);
        mpfr_fma(r9293, r9288, r9285, r9292, MPFR_RNDN);
        mpfr_set_d(r9294, K, MPFR_RNDN);
        mpfr_div(r9295, r9294, r9287, MPFR_RNDN);
        mpfr_cos(r9296, r9295, MPFR_RNDN);
        mpfr_mul(r9297, r9293, r9296, MPFR_RNDN);
        mpfr_mul(r9298, r9283, r9297, MPFR_RNDN);
        mpfr_set_d(r9299, U, MPFR_RNDN);
        mpfr_add(r9300, r9298, r9299, MPFR_RNDN);
        return mpfr_get_d(r9300, MPFR_RNDN);
}

static mpfr_t r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316, r9317, r9318;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9301);
        mpfr_init_set_str(r9302, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init_set_str(r9305, "2", 10, MPFR_RNDN);
        mpfr_init(r9306);
        mpfr_init_set_str(r9307, "5", 10, MPFR_RNDN);
        mpfr_init(r9308);
        mpfr_init_set_str(r9309, "1/60", 10, MPFR_RNDN);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init(r9315);
        mpfr_init(r9316);
        mpfr_init(r9317);
        mpfr_init(r9318);
}

double f_dm(double J, double l, double K, double U) {
        mpfr_set_d(r9301, J, MPFR_RNDN);
        ;
        mpfr_set_d(r9303, l, MPFR_RNDN);
        mpfr_mul(r9304, r9303, r9303, MPFR_RNDN);
        ;
        mpfr_fma(r9306, r9302, r9304, r9305, MPFR_RNDN);
        ;
        mpfr_pow(r9308, r9303, r9307, MPFR_RNDN);
        ;
        mpfr_mul(r9310, r9308, r9309, MPFR_RNDN);
        mpfr_fma(r9311, r9306, r9303, r9310, MPFR_RNDN);
        mpfr_set_d(r9312, K, MPFR_RNDN);
        mpfr_div(r9313, r9312, r9305, MPFR_RNDN);
        mpfr_cos(r9314, r9313, MPFR_RNDN);
        mpfr_mul(r9315, r9311, r9314, MPFR_RNDN);
        mpfr_mul(r9316, r9301, r9315, MPFR_RNDN);
        mpfr_set_d(r9317, U, MPFR_RNDN);
        mpfr_add(r9318, r9316, r9317, MPFR_RNDN);
        return mpfr_get_d(r9318, MPFR_RNDN);
}

