#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 r9410 = -2.0f;
        float r9411 = J;
        float r9412 = r9410 * r9411;
        float r9413 = K;
        float r9414 = 2.0f;
        float r9415 = r9413 / r9414;
        float r9416 = cos(r9415);
        float r9417 = r9412 * r9416;
        float r9418 = 1.0f;
        float r9419 = U;
        float r9420 = r9414 * r9411;
        float r9421 = r9420 * r9416;
        float r9422 = r9419 / r9421;
        float r9423 = pow(r9422, r9414);
        float r9424 = r9418 + r9423;
        float r9425 = sqrt(r9424);
        float r9426 = r9417 * r9425;
        return r9426;
}

double f_id(double J, double K, double U) {
        double r9427 = -2.0;
        double r9428 = J;
        double r9429 = r9427 * r9428;
        double r9430 = K;
        double r9431 = 2.0;
        double r9432 = r9430 / r9431;
        double r9433 = cos(r9432);
        double r9434 = r9429 * r9433;
        double r9435 = 1.0;
        double r9436 = U;
        double r9437 = r9431 * r9428;
        double r9438 = r9437 * r9433;
        double r9439 = r9436 / r9438;
        double r9440 = pow(r9439, r9431);
        double r9441 = r9435 + r9440;
        double r9442 = sqrt(r9441);
        double r9443 = r9434 * r9442;
        return r9443;
}


double f_of(float J, float K, float U) {
        float r9444 = 1.0f;
        float r9445 = U;
        float r9446 = 2.0f;
        float r9447 = r9445 / r9446;
        float r9448 = J;
        float r9449 = r9447 / r9448;
        float r9450 = cbrt(r9449);
        float r9451 = K;
        float r9452 = r9451 / r9446;
        float r9453 = cos(r9452);
        float r9454 = r9450 / r9453;
        float r9455 = r9450 * r9450;
        float r9456 = r9454 * r9455;
        float r9457 = hypot(r9444, r9456);
        float r9458 = -2.0f;
        float r9459 = r9458 * r9448;
        float r9460 = r9453 * r9459;
        float r9461 = r9457 * r9460;
        float r9462 = -1.7801884027861585e+308f;
        bool r9463 = r9461 <= r9462;
        float r9464 = -r9445;
        float r9465 = 1.7824102095180647e+308f;
        bool r9466 = r9461 <= r9465;
        float r9467 = r9449 / r9453;
        float r9468 = hypot(r9444, r9467);
        float r9469 = sqrt(r9468);
        float r9470 = r9469 * r9460;
        float r9471 = r9469 * r9470;
        float r9472 = r9466 ? r9471 : r9464;
        float r9473 = r9463 ? r9464 : r9472;
        return r9473;
}

double f_od(double J, double K, double U) {
        double r9474 = 1.0;
        double r9475 = U;
        double r9476 = 2.0;
        double r9477 = r9475 / r9476;
        double r9478 = J;
        double r9479 = r9477 / r9478;
        double r9480 = cbrt(r9479);
        double r9481 = K;
        double r9482 = r9481 / r9476;
        double r9483 = cos(r9482);
        double r9484 = r9480 / r9483;
        double r9485 = r9480 * r9480;
        double r9486 = r9484 * r9485;
        double r9487 = hypot(r9474, r9486);
        double r9488 = -2.0;
        double r9489 = r9488 * r9478;
        double r9490 = r9483 * r9489;
        double r9491 = r9487 * r9490;
        double r9492 = -1.7801884027861585e+308;
        bool r9493 = r9491 <= r9492;
        double r9494 = -r9475;
        double r9495 = 1.7824102095180647e+308;
        bool r9496 = r9491 <= r9495;
        double r9497 = r9479 / r9483;
        double r9498 = hypot(r9474, r9497);
        double r9499 = sqrt(r9498);
        double r9500 = r9499 * r9490;
        double r9501 = r9499 * r9500;
        double r9502 = r9496 ? r9501 : r9494;
        double r9503 = r9493 ? r9494 : r9502;
        return r9503;
}

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 r9504, r9505, r9506, r9507, r9508, r9509, r9510, r9511, r9512, r9513, r9514, r9515, r9516, r9517, r9518, r9519, r9520;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9504, "-2", 10, MPFR_RNDN);
        mpfr_init(r9505);
        mpfr_init(r9506);
        mpfr_init(r9507);
        mpfr_init_set_str(r9508, "2", 10, MPFR_RNDN);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init_set_str(r9512, "1", 10, MPFR_RNDN);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init(r9517);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
}

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

