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

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

double f_if(float J, float K, float U) {
        float r30463378 = -2;
        float r30463379 = J;
        float r30463380 = r30463378 * r30463379;
        float r30463381 = K;
        float r30463382 = 2;
        float r30463383 = r30463381 / r30463382;
        float r30463384 = cos(r30463383);
        float r30463385 = r30463380 * r30463384;
        float r30463386 = 1;
        float r30463387 = U;
        float r30463388 = r30463382 * r30463379;
        float r30463389 = r30463388 * r30463384;
        float r30463390 = r30463387 / r30463389;
        float r30463391 = pow(r30463390, r30463382);
        float r30463392 = r30463386 + r30463391;
        float r30463393 = sqrt(r30463392);
        float r30463394 = r30463385 * r30463393;
        return r30463394;
}

double f_id(double J, double K, double U) {
        double r30463395 = -2;
        double r30463396 = J;
        double r30463397 = r30463395 * r30463396;
        double r30463398 = K;
        double r30463399 = 2;
        double r30463400 = r30463398 / r30463399;
        double r30463401 = cos(r30463400);
        double r30463402 = r30463397 * r30463401;
        double r30463403 = 1;
        double r30463404 = U;
        double r30463405 = r30463399 * r30463396;
        double r30463406 = r30463405 * r30463401;
        double r30463407 = r30463404 / r30463406;
        double r30463408 = pow(r30463407, r30463399);
        double r30463409 = r30463403 + r30463408;
        double r30463410 = sqrt(r30463409);
        double r30463411 = r30463402 * r30463410;
        return r30463411;
}


double f_of(float J, float K, float U) {
        float r30463412 = -2;
        float r30463413 = J;
        float r30463414 = r30463412 * r30463413;
        float r30463415 = K;
        float r30463416 = 2;
        float r30463417 = r30463415 / r30463416;
        float r30463418 = cos(r30463417);
        float r30463419 = r30463414 * r30463418;
        float r30463420 = 1;
        float r30463421 = U;
        float r30463422 = r30463416 * r30463413;
        float r30463423 = r30463422 * r30463418;
        float r30463424 = r30463421 / r30463423;
        float r30463425 = pow(r30463424, r30463416);
        float r30463426 = r30463420 + r30463425;
        float r30463427 = sqrt(r30463426);
        float r30463428 = r30463419 * r30463427;
        return r30463428;
}

double f_od(double J, double K, double U) {
        double r30463429 = -2;
        double r30463430 = J;
        double r30463431 = r30463429 * r30463430;
        double r30463432 = K;
        double r30463433 = 2;
        double r30463434 = r30463432 / r30463433;
        double r30463435 = cos(r30463434);
        double r30463436 = r30463431 * r30463435;
        double r30463437 = 1;
        double r30463438 = U;
        double r30463439 = r30463433 * r30463430;
        double r30463440 = r30463439 * r30463435;
        double r30463441 = r30463438 / r30463440;
        double r30463442 = pow(r30463441, r30463433);
        double r30463443 = r30463437 + r30463442;
        double r30463444 = sqrt(r30463443);
        double r30463445 = r30463436 * r30463444;
        return r30463445;
}

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 r30463446, r30463447, r30463448, r30463449, r30463450, r30463451, r30463452, r30463453, r30463454, r30463455, r30463456, r30463457, r30463458, r30463459, r30463460, r30463461, r30463462;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30463446, "-2", 10, MPFR_RNDN);
        mpfr_init(r30463447);
        mpfr_init(r30463448);
        mpfr_init(r30463449);
        mpfr_init_set_str(r30463450, "2", 10, MPFR_RNDN);
        mpfr_init(r30463451);
        mpfr_init(r30463452);
        mpfr_init(r30463453);
        mpfr_init_set_str(r30463454, "1", 10, MPFR_RNDN);
        mpfr_init(r30463455);
        mpfr_init(r30463456);
        mpfr_init(r30463457);
        mpfr_init(r30463458);
        mpfr_init(r30463459);
        mpfr_init(r30463460);
        mpfr_init(r30463461);
        mpfr_init(r30463462);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r30463447, J, MPFR_RNDN);
        mpfr_mul(r30463448, r30463446, r30463447, MPFR_RNDN);
        mpfr_set_d(r30463449, K, MPFR_RNDN);
        ;
        mpfr_div(r30463451, r30463449, r30463450, MPFR_RNDN);
        mpfr_cos(r30463452, r30463451, MPFR_RNDN);
        mpfr_mul(r30463453, r30463448, r30463452, MPFR_RNDN);
        ;
        mpfr_set_d(r30463455, U, MPFR_RNDN);
        mpfr_mul(r30463456, r30463450, r30463447, MPFR_RNDN);
        mpfr_mul(r30463457, r30463456, r30463452, MPFR_RNDN);
        mpfr_div(r30463458, r30463455, r30463457, MPFR_RNDN);
        mpfr_pow(r30463459, r30463458, r30463450, MPFR_RNDN);
        mpfr_add(r30463460, r30463454, r30463459, MPFR_RNDN);
        mpfr_sqrt(r30463461, r30463460, MPFR_RNDN);
        mpfr_mul(r30463462, r30463453, r30463461, MPFR_RNDN);
        return mpfr_get_d(r30463462, MPFR_RNDN);
}

