#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 r28526 = K;
        float r28527 = m;
        float r28528 = n;
        float r28529 = r28527 + r28528;
        float r28530 = r28526 * r28529;
        float r28531 = 2;
        float r28532 = r28530 / r28531;
        float r28533 = M;
        float r28534 = r28532 - r28533;
        float r28535 = cos(r28534);
        float r28536 = r28529 / r28531;
        float r28537 = r28536 - r28533;
        float r28538 = pow(r28537, r28531);
        float r28539 = -r28538;
        float r28540 = l;
        float r28541 = r28527 - r28528;
        float r28542 = fabs(r28541);
        float r28543 = r28540 - r28542;
        float r28544 = r28539 - r28543;
        float r28545 = exp(r28544);
        float r28546 = r28535 * r28545;
        return r28546;
}

double f_id(double K, double m, double n, double M, double l) {
        double r28547 = K;
        double r28548 = m;
        double r28549 = n;
        double r28550 = r28548 + r28549;
        double r28551 = r28547 * r28550;
        double r28552 = 2;
        double r28553 = r28551 / r28552;
        double r28554 = M;
        double r28555 = r28553 - r28554;
        double r28556 = cos(r28555);
        double r28557 = r28550 / r28552;
        double r28558 = r28557 - r28554;
        double r28559 = pow(r28558, r28552);
        double r28560 = -r28559;
        double r28561 = l;
        double r28562 = r28548 - r28549;
        double r28563 = fabs(r28562);
        double r28564 = r28561 - r28563;
        double r28565 = r28560 - r28564;
        double r28566 = exp(r28565);
        double r28567 = r28556 * r28566;
        return r28567;
}


double f_of(float K, float m, float n, float M, float l) {
        float r28568 = K;
        float r28569 = m;
        float r28570 = n;
        float r28571 = r28569 + r28570;
        float r28572 = r28568 * r28571;
        float r28573 = 2;
        float r28574 = r28572 / r28573;
        float r28575 = M;
        float r28576 = r28574 - r28575;
        float r28577 = -inf.0;
        bool r28578 = r28576 <= r28577;
        float r28579 = 1/2;
        float r28580 = r28579 / r28569;
        float r28581 = r28579 / r28570;
        float r28582 = r28580 + r28581;
        float r28583 = r28582 / r28568;
        float r28584 = 1;
        float r28585 = r28584 / r28575;
        float r28586 = r28583 - r28585;
        float r28587 = cos(r28586);
        float r28588 = l;
        float r28589 = r28569 - r28570;
        float r28590 = fabs(r28589);
        float r28591 = r28588 - r28590;
        float r28592 = r28570 + r28569;
        float r28593 = r28592 / r28573;
        float r28594 = r28593 - r28575;
        float r28595 = r28594 * r28594;
        float r28596 = r28591 + r28595;
        float r28597 = exp(r28596);
        float r28598 = r28587 / r28597;
        float r28599 = 3.750861873783077e+279;
        bool r28600 = r28576 <= r28599;
        float r28601 = cos(r28576);
        float r28602 = cbrt(r28601);
        float r28603 = r28602 * r28602;
        float r28604 = cbrt(r28602);
        float r28605 = r28604 * r28604;
        float r28606 = r28605 * r28604;
        float r28607 = r28603 * r28606;
        float r28608 = r28571 / r28573;
        float r28609 = r28608 - r28575;
        float r28610 = pow(r28609, r28573);
        float r28611 = -r28610;
        float r28612 = r28611 - r28591;
        float r28613 = exp(r28612);
        float r28614 = r28607 * r28613;
        float r28615 = r28600 ? r28614 : r28598;
        float r28616 = r28578 ? r28598 : r28615;
        return r28616;
}

