#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 r28769 = -2;
        float r28770 = J;
        float r28771 = r28769 * r28770;
        float r28772 = K;
        float r28773 = 2;
        float r28774 = r28772 / r28773;
        float r28775 = cos(r28774);
        float r28776 = r28771 * r28775;
        float r28777 = 1;
        float r28778 = U;
        float r28779 = r28773 * r28770;
        float r28780 = r28779 * r28775;
        float r28781 = r28778 / r28780;
        float r28782 = pow(r28781, r28773);
        float r28783 = r28777 + r28782;
        float r28784 = sqrt(r28783);
        float r28785 = r28776 * r28784;
        return r28785;
}

double f_id(double J, double K, double U) {
        double r28786 = -2;
        double r28787 = J;
        double r28788 = r28786 * r28787;
        double r28789 = K;
        double r28790 = 2;
        double r28791 = r28789 / r28790;
        double r28792 = cos(r28791);
        double r28793 = r28788 * r28792;
        double r28794 = 1;
        double r28795 = U;
        double r28796 = r28790 * r28787;
        double r28797 = r28796 * r28792;
        double r28798 = r28795 / r28797;
        double r28799 = pow(r28798, r28790);
        double r28800 = r28794 + r28799;
        double r28801 = sqrt(r28800);
        double r28802 = r28793 * r28801;
        return r28802;
}


double f_of(float J, float K, float U) {
        float r28803 = -2;
        float r28804 = J;
        float r28805 = K;
        float r28806 = 2;
        float r28807 = r28805 / r28806;
        float r28808 = cos(r28807);
        float r28809 = r28804 * r28808;
        float r28810 = r28803 * r28809;
        float r28811 = 1;
        float r28812 = U;
        float r28813 = r28806 * r28804;
        float r28814 = r28813 * r28808;
        float r28815 = r28812 / r28814;
        float r28816 = pow(r28815, r28806);
        float r28817 = r28811 + r28816;
        float r28818 = sqrt(r28817);
        float r28819 = r28810 * r28818;
        return r28819;
}

double f_od(double J, double K, double U) {
        double r28820 = -2;
        double r28821 = J;
        double r28822 = K;
        double r28823 = 2;
        double r28824 = r28822 / r28823;
        double r28825 = cos(r28824);
        double r28826 = r28821 * r28825;
        double r28827 = r28820 * r28826;
        double r28828 = 1;
        double r28829 = U;
        double r28830 = r28823 * r28821;
        double r28831 = r28830 * r28825;
        double r28832 = r28829 / r28831;
        double r28833 = pow(r28832, r28823);
        double r28834 = r28828 + r28833;
        double r28835 = sqrt(r28834);
        double r28836 = r28827 * r28835;
        return r28836;
}

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 r28837, r28838, r28839, r28840, r28841, r28842, r28843, r28844, r28845, r28846, r28847, r28848, r28849, r28850, r28851, r28852, r28853;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28837, "-2", 10, MPFR_RNDN);
        mpfr_init(r28838);
        mpfr_init(r28839);
        mpfr_init(r28840);
        mpfr_init_set_str(r28841, "2", 10, MPFR_RNDN);
        mpfr_init(r28842);
        mpfr_init(r28843);
        mpfr_init(r28844);
        mpfr_init_set_str(r28845, "1", 10, MPFR_RNDN);
        mpfr_init(r28846);
        mpfr_init(r28847);
        mpfr_init(r28848);
        mpfr_init(r28849);
        mpfr_init(r28850);
        mpfr_init(r28851);
        mpfr_init(r28852);
        mpfr_init(r28853);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r28838, J, MPFR_RNDN);
        mpfr_mul(r28839, r28837, r28838, MPFR_RNDN);
        mpfr_set_d(r28840, K, MPFR_RNDN);
        ;
        mpfr_div(r28842, r28840, r28841, MPFR_RNDN);
        mpfr_cos(r28843, r28842, MPFR_RNDN);
        mpfr_mul(r28844, r28839, r28843, MPFR_RNDN);
        ;
        mpfr_set_d(r28846, U, MPFR_RNDN);
        mpfr_mul(r28847, r28841, r28838, MPFR_RNDN);
        mpfr_mul(r28848, r28847, r28843, MPFR_RNDN);
        mpfr_div(r28849, r28846, r28848, MPFR_RNDN);
        mpfr_pow(r28850, r28849, r28841, MPFR_RNDN);
        mpfr_add(r28851, r28845, r28850, MPFR_RNDN);
        mpfr_sqrt(r28852, r28851, MPFR_RNDN);
        mpfr_mul(r28853, r28844, r28852, MPFR_RNDN);
        return mpfr_get_d(r28853, MPFR_RNDN);
}

