#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Migdal et al, Equation (51)";

double f_if(float k, float n) {
        float r30463026 = 1;
        float r30463027 = k;
        float r30463028 = sqrt(r30463027);
        float r30463029 = r30463026 / r30463028;
        float r30463030 = 2;
        float r30463031 = atan2(1.0, 0.0);
        float r30463032 = r30463030 * r30463031;
        float r30463033 = n;
        float r30463034 = r30463032 * r30463033;
        float r30463035 = r30463026 - r30463027;
        float r30463036 = r30463035 / r30463030;
        float r30463037 = pow(r30463034, r30463036);
        float r30463038 = r30463029 * r30463037;
        return r30463038;
}

double f_id(double k, double n) {
        double r30463039 = 1;
        double r30463040 = k;
        double r30463041 = sqrt(r30463040);
        double r30463042 = r30463039 / r30463041;
        double r30463043 = 2;
        double r30463044 = atan2(1.0, 0.0);
        double r30463045 = r30463043 * r30463044;
        double r30463046 = n;
        double r30463047 = r30463045 * r30463046;
        double r30463048 = r30463039 - r30463040;
        double r30463049 = r30463048 / r30463043;
        double r30463050 = pow(r30463047, r30463049);
        double r30463051 = r30463042 * r30463050;
        return r30463051;
}


double f_of(float k, float n) {
        float r30463052 = n;
        float r30463053 = atan2(1.0, 0.0);
        float r30463054 = r30463053 + r30463053;
        float r30463055 = r30463052 * r30463054;
        float r30463056 = 1;
        float r30463057 = 2;
        float r30463058 = r30463056 / r30463057;
        float r30463059 = pow(r30463055, r30463058);
        float r30463060 = k;
        float r30463061 = sqrt(r30463060);
        float r30463062 = r30463060 / r30463057;
        float r30463063 = pow(r30463055, r30463062);
        float r30463064 = r30463061 * r30463063;
        float r30463065 = r30463059 / r30463064;
        return r30463065;
}

double f_od(double k, double n) {
        double r30463066 = n;
        double r30463067 = atan2(1.0, 0.0);
        double r30463068 = r30463067 + r30463067;
        double r30463069 = r30463066 * r30463068;
        double r30463070 = 1;
        double r30463071 = 2;
        double r30463072 = r30463070 / r30463071;
        double r30463073 = pow(r30463069, r30463072);
        double r30463074 = k;
        double r30463075 = sqrt(r30463074);
        double r30463076 = r30463074 / r30463071;
        double r30463077 = pow(r30463069, r30463076);
        double r30463078 = r30463075 * r30463077;
        double r30463079 = r30463073 / r30463078;
        return r30463079;
}

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 r30463080, r30463081, r30463082, r30463083, r30463084, r30463085, r30463086, r30463087, r30463088, r30463089, r30463090, r30463091, r30463092;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r30463080, "1", 10, MPFR_RNDN);
        mpfr_init(r30463081);
        mpfr_init(r30463082);
        mpfr_init(r30463083);
        mpfr_init_set_str(r30463084, "2", 10, MPFR_RNDN);
        mpfr_init(r30463085);
        mpfr_init(r30463086);
        mpfr_init(r30463087);
        mpfr_init(r30463088);
        mpfr_init(r30463089);
        mpfr_init(r30463090);
        mpfr_init(r30463091);
        mpfr_init(r30463092);
}

double f_im(double k, double n) {
        ;
        mpfr_set_d(r30463081, k, MPFR_RNDN);
        mpfr_sqrt(r30463082, r30463081, MPFR_RNDN);
        mpfr_div(r30463083, r30463080, r30463082, MPFR_RNDN);
        ;
        mpfr_const_pi(r30463085, MPFR_RNDN);
        mpfr_mul(r30463086, r30463084, r30463085, MPFR_RNDN);
        mpfr_set_d(r30463087, n, MPFR_RNDN);
        mpfr_mul(r30463088, r30463086, r30463087, MPFR_RNDN);
        mpfr_sub(r30463089, r30463080, r30463081, MPFR_RNDN);
        mpfr_div(r30463090, r30463089, r30463084, MPFR_RNDN);
        mpfr_pow(r30463091, r30463088, r30463090, MPFR_RNDN);
        mpfr_mul(r30463092, r30463083, r30463091, MPFR_RNDN);
        return mpfr_get_d(r30463092, MPFR_RNDN);
}