static mpfr_t r30463463, r30463464, r30463465, r30463466, r30463467, r30463468, r30463469, r30463470, r30463471, r30463472, r30463473, r30463474, r30463475, r30463476, r30463477, r30463478, r30463479;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30463463, "-2", 10, MPFR_RNDN);
        mpfr_init(r30463464);
        mpfr_init(r30463465);
        mpfr_init(r30463466);
        mpfr_init_set_str(r30463467, "2", 10, MPFR_RNDN);
        mpfr_init(r30463468);
        mpfr_init(r30463469);
        mpfr_init(r30463470);
        mpfr_init_set_str(r30463471, "1", 10, MPFR_RNDN);
        mpfr_init(r30463472);
        mpfr_init(r30463473);
        mpfr_init(r30463474);
        mpfr_init(r30463475);
        mpfr_init(r30463476);
        mpfr_init(r30463477);
        mpfr_init(r30463478);
        mpfr_init(r30463479);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r30463464, J, MPFR_RNDN);
        mpfr_mul(r30463465, r30463463, r30463464, MPFR_RNDN);
        mpfr_set_d(r30463466, K, MPFR_RNDN);
        ;
        mpfr_div(r30463468, r30463466, r30463467, MPFR_RNDN);
        mpfr_cos(r30463469, r30463468, MPFR_RNDN);
        mpfr_mul(r30463470, r30463465, r30463469, MPFR_RNDN);
        ;
        mpfr_set_d(r30463472, U, MPFR_RNDN);
        mpfr_mul(r30463473, r30463467, r30463464, MPFR_RNDN);
        mpfr_mul(r30463474, r30463473, r30463469, MPFR_RNDN);
        mpfr_div(r30463475, r30463472, r30463474, MPFR_RNDN);
        mpfr_pow(r30463476, r30463475, r30463467, MPFR_RNDN);
        mpfr_add(r30463477, r30463471, r30463476, MPFR_RNDN);
        mpfr_sqrt(r30463478, r30463477, MPFR_RNDN);
        mpfr_mul(r30463479, r30463470, r30463478, MPFR_RNDN);
        return mpfr_get_d(r30463479, MPFR_RNDN);
}

static mpfr_t r30463480, r30463481, r30463482, r30463483, r30463484, r30463485, r30463486, r30463487, r30463488, r30463489, r30463490, r30463491, r30463492, r30463493, r30463494, r30463495, r30463496;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30463480, "-2", 10, MPFR_RNDN);
        mpfr_init(r30463481);
        mpfr_init(r30463482);
        mpfr_init(r30463483);
        mpfr_init_set_str(r30463484, "2", 10, MPFR_RNDN);
        mpfr_init(r30463485);
        mpfr_init(r30463486);
        mpfr_init(r30463487);
        mpfr_init_set_str(r30463488, "1", 10, MPFR_RNDN);
        mpfr_init(r30463489);
        mpfr_init(r30463490);
        mpfr_init(r30463491);
        mpfr_init(r30463492);
        mpfr_init(r30463493);
        mpfr_init(r30463494);
        mpfr_init(r30463495);
        mpfr_init(r30463496);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r30463481, J, MPFR_RNDN);
        mpfr_mul(r30463482, r30463480, r30463481, MPFR_RNDN);
        mpfr_set_d(r30463483, K, MPFR_RNDN);
        ;
        mpfr_div(r30463485, r30463483, r30463484, MPFR_RNDN);
        mpfr_cos(r30463486, r30463485, MPFR_RNDN);
        mpfr_mul(r30463487, r30463482, r30463486, MPFR_RNDN);
        ;
        mpfr_set_d(r30463489, U, MPFR_RNDN);
        mpfr_mul(r30463490, r30463484, r30463481, MPFR_RNDN);
        mpfr_mul(r30463491, r30463490, r30463486, MPFR_RNDN);
        mpfr_div(r30463492, r30463489, r30463491, MPFR_RNDN);
        mpfr_pow(r30463493, r30463492, r30463484, MPFR_RNDN);
        mpfr_add(r30463494, r30463488, r30463493, MPFR_RNDN);
        mpfr_sqrt(r30463495, r30463494, MPFR_RNDN);
        mpfr_mul(r30463496, r30463487, r30463495, MPFR_RNDN);
        return mpfr_get_d(r30463496, MPFR_RNDN);
}