static mpfr_t r9521, r9522, r9523, r9524, r9525, r9526, r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538, r9539, r9540, r9541, r9542, r9543, r9544, r9545, r9546, r9547, r9548, r9549, r9550;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9521, "1", 10, MPFR_RNDN);
        mpfr_init(r9522);
        mpfr_init_set_str(r9523, "2", 10, MPFR_RNDN);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
        mpfr_init(r9528);
        mpfr_init(r9529);
        mpfr_init(r9530);
        mpfr_init(r9531);
        mpfr_init(r9532);
        mpfr_init(r9533);
        mpfr_init(r9534);
        mpfr_init_set_str(r9535, "-2", 10, MPFR_RNDN);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
        mpfr_init_set_str(r9539, "-1.7801884027861585e+308", 10, MPFR_RNDN);
        mpfr_init(r9540);
        mpfr_init(r9541);
        mpfr_init_set_str(r9542, "1.7824102095180647e+308", 10, MPFR_RNDN);
        mpfr_init(r9543);
        mpfr_init(r9544);
        mpfr_init(r9545);
        mpfr_init(r9546);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r9522, U, MPFR_RNDN);
        ;
        mpfr_div(r9524, r9522, r9523, MPFR_RNDN);
        mpfr_set_d(r9525, J, MPFR_RNDN);
        mpfr_div(r9526, r9524, r9525, MPFR_RNDN);
        mpfr_cbrt(r9527, r9526, MPFR_RNDN);
        mpfr_set_d(r9528, K, MPFR_RNDN);
        mpfr_div(r9529, r9528, r9523, MPFR_RNDN);
        mpfr_cos(r9530, r9529, MPFR_RNDN);
        mpfr_div(r9531, r9527, r9530, MPFR_RNDN);
        mpfr_mul(r9532, r9527, r9527, MPFR_RNDN);
        mpfr_mul(r9533, r9531, r9532, MPFR_RNDN);
        mpfr_hypot(r9534, r9521, r9533, MPFR_RNDN);
        ;
        mpfr_mul(r9536, r9535, r9525, MPFR_RNDN);
        mpfr_mul(r9537, r9530, r9536, MPFR_RNDN);
        mpfr_mul(r9538, r9534, r9537, MPFR_RNDN);
        ;
        mpfr_set_si(r9540, mpfr_cmp(r9538, r9539) <= 0, MPFR_RNDN);
        mpfr_neg(r9541, r9522, MPFR_RNDN);
        ;
        mpfr_set_si(r9543, mpfr_cmp(r9538, r9542) <= 0, MPFR_RNDN);
        mpfr_div(r9544, r9526, r9530, MPFR_RNDN);
        mpfr_hypot(r9545, r9521, r9544, MPFR_RNDN);
        mpfr_sqrt(r9546, r9545, MPFR_RNDN);
        mpfr_mul(r9547, r9546, r9537, MPFR_RNDN);
        mpfr_mul(r9548, r9546, r9547, MPFR_RNDN);
        if (mpfr_get_si(r9543, MPFR_RNDN)) { mpfr_set(r9549, r9548, MPFR_RNDN); } else { mpfr_set(r9549, r9541, MPFR_RNDN); };
        if (mpfr_get_si(r9540, MPFR_RNDN)) { mpfr_set(r9550, r9541, MPFR_RNDN); } else { mpfr_set(r9550, r9549, MPFR_RNDN); };
        return mpfr_get_d(r9550, MPFR_RNDN);
}

