#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 r28785 = -2;
        float r28786 = J;
        float r28787 = r28785 * r28786;
        float r28788 = K;
        float r28789 = 2;
        float r28790 = r28788 / r28789;
        float r28791 = cos(r28790);
        float r28792 = r28787 * r28791;
        float r28793 = 1;
        float r28794 = U;
        float r28795 = r28789 * r28786;
        float r28796 = r28795 * r28791;
        float r28797 = r28794 / r28796;
        float r28798 = pow(r28797, r28789);
        float r28799 = r28793 + r28798;
        float r28800 = sqrt(r28799);
        float r28801 = r28792 * r28800;
        return r28801;
}

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


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

double f_od(double J, double K, double U) {
        double r28836 = -2;
        double r28837 = J;
        double r28838 = K;
        double r28839 = 2;
        double r28840 = r28838 / r28839;
        double r28841 = cos(r28840);
        double r28842 = r28837 * r28841;
        double r28843 = r28836 * r28842;
        double r28844 = 1;
        double r28845 = U;
        double r28846 = r28839 * r28837;
        double r28847 = r28846 * r28841;
        double r28848 = r28845 / r28847;
        double r28849 = pow(r28848, r28839);
        double r28850 = r28844 + r28849;
        double r28851 = sqrt(r28850);
        double r28852 = r28843 * r28851;
        return r28852;
}

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 r28853, r28854, r28855, r28856, r28857, r28858, r28859, r28860, r28861, r28862, r28863, r28864, r28865, r28866, r28867, r28868, r28869;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28853, "-2", 10, MPFR_RNDN);
        mpfr_init(r28854);
        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_set_str(r28861, "1", 10, MPFR_RNDN);
        mpfr_init(r28862);
        mpfr_init(r28863);
        mpfr_init(r28864);
        mpfr_init(r28865);
        mpfr_init(r28866);
        mpfr_init(r28867);
        mpfr_init(r28868);
        mpfr_init(r28869);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r28854, J, MPFR_RNDN);
        mpfr_mul(r28855, r28853, r28854, 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_set_d(r28862, U, MPFR_RNDN);
        mpfr_mul(r28863, r28857, r28854, MPFR_RNDN);
        mpfr_mul(r28864, r28863, r28859, MPFR_RNDN);
        mpfr_div(r28865, r28862, r28864, MPFR_RNDN);
        mpfr_pow(r28866, r28865, r28857, MPFR_RNDN);
        mpfr_add(r28867, r28861, r28866, MPFR_RNDN);
        mpfr_sqrt(r28868, r28867, MPFR_RNDN);
        mpfr_mul(r28869, r28860, r28868, MPFR_RNDN);
        return mpfr_get_d(r28869, MPFR_RNDN);
}

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

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

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

static mpfr_t r28887, r28888, r28889, r28890, r28891, r28892, r28893, r28894, r28895, r28896, r28897, r28898, r28899, r28900, r28901, r28902, r28903;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28887, "-2", 10, MPFR_RNDN);
        mpfr_init(r28888);
        mpfr_init(r28889);
        mpfr_init_set_str(r28890, "2", 10, MPFR_RNDN);
        mpfr_init(r28891);
        mpfr_init(r28892);
        mpfr_init(r28893);
        mpfr_init(r28894);
        mpfr_init_set_str(r28895, "1", 10, MPFR_RNDN);
        mpfr_init(r28896);
        mpfr_init(r28897);
        mpfr_init(r28898);
        mpfr_init(r28899);
        mpfr_init(r28900);
        mpfr_init(r28901);
        mpfr_init(r28902);
        mpfr_init(r28903);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r28888, J, MPFR_RNDN);
        mpfr_set_d(r28889, K, MPFR_RNDN);
        ;
        mpfr_div(r28891, r28889, r28890, MPFR_RNDN);
        mpfr_cos(r28892, r28891, MPFR_RNDN);
        mpfr_mul(r28893, r28888, r28892, MPFR_RNDN);
        mpfr_mul(r28894, r28887, r28893, MPFR_RNDN);
        ;
        mpfr_set_d(r28896, U, MPFR_RNDN);
        mpfr_mul(r28897, r28890, r28888, MPFR_RNDN);
        mpfr_mul(r28898, r28897, r28892, MPFR_RNDN);
        mpfr_div(r28899, r28896, r28898, MPFR_RNDN);
        mpfr_pow(r28900, r28899, r28890, MPFR_RNDN);
        mpfr_add(r28901, r28895, r28900, MPFR_RNDN);
        mpfr_sqrt(r28902, r28901, MPFR_RNDN);
        mpfr_mul(r28903, r28894, r28902, MPFR_RNDN);
        return mpfr_get_d(r28903, MPFR_RNDN);
}

