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

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

double f_if(float K, float m, float n, float M, float l) {
        float r28510 = K;
        float r28511 = m;
        float r28512 = n;
        float r28513 = r28511 + r28512;
        float r28514 = r28510 * r28513;
        float r28515 = 2;
        float r28516 = r28514 / r28515;
        float r28517 = M;
        float r28518 = r28516 - r28517;
        float r28519 = cos(r28518);
        float r28520 = r28513 / r28515;
        float r28521 = r28520 - r28517;
        float r28522 = pow(r28521, r28515);
        float r28523 = -r28522;
        float r28524 = l;
        float r28525 = r28511 - r28512;
        float r28526 = fabs(r28525);
        float r28527 = r28524 - r28526;
        float r28528 = r28523 - r28527;
        float r28529 = exp(r28528);
        float r28530 = r28519 * r28529;
        return r28530;
}

double f_id(double K, double m, double n, double M, double l) {
        double r28531 = K;
        double r28532 = m;
        double r28533 = n;
        double r28534 = r28532 + r28533;
        double r28535 = r28531 * r28534;
        double r28536 = 2;
        double r28537 = r28535 / r28536;
        double r28538 = M;
        double r28539 = r28537 - r28538;
        double r28540 = cos(r28539);
        double r28541 = r28534 / r28536;
        double r28542 = r28541 - r28538;
        double r28543 = pow(r28542, r28536);
        double r28544 = -r28543;
        double r28545 = l;
        double r28546 = r28532 - r28533;
        double r28547 = fabs(r28546);
        double r28548 = r28545 - r28547;
        double r28549 = r28544 - r28548;
        double r28550 = exp(r28549);
        double r28551 = r28540 * r28550;
        return r28551;
}


double f_of(float K, float m, float n, float M, float l) {
        float r28552 = K;
        float r28553 = m;
        float r28554 = n;
        float r28555 = r28553 + r28554;
        float r28556 = r28552 * r28555;
        float r28557 = 2;
        float r28558 = r28556 / r28557;
        float r28559 = M;
        float r28560 = r28558 - r28559;
        float r28561 = -inf.0;
        bool r28562 = r28560 <= r28561;
        float r28563 = 1/2;
        float r28564 = r28563 / r28553;
        float r28565 = r28563 / r28554;
        float r28566 = r28564 + r28565;
        float r28567 = r28566 / r28552;
        float r28568 = 1;
        float r28569 = r28568 / r28559;
        float r28570 = r28567 - r28569;
        float r28571 = cos(r28570);
        float r28572 = l;
        float r28573 = r28553 - r28554;
        float r28574 = fabs(r28573);
        float r28575 = r28572 - r28574;
        float r28576 = r28554 + r28553;
        float r28577 = r28576 / r28557;
        float r28578 = r28577 - r28559;
        float r28579 = r28578 * r28578;
        float r28580 = r28575 + r28579;
        float r28581 = exp(r28580);
        float r28582 = r28571 / r28581;
        float r28583 = 3.750861873783077e+279;
        bool r28584 = r28560 <= r28583;
        float r28585 = cos(r28560);
        float r28586 = cbrt(r28585);
        float r28587 = r28586 * r28586;
        float r28588 = cbrt(r28586);
        float r28589 = r28588 * r28588;
        float r28590 = r28589 * r28588;
        float r28591 = r28587 * r28590;
        float r28592 = r28555 / r28557;
        float r28593 = r28592 - r28559;
        float r28594 = pow(r28593, r28557);
        float r28595 = -r28594;
        float r28596 = r28595 - r28575;
        float r28597 = exp(r28596);
        float r28598 = r28591 * r28597;
        float r28599 = r28584 ? r28598 : r28582;
        float r28600 = r28562 ? r28582 : r28599;
        return r28600;
}