static mpfr_t r28854, r28855, r28856, r28857, r28858, r28859, r28860, r28861, r28862, r28863, r28864, r28865, r28866, r28867, r28868, r28869, r28870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28854, "-2", 10, MPFR_RNDN);
        mpfr_init(r28855);
        mpfr_init(r28856);
        mpfr_init_set_str(r28857, "2", 10, MPFR_RNDN);
        mpfr_init(r28858);
        mpfr_init(r28859);
        mpfr_init(r28860);
        mpfr_init(r28861);
        mpfr_init_set_str(r28862, "1", 10, MPFR_RNDN);
        mpfr_init(r28863);
        mpfr_init(r28864);
        mpfr_init(r28865);
        mpfr_init(r28866);
        mpfr_init(r28867);
        mpfr_init(r28868);
        mpfr_init(r28869);
        mpfr_init(r28870);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r28855, J, MPFR_RNDN);
        mpfr_set_d(r28856, K, MPFR_RNDN);
        ;
        mpfr_div(r28858, r28856, r28857, MPFR_RNDN);
        mpfr_cos(r28859, r28858, MPFR_RNDN);
        mpfr_mul(r28860, r28855, r28859, MPFR_RNDN);
        mpfr_mul(r28861, r28854, r28860, MPFR_RNDN);
        ;
        mpfr_set_d(r28863, U, MPFR_RNDN);
        mpfr_mul(r28864, r28857, r28855, MPFR_RNDN);
        mpfr_mul(r28865, r28864, r28859, MPFR_RNDN);
        mpfr_div(r28866, r28863, r28865, MPFR_RNDN);
        mpfr_pow(r28867, r28866, r28857, MPFR_RNDN);
        mpfr_add(r28868, r28862, r28867, MPFR_RNDN);
        mpfr_sqrt(r28869, r28868, MPFR_RNDN);
        mpfr_mul(r28870, r28861, r28869, MPFR_RNDN);
        return mpfr_get_d(r28870, MPFR_RNDN);
}

static mpfr_t r28871, r28872, r28873, r28874, r28875, r28876, r28877, r28878, r28879, r28880, r28881, r28882, r28883, r28884, r28885, r28886, r28887;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28871, "-2", 10, MPFR_RNDN);
        mpfr_init(r28872);
        mpfr_init(r28873);
        mpfr_init_set_str(r28874, "2", 10, MPFR_RNDN);
        mpfr_init(r28875);
        mpfr_init(r28876);
        mpfr_init(r28877);
        mpfr_init(r28878);
        mpfr_init_set_str(r28879, "1", 10, MPFR_RNDN);
        mpfr_init(r28880);
        mpfr_init(r28881);
        mpfr_init(r28882);
        mpfr_init(r28883);
        mpfr_init(r28884);
        mpfr_init(r28885);
        mpfr_init(r28886);
        mpfr_init(r28887);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r28872, J, MPFR_RNDN);
        mpfr_set_d(r28873, K, MPFR_RNDN);
        ;
        mpfr_div(r28875, r28873, r28874, MPFR_RNDN);
        mpfr_cos(r28876, r28875, MPFR_RNDN);
        mpfr_mul(r28877, r28872, r28876, MPFR_RNDN);
        mpfr_mul(r28878, r28871, r28877, MPFR_RNDN);
        ;
        mpfr_set_d(r28880, U, MPFR_RNDN);
        mpfr_mul(r28881, r28874, r28872, MPFR_RNDN);
        mpfr_mul(r28882, r28881, r28876, MPFR_RNDN);
        mpfr_div(r28883, r28880, r28882, MPFR_RNDN);
        mpfr_pow(r28884, r28883, r28874, MPFR_RNDN);
        mpfr_add(r28885, r28879, r28884, MPFR_RNDN);
        mpfr_sqrt(r28886, r28885, MPFR_RNDN);
        mpfr_mul(r28887, r28878, r28886, MPFR_RNDN);
        return mpfr_get_d(r28887, MPFR_RNDN);
}

