#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 r28590 = K;
        float r28591 = m;
        float r28592 = n;
        float r28593 = r28591 + r28592;
        float r28594 = r28590 * r28593;
        float r28595 = 2;
        float r28596 = r28594 / r28595;
        float r28597 = M;
        float r28598 = r28596 - r28597;
        float r28599 = cos(r28598);
        float r28600 = r28593 / r28595;
        float r28601 = r28600 - r28597;
        float r28602 = pow(r28601, r28595);
        float r28603 = -r28602;
        float r28604 = l;
        float r28605 = r28591 - r28592;
        float r28606 = fabs(r28605);
        float r28607 = r28604 - r28606;
        float r28608 = r28603 - r28607;
        float r28609 = exp(r28608);
        float r28610 = r28599 * r28609;
        return r28610;
}

double f_id(double K, double m, double n, double M, double l) {
        double r28611 = K;
        double r28612 = m;
        double r28613 = n;
        double r28614 = r28612 + r28613;
        double r28615 = r28611 * r28614;
        double r28616 = 2;
        double r28617 = r28615 / r28616;
        double r28618 = M;
        double r28619 = r28617 - r28618;
        double r28620 = cos(r28619);
        double r28621 = r28614 / r28616;
        double r28622 = r28621 - r28618;
        double r28623 = pow(r28622, r28616);
        double r28624 = -r28623;
        double r28625 = l;
        double r28626 = r28612 - r28613;
        double r28627 = fabs(r28626);
        double r28628 = r28625 - r28627;
        double r28629 = r28624 - r28628;
        double r28630 = exp(r28629);
        double r28631 = r28620 * r28630;
        return r28631;
}


double f_of(float K, float m, float n, float M, float l) {
        float r28632 = K;
        float r28633 = m;
        float r28634 = n;
        float r28635 = r28633 + r28634;
        float r28636 = r28632 * r28635;
        float r28637 = 2;
        float r28638 = r28636 / r28637;
        float r28639 = M;
        float r28640 = r28638 - r28639;
        float r28641 = -3.653191116193967e+305;
        bool r28642 = r28640 <= r28641;
        float r28643 = 1/2;
        float r28644 = 1;
        float r28645 = r28633 * r28632;
        float r28646 = r28644 / r28645;
        float r28647 = r28643 * r28646;
        float r28648 = r28634 * r28632;
        float r28649 = r28644 / r28648;
        float r28650 = r28643 * r28649;
        float r28651 = r28647 + r28650;
        float r28652 = r28644 / r28639;
        float r28653 = r28651 - r28652;
        float r28654 = cos(r28653);
        float r28655 = exp(1.0);
        float r28656 = r28635 / r28637;
        float r28657 = r28656 - r28639;
        float r28658 = pow(r28657, r28637);
        float r28659 = -r28658;
        float r28660 = l;
        float r28661 = r28633 - r28634;
        float r28662 = fabs(r28661);
        float r28663 = r28660 - r28662;
        float r28664 = r28659 - r28663;
        float r28665 = pow(r28655, r28664);
        float r28666 = r28654 * r28665;
        float r28667 = 4.0009193320351597e+279;
        bool r28668 = r28640 <= r28667;
        float r28669 = cos(r28640);
        float r28670 = cbrt(r28669);
        float r28671 = r28670 * r28670;
        float r28672 = cbrt(r28670);
        float r28673 = r28672 * r28672;
        float r28674 = r28673 * r28672;
        float r28675 = r28671 * r28674;
        float r28676 = exp(r28664);
        float r28677 = r28675 * r28676;
        float r28678 = r28668 ? r28677 : r28666;
        float r28679 = r28642 ? r28666 : r28678;
        return r28679;
}