static mpfr_t r30463093, r30463094, r30463095, r30463096, r30463097, r30463098, r30463099, r30463100, r30463101, r30463102, r30463103, r30463104, r30463105, r30463106;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r30463093);
        mpfr_init(r30463094);
        mpfr_init(r30463095);
        mpfr_init(r30463096);
        mpfr_init_set_str(r30463097, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30463098, "2", 10, MPFR_RNDN);
        mpfr_init(r30463099);
        mpfr_init(r30463100);
        mpfr_init(r30463101);
        mpfr_init(r30463102);
        mpfr_init(r30463103);
        mpfr_init(r30463104);
        mpfr_init(r30463105);
        mpfr_init(r30463106);
}

double f_fm(double k, double n) {
        mpfr_set_d(r30463093, n, MPFR_RNDN);
        mpfr_const_pi(r30463094, MPFR_RNDN);
        mpfr_add(r30463095, r30463094, r30463094, MPFR_RNDN);
        mpfr_mul(r30463096, r30463093, r30463095, MPFR_RNDN);
        ;
        ;
        mpfr_div(r30463099, r30463097, r30463098, MPFR_RNDN);
        mpfr_pow(r30463100, r30463096, r30463099, MPFR_RNDN);
        mpfr_set_d(r30463101, k, MPFR_RNDN);
        mpfr_sqrt(r30463102, r30463101, MPFR_RNDN);
        mpfr_div(r30463103, r30463101, r30463098, MPFR_RNDN);
        mpfr_pow(r30463104, r30463096, r30463103, MPFR_RNDN);
        mpfr_mul(r30463105, r30463102, r30463104, MPFR_RNDN);
        mpfr_div(r30463106, r30463100, r30463105, MPFR_RNDN);
        return mpfr_get_d(r30463106, MPFR_RNDN);
}

static mpfr_t r30463107, r30463108, r30463109, r30463110, r30463111, r30463112, r30463113, r30463114, r30463115, r30463116, r30463117, r30463118, r30463119, r30463120;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r30463107);
        mpfr_init(r30463108);
        mpfr_init(r30463109);
        mpfr_init(r30463110);
        mpfr_init_set_str(r30463111, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30463112, "2", 10, MPFR_RNDN);
        mpfr_init(r30463113);
        mpfr_init(r30463114);
        mpfr_init(r30463115);
        mpfr_init(r30463116);
        mpfr_init(r30463117);
        mpfr_init(r30463118);
        mpfr_init(r30463119);
        mpfr_init(r30463120);
}

double f_dm(double k, double n) {
        mpfr_set_d(r30463107, n, MPFR_RNDN);
        mpfr_const_pi(r30463108, MPFR_RNDN);
        mpfr_add(r30463109, r30463108, r30463108, MPFR_RNDN);
        mpfr_mul(r30463110, r30463107, r30463109, MPFR_RNDN);
        ;
        ;
        mpfr_div(r30463113, r30463111, r30463112, MPFR_RNDN);
        mpfr_pow(r30463114, r30463110, r30463113, MPFR_RNDN);
        mpfr_set_d(r30463115, k, MPFR_RNDN);
        mpfr_sqrt(r30463116, r30463115, MPFR_RNDN);
        mpfr_div(r30463117, r30463115, r30463112, MPFR_RNDN);
        mpfr_pow(r30463118, r30463110, r30463117, MPFR_RNDN);
        mpfr_mul(r30463119, r30463116, r30463118, MPFR_RNDN);
        mpfr_div(r30463120, r30463114, r30463119, MPFR_RNDN);
        return mpfr_get_d(r30463120, MPFR_RNDN);
}

