#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 r28845 = -2;
        float r28846 = J;
        float r28847 = r28845 * r28846;
        float r28848 = K;
        float r28849 = 2;
        float r28850 = r28848 / r28849;
        float r28851 = cos(r28850);
        float r28852 = r28847 * r28851;
        float r28853 = 1;
        float r28854 = U;
        float r28855 = r28849 * r28846;
        float r28856 = r28855 * r28851;
        float r28857 = r28854 / r28856;
        float r28858 = pow(r28857, r28849);
        float r28859 = r28853 + r28858;
        float r28860 = sqrt(r28859);
        float r28861 = r28852 * r28860;
        return r28861;
}

double f_id(double J, double K, double U) {
        double r28862 = -2;
        double r28863 = J;
        double r28864 = r28862 * r28863;
        double r28865 = K;
        double r28866 = 2;
        double r28867 = r28865 / r28866;
        double r28868 = cos(r28867);
        double r28869 = r28864 * r28868;
        double r28870 = 1;
        double r28871 = U;
        double r28872 = r28866 * r28863;
        double r28873 = r28872 * r28868;
        double r28874 = r28871 / r28873;
        double r28875 = pow(r28874, r28866);
        double r28876 = r28870 + r28875;
        double r28877 = sqrt(r28876);
        double r28878 = r28869 * r28877;
        return r28878;
}


double f_of(float J, float K, float U) {
        float r28879 = -2;
        float r28880 = J;
        float r28881 = K;
        float r28882 = 2;
        float r28883 = r28881 / r28882;
        float r28884 = cos(r28883);
        float r28885 = r28880 * r28884;
        float r28886 = r28879 * r28885;
        float r28887 = 1;
        float r28888 = U;
        float r28889 = r28882 * r28880;
        float r28890 = r28889 * r28884;
        float r28891 = r28888 / r28890;
        float r28892 = pow(r28891, r28882);
        float r28893 = r28887 + r28892;
        float r28894 = sqrt(r28893);
        float r28895 = r28886 * r28894;
        return r28895;
}

double f_od(double J, double K, double U) {
        double r28896 = -2;
        double r28897 = J;
        double r28898 = K;
        double r28899 = 2;
        double r28900 = r28898 / r28899;
        double r28901 = cos(r28900);
        double r28902 = r28897 * r28901;
        double r28903 = r28896 * r28902;
        double r28904 = 1;
        double r28905 = U;
        double r28906 = r28899 * r28897;
        double r28907 = r28906 * r28901;
        double r28908 = r28905 / r28907;
        double r28909 = pow(r28908, r28899);
        double r28910 = r28904 + r28909;
        double r28911 = sqrt(r28910);
        double r28912 = r28903 * r28911;
        return r28912;
}

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 r28913, r28914, r28915, r28916, r28917, r28918, r28919, r28920, r28921, r28922, r28923, r28924, r28925, r28926, r28927, r28928, r28929;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28913, "-2", 10, MPFR_RNDN);
        mpfr_init(r28914);
        mpfr_init(r28915);
        mpfr_init(r28916);
        mpfr_init_set_str(r28917, "2", 10, MPFR_RNDN);
        mpfr_init(r28918);
        mpfr_init(r28919);
        mpfr_init(r28920);
        mpfr_init_set_str(r28921, "1", 10, MPFR_RNDN);
        mpfr_init(r28922);
        mpfr_init(r28923);
        mpfr_init(r28924);
        mpfr_init(r28925);
        mpfr_init(r28926);
        mpfr_init(r28927);
        mpfr_init(r28928);
        mpfr_init(r28929);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r28914, J, MPFR_RNDN);
        mpfr_mul(r28915, r28913, r28914, MPFR_RNDN);
        mpfr_set_d(r28916, K, MPFR_RNDN);
        ;
        mpfr_div(r28918, r28916, r28917, MPFR_RNDN);
        mpfr_cos(r28919, r28918, MPFR_RNDN);
        mpfr_mul(r28920, r28915, r28919, MPFR_RNDN);
        ;
        mpfr_set_d(r28922, U, MPFR_RNDN);
        mpfr_mul(r28923, r28917, r28914, MPFR_RNDN);
        mpfr_mul(r28924, r28923, r28919, MPFR_RNDN);
        mpfr_div(r28925, r28922, r28924, MPFR_RNDN);
        mpfr_pow(r28926, r28925, r28917, MPFR_RNDN);
        mpfr_add(r28927, r28921, r28926, MPFR_RNDN);
        mpfr_sqrt(r28928, r28927, MPFR_RNDN);
        mpfr_mul(r28929, r28920, r28928, MPFR_RNDN);
        return mpfr_get_d(r28929, MPFR_RNDN);
}