double f_od(double K, double m, double n, double M, double l) {
        double r28617 = K;
        double r28618 = m;
        double r28619 = n;
        double r28620 = r28618 + r28619;
        double r28621 = r28617 * r28620;
        double r28622 = 2;
        double r28623 = r28621 / r28622;
        double r28624 = M;
        double r28625 = r28623 - r28624;
        double r28626 = -inf.0;
        bool r28627 = r28625 <= r28626;
        double r28628 = 1/2;
        double r28629 = r28628 / r28618;
        double r28630 = r28628 / r28619;
        double r28631 = r28629 + r28630;
        double r28632 = r28631 / r28617;
        double r28633 = 1;
        double r28634 = r28633 / r28624;
        double r28635 = r28632 - r28634;
        double r28636 = cos(r28635);
        double r28637 = l;
        double r28638 = r28618 - r28619;
        double r28639 = fabs(r28638);
        double r28640 = r28637 - r28639;
        double r28641 = r28619 + r28618;
        double r28642 = r28641 / r28622;
        double r28643 = r28642 - r28624;
        double r28644 = r28643 * r28643;
        double r28645 = r28640 + r28644;
        double r28646 = exp(r28645);
        double r28647 = r28636 / r28646;
        double r28648 = 3.750861873783077e+279;
        bool r28649 = r28625 <= r28648;
        double r28650 = cos(r28625);
        double r28651 = cbrt(r28650);
        double r28652 = r28651 * r28651;
        double r28653 = cbrt(r28651);
        double r28654 = r28653 * r28653;
        double r28655 = r28654 * r28653;
        double r28656 = r28652 * r28655;
        double r28657 = r28620 / r28622;
        double r28658 = r28657 - r28624;
        double r28659 = pow(r28658, r28622);
        double r28660 = -r28659;
        double r28661 = r28660 - r28640;
        double r28662 = exp(r28661);
        double r28663 = r28656 * r28662;
        double r28664 = r28649 ? r28663 : r28647;
        double r28665 = r28627 ? r28647 : r28664;
        return r28665;
}

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 r28666, r28667, r28668, r28669, r28670, r28671, r28672, r28673, r28674, r28675, r28676, r28677, r28678, r28679, r28680, r28681, r28682, r28683, r28684, r28685, r28686;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28666);
        mpfr_init(r28667);
        mpfr_init(r28668);
        mpfr_init(r28669);
        mpfr_init(r28670);
        mpfr_init_set_str(r28671, "2", 10, MPFR_RNDN);
        mpfr_init(r28672);
        mpfr_init(r28673);
        mpfr_init(r28674);
        mpfr_init(r28675);
        mpfr_init(r28676);
        mpfr_init(r28677);
        mpfr_init(r28678);
        mpfr_init(r28679);
        mpfr_init(r28680);
        mpfr_init(r28681);
        mpfr_init(r28682);
        mpfr_init(r28683);
        mpfr_init(r28684);
        mpfr_init(r28685);
        mpfr_init(r28686);
}

double f_im(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28666, K, MPFR_RNDN);
        mpfr_set_d(r28667, m, MPFR_RNDN);
        mpfr_set_d(r28668, n, MPFR_RNDN);
        mpfr_add(r28669, r28667, r28668, MPFR_RNDN);
        mpfr_mul(r28670, r28666, r28669, MPFR_RNDN);
        ;
        mpfr_div(r28672, r28670, r28671, MPFR_RNDN);
        mpfr_set_d(r28673, M, MPFR_RNDN);
        mpfr_sub(r28674, r28672, r28673, MPFR_RNDN);
        mpfr_cos(r28675, r28674, MPFR_RNDN);
        mpfr_div(r28676, r28669, r28671, MPFR_RNDN);
        mpfr_sub(r28677, r28676, r28673, MPFR_RNDN);
        mpfr_pow(r28678, r28677, r28671, MPFR_RNDN);
        mpfr_neg(r28679, r28678, MPFR_RNDN);
        mpfr_set_d(r28680, l, MPFR_RNDN);
        mpfr_sub(r28681, r28667, r28668, MPFR_RNDN);
        mpfr_abs(r28682, r28681, MPFR_RNDN);
        mpfr_sub(r28683, r28680, r28682, MPFR_RNDN);
        mpfr_sub(r28684, r28679, r28683, MPFR_RNDN);
        mpfr_exp(r28685, r28684, MPFR_RNDN);
        mpfr_mul(r28686, r28675, r28685, MPFR_RNDN);
        return mpfr_get_d(r28686, MPFR_RNDN);
}

static mpfr_t 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, r28720, r28721, r28722, r28723, r28724, r28725, r28726, r28727, r28728, r28729, r28730, r28731, r28732, r28733, r28734, r28735;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28687);
        mpfr_init(r28688);
        mpfr_init(r28689);
        mpfr_init(r28690);
        mpfr_init(r28691);
        mpfr_init_set_str(r28692, "2", 10, MPFR_RNDN);
        mpfr_init(r28693);
        mpfr_init(r28694);
        mpfr_init(r28695);
        mpfr_init_set_str(r28696, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r28697);
        mpfr_init_set_str(r28698, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28699);
        mpfr_init(r28700);
        mpfr_init(r28701);
        mpfr_init(r28702);
        mpfr_init_set_str(r28703, "1", 10, MPFR_RNDN);
        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_set_str(r28718, "3.750861873783077e+279", 10, MPFR_RNDN);
        mpfr_init(r28719);
        mpfr_init(r28720);
        mpfr_init(r28721);
        mpfr_init(r28722);
        mpfr_init(r28723);
        mpfr_init(r28724);
        mpfr_init(r28725);
        mpfr_init(r28726);
        mpfr_init(r28727);
        mpfr_init(r28728);
        mpfr_init(r28729);
        mpfr_init(r28730);
        mpfr_init(r28731);
        mpfr_init(r28732);
        mpfr_init(r28733);
        mpfr_init(r28734);
        mpfr_init(r28735);
}