double f_od(double K, double m, double n, double M, double l) {
        double r28680 = K;
        double r28681 = m;
        double r28682 = n;
        double r28683 = r28681 + r28682;
        double r28684 = r28680 * r28683;
        double r28685 = 2;
        double r28686 = r28684 / r28685;
        double r28687 = M;
        double r28688 = r28686 - r28687;
        double r28689 = -3.653191116193967e+305;
        bool r28690 = r28688 <= r28689;
        double r28691 = 1/2;
        double r28692 = 1;
        double r28693 = r28681 * r28680;
        double r28694 = r28692 / r28693;
        double r28695 = r28691 * r28694;
        double r28696 = r28682 * r28680;
        double r28697 = r28692 / r28696;
        double r28698 = r28691 * r28697;
        double r28699 = r28695 + r28698;
        double r28700 = r28692 / r28687;
        double r28701 = r28699 - r28700;
        double r28702 = cos(r28701);
        double r28703 = exp(1.0);
        double r28704 = r28683 / r28685;
        double r28705 = r28704 - r28687;
        double r28706 = pow(r28705, r28685);
        double r28707 = -r28706;
        double r28708 = l;
        double r28709 = r28681 - r28682;
        double r28710 = fabs(r28709);
        double r28711 = r28708 - r28710;
        double r28712 = r28707 - r28711;
        double r28713 = pow(r28703, r28712);
        double r28714 = r28702 * r28713;
        double r28715 = 4.0009193320351597e+279;
        bool r28716 = r28688 <= r28715;
        double r28717 = cos(r28688);
        double r28718 = cbrt(r28717);
        double r28719 = r28718 * r28718;
        double r28720 = cbrt(r28718);
        double r28721 = r28720 * r28720;
        double r28722 = r28721 * r28720;
        double r28723 = r28719 * r28722;
        double r28724 = exp(r28712);
        double r28725 = r28723 * r28724;
        double r28726 = r28716 ? r28725 : r28714;
        double r28727 = r28690 ? r28714 : r28726;
        return r28727;
}

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 r28728, r28729, r28730, r28731, r28732, r28733, r28734, r28735, r28736, r28737, r28738, r28739, r28740, r28741, r28742, r28743, r28744, r28745, r28746, r28747, r28748;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28728);
        mpfr_init(r28729);
        mpfr_init(r28730);
        mpfr_init(r28731);
        mpfr_init(r28732);
        mpfr_init_set_str(r28733, "2", 10, MPFR_RNDN);
        mpfr_init(r28734);
        mpfr_init(r28735);
        mpfr_init(r28736);
        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);
}

double f_im(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28728, K, MPFR_RNDN);
        mpfr_set_d(r28729, m, MPFR_RNDN);
        mpfr_set_d(r28730, n, MPFR_RNDN);
        mpfr_add(r28731, r28729, r28730, MPFR_RNDN);
        mpfr_mul(r28732, r28728, r28731, MPFR_RNDN);
        ;
        mpfr_div(r28734, r28732, r28733, MPFR_RNDN);
        mpfr_set_d(r28735, M, MPFR_RNDN);
        mpfr_sub(r28736, r28734, r28735, MPFR_RNDN);
        mpfr_cos(r28737, r28736, MPFR_RNDN);
        mpfr_div(r28738, r28731, r28733, MPFR_RNDN);
        mpfr_sub(r28739, r28738, r28735, MPFR_RNDN);
        mpfr_pow(r28740, r28739, r28733, MPFR_RNDN);
        mpfr_neg(r28741, r28740, MPFR_RNDN);
        mpfr_set_d(r28742, l, MPFR_RNDN);
        mpfr_sub(r28743, r28729, r28730, MPFR_RNDN);
        mpfr_abs(r28744, r28743, MPFR_RNDN);
        mpfr_sub(r28745, r28742, r28744, MPFR_RNDN);
        mpfr_sub(r28746, r28741, r28745, MPFR_RNDN);
        mpfr_exp(r28747, r28746, MPFR_RNDN);
        mpfr_mul(r28748, r28737, r28747, MPFR_RNDN);
        return mpfr_get_d(r28748, MPFR_RNDN);
}

static mpfr_t 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, r28785, r28786, r28787, r28788, r28789, r28790, r28791, r28792, r28793, r28794, r28795, r28796;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28749);
        mpfr_init(r28750);
        mpfr_init(r28751);
        mpfr_init(r28752);
        mpfr_init(r28753);
        mpfr_init_set_str(r28754, "2", 10, MPFR_RNDN);
        mpfr_init(r28755);
        mpfr_init(r28756);
        mpfr_init(r28757);
        mpfr_init_set_str(r28758, "-3.653191116193967e+305", 10, MPFR_RNDN);
        mpfr_init(r28759);
        mpfr_init_set_str(r28760, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r28761, "1", 10, MPFR_RNDN);
        mpfr_init(r28762);
        mpfr_init(r28763);
        mpfr_init(r28764);
        mpfr_init(r28765);
        mpfr_init(r28766);
        mpfr_init(r28767);
        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_set_str(r28784, "4.0009193320351597e+279", 10, MPFR_RNDN);
        mpfr_init(r28785);
        mpfr_init(r28786);
        mpfr_init(r28787);
        mpfr_init(r28788);
        mpfr_init(r28789);
        mpfr_init(r28790);
        mpfr_init(r28791);
        mpfr_init(r28792);
        mpfr_init(r28793);
        mpfr_init(r28794);
        mpfr_init(r28795);
        mpfr_init(r28796);
}