static mpfr_t r28930, r28931, r28932, r28933, r28934, r28935, r28936, r28937, r28938, r28939, r28940, r28941, r28942, r28943, r28944, r28945, r28946;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28930, "-2", 10, MPFR_RNDN);
        mpfr_init(r28931);
        mpfr_init(r28932);
        mpfr_init_set_str(r28933, "2", 10, MPFR_RNDN);
        mpfr_init(r28934);
        mpfr_init(r28935);
        mpfr_init(r28936);
        mpfr_init(r28937);
        mpfr_init_set_str(r28938, "1", 10, MPFR_RNDN);
        mpfr_init(r28939);
        mpfr_init(r28940);
        mpfr_init(r28941);
        mpfr_init(r28942);
        mpfr_init(r28943);
        mpfr_init(r28944);
        mpfr_init(r28945);
        mpfr_init(r28946);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r28931, J, MPFR_RNDN);
        mpfr_set_d(r28932, K, MPFR_RNDN);
        ;
        mpfr_div(r28934, r28932, r28933, MPFR_RNDN);
        mpfr_cos(r28935, r28934, MPFR_RNDN);
        mpfr_mul(r28936, r28931, r28935, MPFR_RNDN);
        mpfr_mul(r28937, r28930, r28936, MPFR_RNDN);
        ;
        mpfr_set_d(r28939, U, MPFR_RNDN);
        mpfr_mul(r28940, r28933, r28931, MPFR_RNDN);
        mpfr_mul(r28941, r28940, r28935, MPFR_RNDN);
        mpfr_div(r28942, r28939, r28941, MPFR_RNDN);
        mpfr_pow(r28943, r28942, r28933, MPFR_RNDN);
        mpfr_add(r28944, r28938, r28943, MPFR_RNDN);
        mpfr_sqrt(r28945, r28944, MPFR_RNDN);
        mpfr_mul(r28946, r28937, r28945, MPFR_RNDN);
        return mpfr_get_d(r28946, MPFR_RNDN);
}

static mpfr_t r28947, r28948, r28949, r28950, r28951, r28952, r28953, r28954, r28955, r28956, r28957, r28958, r28959, r28960, r28961, r28962, r28963;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r28947, "-2", 10, MPFR_RNDN);
        mpfr_init(r28948);
        mpfr_init(r28949);
        mpfr_init_set_str(r28950, "2", 10, MPFR_RNDN);
        mpfr_init(r28951);
        mpfr_init(r28952);
        mpfr_init(r28953);
        mpfr_init(r28954);
        mpfr_init_set_str(r28955, "1", 10, MPFR_RNDN);
        mpfr_init(r28956);
        mpfr_init(r28957);
        mpfr_init(r28958);
        mpfr_init(r28959);
        mpfr_init(r28960);
        mpfr_init(r28961);
        mpfr_init(r28962);
        mpfr_init(r28963);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r28948, J, MPFR_RNDN);
        mpfr_set_d(r28949, K, MPFR_RNDN);
        ;
        mpfr_div(r28951, r28949, r28950, MPFR_RNDN);
        mpfr_cos(r28952, r28951, MPFR_RNDN);
        mpfr_mul(r28953, r28948, r28952, MPFR_RNDN);
        mpfr_mul(r28954, r28947, r28953, MPFR_RNDN);
        ;
        mpfr_set_d(r28956, U, MPFR_RNDN);
        mpfr_mul(r28957, r28950, r28948, MPFR_RNDN);
        mpfr_mul(r28958, r28957, r28952, MPFR_RNDN);
        mpfr_div(r28959, r28956, r28958, MPFR_RNDN);
        mpfr_pow(r28960, r28959, r28950, MPFR_RNDN);
        mpfr_add(r28961, r28955, r28960, MPFR_RNDN);
        mpfr_sqrt(r28962, r28961, MPFR_RNDN);
        mpfr_mul(r28963, r28954, r28962, MPFR_RNDN);
        return mpfr_get_d(r28963, MPFR_RNDN);
}