double f_od(double K, double m, double n, double M, double l) {
        double r28601 = K;
        double r28602 = m;
        double r28603 = n;
        double r28604 = r28602 + r28603;
        double r28605 = r28601 * r28604;
        double r28606 = 2;
        double r28607 = r28605 / r28606;
        double r28608 = M;
        double r28609 = r28607 - r28608;
        double r28610 = -inf.0;
        bool r28611 = r28609 <= r28610;
        double r28612 = 1/2;
        double r28613 = r28612 / r28602;
        double r28614 = r28612 / r28603;
        double r28615 = r28613 + r28614;
        double r28616 = r28615 / r28601;
        double r28617 = 1;
        double r28618 = r28617 / r28608;
        double r28619 = r28616 - r28618;
        double r28620 = cos(r28619);
        double r28621 = l;
        double r28622 = r28602 - r28603;
        double r28623 = fabs(r28622);
        double r28624 = r28621 - r28623;
        double r28625 = r28603 + r28602;
        double r28626 = r28625 / r28606;
        double r28627 = r28626 - r28608;
        double r28628 = r28627 * r28627;
        double r28629 = r28624 + r28628;
        double r28630 = exp(r28629);
        double r28631 = r28620 / r28630;
        double r28632 = 3.750861873783077e+279;
        bool r28633 = r28609 <= r28632;
        double r28634 = cos(r28609);
        double r28635 = cbrt(r28634);
        double r28636 = r28635 * r28635;
        double r28637 = cbrt(r28635);
        double r28638 = r28637 * r28637;
        double r28639 = r28638 * r28637;
        double r28640 = r28636 * r28639;
        double r28641 = r28604 / r28606;
        double r28642 = r28641 - r28608;
        double r28643 = pow(r28642, r28606);
        double r28644 = -r28643;
        double r28645 = r28644 - r28624;
        double r28646 = exp(r28645);
        double r28647 = r28640 * r28646;
        double r28648 = r28633 ? r28647 : r28631;
        double r28649 = r28611 ? r28631 : r28648;
        return r28649;
}

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 r28650, r28651, r28652, r28653, r28654, r28655, r28656, r28657, r28658, r28659, r28660, r28661, r28662, r28663, r28664, r28665, r28666, r28667, r28668, r28669, r28670;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28650);
        mpfr_init(r28651);
        mpfr_init(r28652);
        mpfr_init(r28653);
        mpfr_init(r28654);
        mpfr_init_set_str(r28655, "2", 10, MPFR_RNDN);
        mpfr_init(r28656);
        mpfr_init(r28657);
        mpfr_init(r28658);
        mpfr_init(r28659);
        mpfr_init(r28660);
        mpfr_init(r28661);
        mpfr_init(r28662);
        mpfr_init(r28663);
        mpfr_init(r28664);
        mpfr_init(r28665);
        mpfr_init(r28666);
        mpfr_init(r28667);
        mpfr_init(r28668);
        mpfr_init(r28669);
        mpfr_init(r28670);
}

double f_im(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28650, K, MPFR_RNDN);
        mpfr_set_d(r28651, m, MPFR_RNDN);
        mpfr_set_d(r28652, n, MPFR_RNDN);
        mpfr_add(r28653, r28651, r28652, MPFR_RNDN);
        mpfr_mul(r28654, r28650, r28653, MPFR_RNDN);
        ;
        mpfr_div(r28656, r28654, r28655, MPFR_RNDN);
        mpfr_set_d(r28657, M, MPFR_RNDN);
        mpfr_sub(r28658, r28656, r28657, MPFR_RNDN);
        mpfr_cos(r28659, r28658, MPFR_RNDN);
        mpfr_div(r28660, r28653, r28655, MPFR_RNDN);
        mpfr_sub(r28661, r28660, r28657, MPFR_RNDN);
        mpfr_pow(r28662, r28661, r28655, MPFR_RNDN);
        mpfr_neg(r28663, r28662, MPFR_RNDN);
        mpfr_set_d(r28664, l, MPFR_RNDN);
        mpfr_sub(r28665, r28651, r28652, MPFR_RNDN);
        mpfr_abs(r28666, r28665, MPFR_RNDN);
        mpfr_sub(r28667, r28664, r28666, MPFR_RNDN);
        mpfr_sub(r28668, r28663, r28667, MPFR_RNDN);
        mpfr_exp(r28669, r28668, MPFR_RNDN);
        mpfr_mul(r28670, r28659, r28669, MPFR_RNDN);
        return mpfr_get_d(r28670, MPFR_RNDN);
}