double f_fm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28687, K, MPFR_RNDN);
        mpfr_set_d(r28688, m, MPFR_RNDN);
        mpfr_set_d(r28689, n, MPFR_RNDN);
        mpfr_add(r28690, r28688, r28689, MPFR_RNDN);
        mpfr_mul(r28691, r28687, r28690, MPFR_RNDN);
        ;
        mpfr_div(r28693, r28691, r28692, MPFR_RNDN);
        mpfr_set_d(r28694, M, MPFR_RNDN);
        mpfr_sub(r28695, r28693, r28694, MPFR_RNDN);
        ;
        mpfr_set_si(r28697, mpfr_cmp(r28695, r28696) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r28699, r28698, r28688, MPFR_RNDN);
        mpfr_div(r28700, r28698, r28689, MPFR_RNDN);
        mpfr_add(r28701, r28699, r28700, MPFR_RNDN);
        mpfr_div(r28702, r28701, r28687, MPFR_RNDN);
        ;
        mpfr_div(r28704, r28703, r28694, MPFR_RNDN);
        mpfr_sub(r28705, r28702, r28704, MPFR_RNDN);
        mpfr_cos(r28706, r28705, MPFR_RNDN);
        mpfr_set_d(r28707, l, MPFR_RNDN);
        mpfr_sub(r28708, r28688, r28689, MPFR_RNDN);
        mpfr_abs(r28709, r28708, MPFR_RNDN);
        mpfr_sub(r28710, r28707, r28709, MPFR_RNDN);
        mpfr_add(r28711, r28689, r28688, MPFR_RNDN);
        mpfr_div(r28712, r28711, r28692, MPFR_RNDN);
        mpfr_sub(r28713, r28712, r28694, MPFR_RNDN);
        mpfr_mul(r28714, r28713, r28713, MPFR_RNDN);
        mpfr_add(r28715, r28710, r28714, MPFR_RNDN);
        mpfr_exp(r28716, r28715, MPFR_RNDN);
        mpfr_div(r28717, r28706, r28716, MPFR_RNDN);
        ;
        mpfr_set_si(r28719, mpfr_cmp(r28695, r28718) <= 0, MPFR_RNDN);
        mpfr_cos(r28720, r28695, MPFR_RNDN);
        mpfr_cbrt(r28721, r28720, MPFR_RNDN);
        mpfr_mul(r28722, r28721, r28721, MPFR_RNDN);
        mpfr_cbrt(r28723, r28721, MPFR_RNDN);
        mpfr_mul(r28724, r28723, r28723, MPFR_RNDN);
        mpfr_mul(r28725, r28724, r28723, MPFR_RNDN);
        mpfr_mul(r28726, r28722, r28725, MPFR_RNDN);
        mpfr_div(r28727, r28690, r28692, MPFR_RNDN);
        mpfr_sub(r28728, r28727, r28694, MPFR_RNDN);
        mpfr_pow(r28729, r28728, r28692, MPFR_RNDN);
        mpfr_neg(r28730, r28729, MPFR_RNDN);
        mpfr_sub(r28731, r28730, r28710, MPFR_RNDN);
        mpfr_exp(r28732, r28731, MPFR_RNDN);
        mpfr_mul(r28733, r28726, r28732, MPFR_RNDN);
        if (mpfr_get_si(r28719, MPFR_RNDN)) { mpfr_set(r28734, r28733, MPFR_RNDN); } else { mpfr_set(r28734, r28717, MPFR_RNDN); };
        if (mpfr_get_si(r28697, MPFR_RNDN)) { mpfr_set(r28735, r28717, MPFR_RNDN); } else { mpfr_set(r28735, r28734, MPFR_RNDN); };
        return mpfr_get_d(r28735, MPFR_RNDN);
}

