#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 r9799 = -2;
        float r9800 = J;
        float r9801 = r9799 * r9800;
        float r9802 = K;
        float r9803 = 2;
        float r9804 = r9802 / r9803;
        float r9805 = cos(r9804);
        float r9806 = r9801 * r9805;
        float r9807 = 1;
        float r9808 = U;
        float r9809 = r9803 * r9800;
        float r9810 = r9809 * r9805;
        float r9811 = r9808 / r9810;
        float r9812 = pow(r9811, r9803);
        float r9813 = r9807 + r9812;
        float r9814 = sqrt(r9813);
        float r9815 = r9806 * r9814;
        return r9815;
}

double f_id(double J, double K, double U) {
        double r9816 = -2;
        double r9817 = J;
        double r9818 = r9816 * r9817;
        double r9819 = K;
        double r9820 = 2;
        double r9821 = r9819 / r9820;
        double r9822 = cos(r9821);
        double r9823 = r9818 * r9822;
        double r9824 = 1;
        double r9825 = U;
        double r9826 = r9820 * r9817;
        double r9827 = r9826 * r9822;
        double r9828 = r9825 / r9827;
        double r9829 = pow(r9828, r9820);
        double r9830 = r9824 + r9829;
        double r9831 = sqrt(r9830);
        double r9832 = r9823 * r9831;
        return r9832;
}


double f_of(float J, float K, float U) {
        float r9833 = -2;
        float r9834 = J;
        float r9835 = r9833 * r9834;
        float r9836 = K;
        float r9837 = 2;
        float r9838 = r9836 / r9837;
        float r9839 = cos(r9838);
        float r9840 = r9835 * r9839;
        float r9841 = 1;
        float r9842 = U;
        float r9843 = r9837 * r9834;
        float r9844 = r9843 * r9839;
        float r9845 = r9842 / r9844;
        float r9846 = pow(r9845, r9837);
        float r9847 = r9841 + r9846;
        float r9848 = sqrt(r9847);
        float r9849 = r9840 * r9848;
        return r9849;
}

double f_od(double J, double K, double U) {
        double r9850 = -2;
        double r9851 = J;
        double r9852 = r9850 * r9851;
        double r9853 = K;
        double r9854 = 2;
        double r9855 = r9853 / r9854;
        double r9856 = cos(r9855);
        double r9857 = r9852 * r9856;
        double r9858 = 1;
        double r9859 = U;
        double r9860 = r9854 * r9851;
        double r9861 = r9860 * r9856;
        double r9862 = r9859 / r9861;
        double r9863 = pow(r9862, r9854);
        double r9864 = r9858 + r9863;
        double r9865 = sqrt(r9864);
        double r9866 = r9857 * r9865;
        return r9866;
}

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 r9867, r9868, r9869, r9870, r9871, r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9867, "-2", 10, MPFR_RNDN);
        mpfr_init(r9868);
        mpfr_init(r9869);
        mpfr_init(r9870);
        mpfr_init_set_str(r9871, "2", 10, MPFR_RNDN);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init_set_str(r9875, "1", 10, MPFR_RNDN);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init(r9883);
}

double f_im(double J, double K, double U) {
        ;
        mpfr_set_d(r9868, J, MPFR_RNDN);
        mpfr_mul(r9869, r9867, r9868, MPFR_RNDN);
        mpfr_set_d(r9870, K, MPFR_RNDN);
        ;
        mpfr_div(r9872, r9870, r9871, MPFR_RNDN);
        mpfr_cos(r9873, r9872, MPFR_RNDN);
        mpfr_mul(r9874, r9869, r9873, MPFR_RNDN);
        ;
        mpfr_set_d(r9876, U, MPFR_RNDN);
        mpfr_mul(r9877, r9871, r9868, MPFR_RNDN);
        mpfr_mul(r9878, r9877, r9873, MPFR_RNDN);
        mpfr_div(r9879, r9876, r9878, MPFR_RNDN);
        mpfr_pow(r9880, r9879, r9871, MPFR_RNDN);
        mpfr_add(r9881, r9875, r9880, MPFR_RNDN);
        mpfr_sqrt(r9882, r9881, MPFR_RNDN);
        mpfr_mul(r9883, r9874, r9882, MPFR_RNDN);
        return mpfr_get_d(r9883, MPFR_RNDN);
}

static mpfr_t r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9884, "-2", 10, MPFR_RNDN);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init_set_str(r9888, "2", 10, MPFR_RNDN);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init_set_str(r9892, "1", 10, MPFR_RNDN);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init(r9897);
        mpfr_init(r9898);
        mpfr_init(r9899);
        mpfr_init(r9900);
}

double f_fm(double J, double K, double U) {
        ;
        mpfr_set_d(r9885, J, MPFR_RNDN);
        mpfr_mul(r9886, r9884, r9885, MPFR_RNDN);
        mpfr_set_d(r9887, K, MPFR_RNDN);
        ;
        mpfr_div(r9889, r9887, r9888, MPFR_RNDN);
        mpfr_cos(r9890, r9889, MPFR_RNDN);
        mpfr_mul(r9891, r9886, r9890, MPFR_RNDN);
        ;
        mpfr_set_d(r9893, U, MPFR_RNDN);
        mpfr_mul(r9894, r9888, r9885, MPFR_RNDN);
        mpfr_mul(r9895, r9894, r9890, MPFR_RNDN);
        mpfr_div(r9896, r9893, r9895, MPFR_RNDN);
        mpfr_pow(r9897, r9896, r9888, MPFR_RNDN);
        mpfr_add(r9898, r9892, r9897, MPFR_RNDN);
        mpfr_sqrt(r9899, r9898, MPFR_RNDN);
        mpfr_mul(r9900, r9891, r9899, MPFR_RNDN);
        return mpfr_get_d(r9900, MPFR_RNDN);
}

static mpfr_t r9901, r9902, r9903, r9904, r9905, r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914, r9915, r9916, r9917;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9901, "-2", 10, MPFR_RNDN);
        mpfr_init(r9902);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init_set_str(r9905, "2", 10, MPFR_RNDN);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
        mpfr_init_set_str(r9909, "1", 10, MPFR_RNDN);
        mpfr_init(r9910);
        mpfr_init(r9911);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
}

double f_dm(double J, double K, double U) {
        ;
        mpfr_set_d(r9902, J, MPFR_RNDN);
        mpfr_mul(r9903, r9901, r9902, MPFR_RNDN);
        mpfr_set_d(r9904, K, MPFR_RNDN);
        ;
        mpfr_div(r9906, r9904, r9905, MPFR_RNDN);
        mpfr_cos(r9907, r9906, MPFR_RNDN);
        mpfr_mul(r9908, r9903, r9907, MPFR_RNDN);
        ;
        mpfr_set_d(r9910, U, MPFR_RNDN);
        mpfr_mul(r9911, r9905, r9902, MPFR_RNDN);
        mpfr_mul(r9912, r9911, r9907, MPFR_RNDN);
        mpfr_div(r9913, r9910, r9912, MPFR_RNDN);
        mpfr_pow(r9914, r9913, r9905, MPFR_RNDN);
        mpfr_add(r9915, r9909, r9914, MPFR_RNDN);
        mpfr_sqrt(r9916, r9915, MPFR_RNDN);
        mpfr_mul(r9917, r9908, r9916, MPFR_RNDN);
        return mpfr_get_d(r9917, MPFR_RNDN);
}