static mpfr_t r28671, r28672, r28673, r28674, r28675, r28676, r28677, r28678, r28679, r28680, r28681, r28682, r28683, r28684, r28685, r28686, r28687, r28688, r28689, r28690, r28691, r28692, r28693, r28694, r28695, r28696, r28697, r28698, r28699, r28700, r28701, r28702, r28703, r28704, r28705, r28706, r28707, r28708, r28709, r28710, r28711, r28712, r28713, r28714, r28715, r28716, r28717, r28718, r28719;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28671);
        mpfr_init(r28672);
        mpfr_init(r28673);
        mpfr_init(r28674);
        mpfr_init(r28675);
        mpfr_init_set_str(r28676, "2", 10, MPFR_RNDN);
        mpfr_init(r28677);
        mpfr_init(r28678);
        mpfr_init(r28679);
        mpfr_init_set_str(r28680, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r28681);
        mpfr_init_set_str(r28682, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28683);
        mpfr_init(r28684);
        mpfr_init(r28685);
        mpfr_init(r28686);
        mpfr_init_set_str(r28687, "1", 10, MPFR_RNDN);
        mpfr_init(r28688);
        mpfr_init(r28689);
        mpfr_init(r28690);
        mpfr_init(r28691);
        mpfr_init(r28692);
        mpfr_init(r28693);
        mpfr_init(r28694);
        mpfr_init(r28695);
        mpfr_init(r28696);
        mpfr_init(r28697);
        mpfr_init(r28698);
        mpfr_init(r28699);
        mpfr_init(r28700);
        mpfr_init(r28701);
        mpfr_init_set_str(r28702, "3.750861873783077e+279", 10, MPFR_RNDN);
        mpfr_init(r28703);
        mpfr_init(r28704);
        mpfr_init(r28705);
        mpfr_init(r28706);
        mpfr_init(r28707);
        mpfr_init(r28708);
        mpfr_init(r28709);
        mpfr_init(r28710);
        mpfr_init(r28711);
        mpfr_init(r28712);
        mpfr_init(r28713);
        mpfr_init(r28714);
        mpfr_init(r28715);
        mpfr_init(r28716);
        mpfr_init(r28717);
        mpfr_init(r28718);
        mpfr_init(r28719);
}