static mpfr_t 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, r28769, r28770, r28771, r28772, r28773, r28774, r28775, r28776, r28777, r28778, r28779, r28780, r28781, r28782, r28783, r28784;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28736);
        mpfr_init(r28737);
        mpfr_init(r28738);
        mpfr_init(r28739);
        mpfr_init(r28740);
        mpfr_init_set_str(r28741, "2", 10, MPFR_RNDN);
        mpfr_init(r28742);
        mpfr_init(r28743);
        mpfr_init(r28744);
        mpfr_init_set_str(r28745, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r28746);
        mpfr_init_set_str(r28747, "1/2", 10, MPFR_RNDN);
        mpfr_init(r28748);
        mpfr_init(r28749);
        mpfr_init(r28750);
        mpfr_init(r28751);
        mpfr_init_set_str(r28752, "1", 10, MPFR_RNDN);
        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_set_str(r28767, "3.750861873783077e+279", 10, MPFR_RNDN);
        mpfr_init(r28768);
        mpfr_init(r28769);
        mpfr_init(r28770);
        mpfr_init(r28771);
        mpfr_init(r28772);
        mpfr_init(r28773);
        mpfr_init(r28774);
        mpfr_init(r28775);
        mpfr_init(r28776);
        mpfr_init(r28777);
        mpfr_init(r28778);
        mpfr_init(r28779);
        mpfr_init(r28780);
        mpfr_init(r28781);
        mpfr_init(r28782);
        mpfr_init(r28783);
        mpfr_init(r28784);
}

double f_dm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28736, K, MPFR_RNDN);
        mpfr_set_d(r28737, m, MPFR_RNDN);
        mpfr_set_d(r28738, n, MPFR_RNDN);
        mpfr_add(r28739, r28737, r28738, MPFR_RNDN);
        mpfr_mul(r28740, r28736, r28739, MPFR_RNDN);
        ;
        mpfr_div(r28742, r28740, r28741, MPFR_RNDN);
        mpfr_set_d(r28743, M, MPFR_RNDN);
        mpfr_sub(r28744, r28742, r28743, MPFR_RNDN);
        ;
        mpfr_set_si(r28746, mpfr_cmp(r28744, r28745) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r28748, r28747, r28737, MPFR_RNDN);
        mpfr_div(r28749, r28747, r28738, MPFR_RNDN);
        mpfr_add(r28750, r28748, r28749, MPFR_RNDN);
        mpfr_div(r28751, r28750, r28736, MPFR_RNDN);
        ;
        mpfr_div(r28753, r28752, r28743, MPFR_RNDN);
        mpfr_sub(r28754, r28751, r28753, MPFR_RNDN);
        mpfr_cos(r28755, r28754, MPFR_RNDN);
        mpfr_set_d(r28756, l, MPFR_RNDN);
        mpfr_sub(r28757, r28737, r28738, MPFR_RNDN);
        mpfr_abs(r28758, r28757, MPFR_RNDN);
        mpfr_sub(r28759, r28756, r28758, MPFR_RNDN);
        mpfr_add(r28760, r28738, r28737, MPFR_RNDN);
        mpfr_div(r28761, r28760, r28741, MPFR_RNDN);
        mpfr_sub(r28762, r28761, r28743, MPFR_RNDN);
        mpfr_mul(r28763, r28762, r28762, MPFR_RNDN);
        mpfr_add(r28764, r28759, r28763, MPFR_RNDN);
        mpfr_exp(r28765, r28764, MPFR_RNDN);
        mpfr_div(r28766, r28755, r28765, MPFR_RNDN);
        ;
        mpfr_set_si(r28768, mpfr_cmp(r28744, r28767) <= 0, MPFR_RNDN);
        mpfr_cos(r28769, r28744, MPFR_RNDN);
        mpfr_cbrt(r28770, r28769, MPFR_RNDN);
        mpfr_mul(r28771, r28770, r28770, MPFR_RNDN);
        mpfr_cbrt(r28772, r28770, MPFR_RNDN);
        mpfr_mul(r28773, r28772, r28772, MPFR_RNDN);
        mpfr_mul(r28774, r28773, r28772, MPFR_RNDN);
        mpfr_mul(r28775, r28771, r28774, MPFR_RNDN);
        mpfr_div(r28776, r28739, r28741, MPFR_RNDN);
        mpfr_sub(r28777, r28776, r28743, MPFR_RNDN);
        mpfr_pow(r28778, r28777, r28741, MPFR_RNDN);
        mpfr_neg(r28779, r28778, MPFR_RNDN);
        mpfr_sub(r28780, r28779, r28759, MPFR_RNDN);
        mpfr_exp(r28781, r28780, MPFR_RNDN);
        mpfr_mul(r28782, r28775, r28781, MPFR_RNDN);
        if (mpfr_get_si(r28768, MPFR_RNDN)) { mpfr_set(r28783, r28782, MPFR_RNDN); } else { mpfr_set(r28783, r28766, MPFR_RNDN); };
        if (mpfr_get_si(r28746, MPFR_RNDN)) { mpfr_set(r28784, r28766, MPFR_RNDN); } else { mpfr_set(r28784, r28783, MPFR_RNDN); };
        return mpfr_get_d(r28784, MPFR_RNDN);
}