double f_fm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28749, K, MPFR_RNDN);
        mpfr_set_d(r28750, m, MPFR_RNDN);
        mpfr_set_d(r28751, n, MPFR_RNDN);
        mpfr_add(r28752, r28750, r28751, MPFR_RNDN);
        mpfr_mul(r28753, r28749, r28752, MPFR_RNDN);
        ;
        mpfr_div(r28755, r28753, r28754, MPFR_RNDN);
        mpfr_set_d(r28756, M, MPFR_RNDN);
        mpfr_sub(r28757, r28755, r28756, MPFR_RNDN);
        ;
        mpfr_set_si(r28759, mpfr_cmp(r28757, r28758) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r28762, r28750, r28749, MPFR_RNDN);
        mpfr_div(r28763, r28761, r28762, MPFR_RNDN);
        mpfr_mul(r28764, r28760, r28763, MPFR_RNDN);
        mpfr_mul(r28765, r28751, r28749, MPFR_RNDN);
        mpfr_div(r28766, r28761, r28765, MPFR_RNDN);
        mpfr_mul(r28767, r28760, r28766, MPFR_RNDN);
        mpfr_add(r28768, r28764, r28767, MPFR_RNDN);
        mpfr_div(r28769, r28761, r28756, MPFR_RNDN);
        mpfr_sub(r28770, r28768, r28769, MPFR_RNDN);
        mpfr_cos(r28771, r28770, MPFR_RNDN);
        mpfr_set_si(r28772, 1, MPFR_RNDN), mpfr_const_exp(r28772, r28772, MPFR_RNDN);
        mpfr_div(r28773, r28752, r28754, MPFR_RNDN);
        mpfr_sub(r28774, r28773, r28756, MPFR_RNDN);
        mpfr_pow(r28775, r28774, r28754, MPFR_RNDN);
        mpfr_neg(r28776, r28775, MPFR_RNDN);
        mpfr_set_d(r28777, l, MPFR_RNDN);
        mpfr_sub(r28778, r28750, r28751, MPFR_RNDN);
        mpfr_abs(r28779, r28778, MPFR_RNDN);
        mpfr_sub(r28780, r28777, r28779, MPFR_RNDN);
        mpfr_sub(r28781, r28776, r28780, MPFR_RNDN);
        mpfr_pow(r28782, r28772, r28781, MPFR_RNDN);
        mpfr_mul(r28783, r28771, r28782, MPFR_RNDN);
        ;
        mpfr_set_si(r28785, mpfr_cmp(r28757, r28784) <= 0, MPFR_RNDN);
        mpfr_cos(r28786, r28757, MPFR_RNDN);
        mpfr_cbrt(r28787, r28786, MPFR_RNDN);
        mpfr_mul(r28788, r28787, r28787, MPFR_RNDN);
        mpfr_cbrt(r28789, r28787, MPFR_RNDN);
        mpfr_mul(r28790, r28789, r28789, MPFR_RNDN);
        mpfr_mul(r28791, r28790, r28789, MPFR_RNDN);
        mpfr_mul(r28792, r28788, r28791, MPFR_RNDN);
        mpfr_exp(r28793, r28781, MPFR_RNDN);
        mpfr_mul(r28794, r28792, r28793, MPFR_RNDN);
        if (mpfr_get_si(r28785, MPFR_RNDN)) { mpfr_set(r28795, r28794, MPFR_RNDN); } else { mpfr_set(r28795, r28783, MPFR_RNDN); };
        if (mpfr_get_si(r28759, MPFR_RNDN)) { mpfr_set(r28796, r28783, MPFR_RNDN); } else { mpfr_set(r28796, r28795, MPFR_RNDN); };
        return mpfr_get_d(r28796, MPFR_RNDN);
}

static mpfr_t r28797, r28798, r28799, r28800, r28801, r28802, r28803, r28804, r28805, r28806, r28807, r28808, r28809, r28810, r28811, r28812, r28813, r28814, r28815, r28816, r28817, r28818, r28819, r28820, r28821, r28822, r28823, r28824, r28825, r28826, r28827, r28828, r28829, r28830, r28831, r28832, r28833, r28834, r28835, r28836, r28837, r28838, r28839, r28840, r28841, r28842, r28843, r28844;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28797);
        mpfr_init(r28798);
        mpfr_init(r28799);
        mpfr_init(r28800);
        mpfr_init(r28801);
        mpfr_init_set_str(r28802, "2", 10, MPFR_RNDN);
        mpfr_init(r28803);
        mpfr_init(r28804);
        mpfr_init(r28805);
        mpfr_init_set_str(r28806, "-3.653191116193967e+305", 10, MPFR_RNDN);
        mpfr_init(r28807);
        mpfr_init_set_str(r28808, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r28809, "1", 10, MPFR_RNDN);
        mpfr_init(r28810);
        mpfr_init(r28811);
        mpfr_init(r28812);
        mpfr_init(r28813);
        mpfr_init(r28814);
        mpfr_init(r28815);
        mpfr_init(r28816);
        mpfr_init(r28817);
        mpfr_init(r28818);
        mpfr_init(r28819);
        mpfr_init(r28820);
        mpfr_init(r28821);
        mpfr_init(r28822);
        mpfr_init(r28823);
        mpfr_init(r28824);
        mpfr_init(r28825);
        mpfr_init(r28826);
        mpfr_init(r28827);
        mpfr_init(r28828);
        mpfr_init(r28829);
        mpfr_init(r28830);
        mpfr_init(r28831);
        mpfr_init_set_str(r28832, "4.0009193320351597e+279", 10, MPFR_RNDN);
        mpfr_init(r28833);
        mpfr_init(r28834);
        mpfr_init(r28835);
        mpfr_init(r28836);
        mpfr_init(r28837);
        mpfr_init(r28838);
        mpfr_init(r28839);
        mpfr_init(r28840);
        mpfr_init(r28841);
        mpfr_init(r28842);
        mpfr_init(r28843);
        mpfr_init(r28844);
}