static mpfr_t r9551, r9552, r9553, r9554, r9555, r9556, r9557, r9558, r9559, r9560, r9561, r9562, r9563, r9564, r9565, r9566, r9567, r9568, r9569, r9570, r9571, r9572, r9573, r9574, r9575, r9576, r9577, r9578, r9579, r9580;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9551, "1", 10, MPFR_RNDN);
        mpfr_init(r9552);
        mpfr_init_set_str(r9553, "2", 10, MPFR_RNDN);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init(r9556);
        mpfr_init(r9557);
        mpfr_init(r9558);
        mpfr_init(r9559);
        mpfr_init(r9560);
        mpfr_init(r9561);
        mpfr_init(r9562);
        mpfr_init(r9563);
        mpfr_init(r9564);
        mpfr_init_set_str(r9565, "-2", 10, MPFR_RNDN);
        mpfr_init(r9566);
        mpfr_init(r9567);
        mpfr_init(r9568);
        mpfr_init_set_str(r9569, "-1.7801884027861585e+308", 10, MPFR_RNDN);
        mpfr_init(r9570);
        mpfr_init(r9571);
        mpfr_init_set_str(r9572, "1.7824102095180647e+308", 10, MPFR_RNDN);
        mpfr_init(r9573);
        mpfr_init(r9574);
        mpfr_init(r9575);
        mpfr_init(r9576);
        mpfr_init(r9577);
        mpfr_init(r9578);
        mpfr_init(r9579);
        mpfr_init(r9580);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r9552, U, MPFR_RNDN);
        ;
        mpfr_div(r9554, r9552, r9553, MPFR_RNDN);
        mpfr_set_d(r9555, J, MPFR_RNDN);
        mpfr_div(r9556, r9554, r9555, MPFR_RNDN);
        mpfr_cbrt(r9557, r9556, MPFR_RNDN);
        mpfr_set_d(r9558, K, MPFR_RNDN);
        mpfr_div(r9559, r9558, r9553, MPFR_RNDN);
        mpfr_cos(r9560, r9559, MPFR_RNDN);
        mpfr_div(r9561, r9557, r9560, MPFR_RNDN);
        mpfr_mul(r9562, r9557, r9557, MPFR_RNDN);
        mpfr_mul(r9563, r9561, r9562, MPFR_RNDN);
        mpfr_hypot(r9564, r9551, r9563, MPFR_RNDN);
        ;
        mpfr_mul(r9566, r9565, r9555, MPFR_RNDN);
        mpfr_mul(r9567, r9560, r9566, MPFR_RNDN);
        mpfr_mul(r9568, r9564, r9567, MPFR_RNDN);
        ;
        mpfr_set_si(r9570, mpfr_cmp(r9568, r9569) <= 0, MPFR_RNDN);
        mpfr_neg(r9571, r9552, MPFR_RNDN);
        ;
        mpfr_set_si(r9573, mpfr_cmp(r9568, r9572) <= 0, MPFR_RNDN);
        mpfr_div(r9574, r9556, r9560, MPFR_RNDN);
        mpfr_hypot(r9575, r9551, r9574, MPFR_RNDN);
        mpfr_sqrt(r9576, r9575, MPFR_RNDN);
        mpfr_mul(r9577, r9576, r9567, MPFR_RNDN);
        mpfr_mul(r9578, r9576, r9577, MPFR_RNDN);
        if (mpfr_get_si(r9573, MPFR_RNDN)) { mpfr_set(r9579, r9578, MPFR_RNDN); } else { mpfr_set(r9579, r9571, MPFR_RNDN); };
        if (mpfr_get_si(r9570, MPFR_RNDN)) { mpfr_set(r9580, r9571, MPFR_RNDN); } else { mpfr_set(r9580, r9579, MPFR_RNDN); };
        return mpfr_get_d(r9580, MPFR_RNDN);
}