double f_fm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28671, K, MPFR_RNDN);
        mpfr_set_d(r28672, m, MPFR_RNDN);
        mpfr_set_d(r28673, n, MPFR_RNDN);
        mpfr_add(r28674, r28672, r28673, MPFR_RNDN);
        mpfr_mul(r28675, r28671, r28674, MPFR_RNDN);
        ;
        mpfr_div(r28677, r28675, r28676, MPFR_RNDN);
        mpfr_set_d(r28678, M, MPFR_RNDN);
        mpfr_sub(r28679, r28677, r28678, MPFR_RNDN);
        ;
        mpfr_set_si(r28681, mpfr_cmp(r28679, r28680) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r28683, r28682, r28672, MPFR_RNDN);
        mpfr_div(r28684, r28682, r28673, MPFR_RNDN);
        mpfr_add(r28685, r28683, r28684, MPFR_RNDN);
        mpfr_div(r28686, r28685, r28671, MPFR_RNDN);
        ;
        mpfr_div(r28688, r28687, r28678, MPFR_RNDN);
        mpfr_sub(r28689, r28686, r28688, MPFR_RNDN);
        mpfr_cos(r28690, r28689, MPFR_RNDN);
        mpfr_set_d(r28691, l, MPFR_RNDN);
        mpfr_sub(r28692, r28672, r28673, MPFR_RNDN);
        mpfr_abs(r28693, r28692, MPFR_RNDN);
        mpfr_sub(r28694, r28691, r28693, MPFR_RNDN);
        mpfr_add(r28695, r28673, r28672, MPFR_RNDN);
        mpfr_div(r28696, r28695, r28676, MPFR_RNDN);
        mpfr_sub(r28697, r28696, r28678, MPFR_RNDN);
        mpfr_mul(r28698, r28697, r28697, MPFR_RNDN);
        mpfr_add(r28699, r28694, r28698, MPFR_RNDN);
        mpfr_exp(r28700, r28699, MPFR_RNDN);
        mpfr_div(r28701, r28690, r28700, MPFR_RNDN);
        ;
        mpfr_set_si(r28703, mpfr_cmp(r28679, r28702) <= 0, MPFR_RNDN);
        mpfr_cos(r28704, r28679, MPFR_RNDN);
        mpfr_cbrt(r28705, r28704, MPFR_RNDN);
        mpfr_mul(r28706, r28705, r28705, MPFR_RNDN);
        mpfr_cbrt(r28707, r28705, MPFR_RNDN);
        mpfr_mul(r28708, r28707, r28707, MPFR_RNDN);
        mpfr_mul(r28709, r28708, r28707, MPFR_RNDN);
        mpfr_mul(r28710, r28706, r28709, MPFR_RNDN);
        mpfr_div(r28711, r28674, r28676, MPFR_RNDN);
        mpfr_sub(r28712, r28711, r28678, MPFR_RNDN);
        mpfr_pow(r28713, r28712, r28676, MPFR_RNDN);
        mpfr_neg(r28714, r28713, MPFR_RNDN);
        mpfr_sub(r28715, r28714, r28694, MPFR_RNDN);
        mpfr_exp(r28716, r28715, MPFR_RNDN);
        mpfr_mul(r28717, r28710, r28716, MPFR_RNDN);
        if (mpfr_get_si(r28703, MPFR_RNDN)) { mpfr_set(r28718, r28717, MPFR_RNDN); } else { mpfr_set(r28718, r28701, MPFR_RNDN); };
        if (mpfr_get_si(r28681, MPFR_RNDN)) { mpfr_set(r28719, r28701, MPFR_RNDN); } else { mpfr_set(r28719, r28718, MPFR_RNDN); };
        return mpfr_get_d(r28719, MPFR_RNDN);
}

static mpfr_t r28720, r28721, r28722, r28723, r28724, r28725, r28726, r28727, r28728, r28729, r28730, r28731, r28732, r28733, r28734, r28735, r28736, r28737, r28738, r28739, r28740, r28741, r28742, r28743, r28744, r28745, r28746, r28747, r28748, r28749, r28750, r28751, r28752, r28753, r28754, r28755, r28756, r28757, r28758, r28759, r28760, r28761, r28762, r28763, r28764, r28765, r28766, r28767, r28768;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28720);
        mpfr_init(r28721);
        mpfr_init(r28722);
        mpfr_init(r28723);
        mpfr_init(r28724);
        mpfr_init_set_str(r28725, "2", 10, MPFR_RNDN);
        mpfr_init(r28726);
        mpfr_init(r28727);
        mpfr_init(r28728);
        mpfr_init_set_str(r28729, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r28730);
        mpfr_init_set_str(r28731, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28732);
        mpfr_init(r28733);
        mpfr_init(r28734);
        mpfr_init(r28735);
        mpfr_init_set_str(r28736, "1", 10, MPFR_RNDN);
        mpfr_init(r28737);
        mpfr_init(r28738);
        mpfr_init(r28739);
        mpfr_init(r28740);
        mpfr_init(r28741);
        mpfr_init(r28742);
        mpfr_init(r28743);
        mpfr_init(r28744);
        mpfr_init(r28745);
        mpfr_init(r28746);
        mpfr_init(r28747);
        mpfr_init(r28748);
        mpfr_init(r28749);
        mpfr_init(r28750);
        mpfr_init_set_str(r28751, "3.750861873783077e+279", 10, MPFR_RNDN);
        mpfr_init(r28752);
        mpfr_init(r28753);
        mpfr_init(r28754);
        mpfr_init(r28755);
        mpfr_init(r28756);
        mpfr_init(r28757);
        mpfr_init(r28758);
        mpfr_init(r28759);
        mpfr_init(r28760);
        mpfr_init(r28761);
        mpfr_init(r28762);
        mpfr_init(r28763);
        mpfr_init(r28764);
        mpfr_init(r28765);
        mpfr_init(r28766);
        mpfr_init(r28767);
        mpfr_init(r28768);
}