double f_dm(double K, double m, double n, double M, double l) {
        mpfr_set_d(r28797, K, MPFR_RNDN);
        mpfr_set_d(r28798, m, MPFR_RNDN);
        mpfr_set_d(r28799, n, MPFR_RNDN);
        mpfr_add(r28800, r28798, r28799, MPFR_RNDN);
        mpfr_mul(r28801, r28797, r28800, MPFR_RNDN);
        ;
        mpfr_div(r28803, r28801, r28802, MPFR_RNDN);
        mpfr_set_d(r28804, M, MPFR_RNDN);
        mpfr_sub(r28805, r28803, r28804, MPFR_RNDN);
        ;
        mpfr_set_si(r28807, mpfr_cmp(r28805, r28806) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r28810, r28798, r28797, MPFR_RNDN);
        mpfr_div(r28811, r28809, r28810, MPFR_RNDN);
        mpfr_mul(r28812, r28808, r28811, MPFR_RNDN);
        mpfr_mul(r28813, r28799, r28797, MPFR_RNDN);
        mpfr_div(r28814, r28809, r28813, MPFR_RNDN);
        mpfr_mul(r28815, r28808, r28814, MPFR_RNDN);
        mpfr_add(r28816, r28812, r28815, MPFR_RNDN);
        mpfr_div(r28817, r28809, r28804, MPFR_RNDN);
        mpfr_sub(r28818, r28816, r28817, MPFR_RNDN);
        mpfr_cos(r28819, r28818, MPFR_RNDN);
        mpfr_set_si(r28820, 1, MPFR_RNDN), mpfr_const_exp(r28820, r28820, MPFR_RNDN);
        mpfr_div(r28821, r28800, r28802, MPFR_RNDN);
        mpfr_sub(r28822, r28821, r28804, MPFR_RNDN);
        mpfr_pow(r28823, r28822, r28802, MPFR_RNDN);
        mpfr_neg(r28824, r28823, MPFR_RNDN);
        mpfr_set_d(r28825, l, MPFR_RNDN);
        mpfr_sub(r28826, r28798, r28799, MPFR_RNDN);
        mpfr_abs(r28827, r28826, MPFR_RNDN);
        mpfr_sub(r28828, r28825, r28827, MPFR_RNDN);
        mpfr_sub(r28829, r28824, r28828, MPFR_RNDN);
        mpfr_pow(r28830, r28820, r28829, MPFR_RNDN);
        mpfr_mul(r28831, r28819, r28830, MPFR_RNDN);
        ;
        mpfr_set_si(r28833, mpfr_cmp(r28805, r28832) <= 0, MPFR_RNDN);
        mpfr_cos(r28834, r28805, MPFR_RNDN);
        mpfr_cbrt(r28835, r28834, MPFR_RNDN);
        mpfr_mul(r28836, r28835, r28835, MPFR_RNDN);
        mpfr_cbrt(r28837, r28835, MPFR_RNDN);
        mpfr_mul(r28838, r28837, r28837, MPFR_RNDN);
        mpfr_mul(r28839, r28838, r28837, MPFR_RNDN);
        mpfr_mul(r28840, r28836, r28839, MPFR_RNDN);
        mpfr_exp(r28841, r28829, MPFR_RNDN);
        mpfr_mul(r28842, r28840, r28841, MPFR_RNDN);
        if (mpfr_get_si(r28833, MPFR_RNDN)) { mpfr_set(r28843, r28842, MPFR_RNDN); } else { mpfr_set(r28843, r28831, MPFR_RNDN); };
        if (mpfr_get_si(r28807, MPFR_RNDN)) { mpfr_set(r28844, r28831, MPFR_RNDN); } else { mpfr_set(r28844, r28843, MPFR_RNDN); };
        return mpfr_get_d(r28844, MPFR_RNDN);
}