double f_dm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28720, K, MPFR_RNDN);
        mpfr_set_d(r28721, m, MPFR_RNDN);
        mpfr_set_d(r28722, n, MPFR_RNDN);
        mpfr_add(r28723, r28721, r28722, MPFR_RNDN);
        mpfr_mul(r28724, r28720, r28723, MPFR_RNDN);
        ;
        mpfr_div(r28726, r28724, r28725, MPFR_RNDN);
        mpfr_set_d(r28727, M, MPFR_RNDN);
        mpfr_sub(r28728, r28726, r28727, MPFR_RNDN);
        ;
        mpfr_set_si(r28730, mpfr_cmp(r28728, r28729) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r28732, r28731, r28721, MPFR_RNDN);
        mpfr_div(r28733, r28731, r28722, MPFR_RNDN);
        mpfr_add(r28734, r28732, r28733, MPFR_RNDN);
        mpfr_div(r28735, r28734, r28720, MPFR_RNDN);
        ;
        mpfr_div(r28737, r28736, r28727, MPFR_RNDN);
        mpfr_sub(r28738, r28735, r28737, MPFR_RNDN);
        mpfr_cos(r28739, r28738, MPFR_RNDN);
        mpfr_set_d(r28740, l, MPFR_RNDN);
        mpfr_sub(r28741, r28721, r28722, MPFR_RNDN);
        mpfr_abs(r28742, r28741, MPFR_RNDN);
        mpfr_sub(r28743, r28740, r28742, MPFR_RNDN);
        mpfr_add(r28744, r28722, r28721, MPFR_RNDN);
        mpfr_div(r28745, r28744, r28725, MPFR_RNDN);
        mpfr_sub(r28746, r28745, r28727, MPFR_RNDN);
        mpfr_mul(r28747, r28746, r28746, MPFR_RNDN);
        mpfr_add(r28748, r28743, r28747, MPFR_RNDN);
        mpfr_exp(r28749, r28748, MPFR_RNDN);
        mpfr_div(r28750, r28739, r28749, MPFR_RNDN);
        ;
        mpfr_set_si(r28752, mpfr_cmp(r28728, r28751) <= 0, MPFR_RNDN);
        mpfr_cos(r28753, r28728, MPFR_RNDN);
        mpfr_cbrt(r28754, r28753, MPFR_RNDN);
        mpfr_mul(r28755, r28754, r28754, MPFR_RNDN);
        mpfr_cbrt(r28756, r28754, MPFR_RNDN);
        mpfr_mul(r28757, r28756, r28756, MPFR_RNDN);
        mpfr_mul(r28758, r28757, r28756, MPFR_RNDN);
        mpfr_mul(r28759, r28755, r28758, MPFR_RNDN);
        mpfr_div(r28760, r28723, r28725, MPFR_RNDN);
        mpfr_sub(r28761, r28760, r28727, MPFR_RNDN);
        mpfr_pow(r28762, r28761, r28725, MPFR_RNDN);
        mpfr_neg(r28763, r28762, MPFR_RNDN);
        mpfr_sub(r28764, r28763, r28743, MPFR_RNDN);
        mpfr_exp(r28765, r28764, MPFR_RNDN);
        mpfr_mul(r28766, r28759, r28765, MPFR_RNDN);
        if (mpfr_get_si(r28752, MPFR_RNDN)) { mpfr_set(r28767, r28766, MPFR_RNDN); } else { mpfr_set(r28767, r28750, MPFR_RNDN); };
        if (mpfr_get_si(r28730, MPFR_RNDN)) { mpfr_set(r28768, r28750, MPFR_RNDN); } else { mpfr_set(r28768, r28767, MPFR_RNDN); };
        return mpfr_get_d(r28768, MPFR_RNDN);
}

