#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 r28167 = 1;
        float r28168 = k;
        float r28169 = sqrt(r28168);
        float r28170 = r28167 / r28169;
        float r28171 = 2;
        float r28172 = atan2(1.0, 0.0);
        float r28173 = r28171 * r28172;
        float r28174 = n;
        float r28175 = r28173 * r28174;
        float r28176 = r28167 - r28168;
        float r28177 = r28176 / r28171;
        float r28178 = pow(r28175, r28177);
        float r28179 = r28170 * r28178;
        return r28179;
}

double f_id(double k, double n) {
        double r28180 = 1;
        double r28181 = k;
        double r28182 = sqrt(r28181);
        double r28183 = r28180 / r28182;
        double r28184 = 2;
        double r28185 = atan2(1.0, 0.0);
        double r28186 = r28184 * r28185;
        double r28187 = n;
        double r28188 = r28186 * r28187;
        double r28189 = r28180 - r28181;
        double r28190 = r28189 / r28184;
        double r28191 = pow(r28188, r28190);
        double r28192 = r28183 * r28191;
        return r28192;
}


double f_of(float k, float n) {
        float r28193 = n;
        float r28194 = r28193 + r28193;
        float r28195 = sqrt(r28194);
        float r28196 = 2;
        float r28197 = sqrt(r28196);
        float r28198 = sqrt(r28193);
        float r28199 = atan2(1.0, 0.0);
        float r28200 = r28198 * r28199;
        float r28201 = r28197 * r28200;
        float r28202 = r28195 * r28201;
        float r28203 = 1;
        float r28204 = k;
        float r28205 = r28203 - r28204;
        float r28206 = r28205 / r28196;
        float r28207 = pow(r28202, r28206);
        float r28208 = sqrt(r28204);
        float r28209 = r28207 / r28208;
        return r28209;
}

double f_od(double k, double n) {
        double r28210 = n;
        double r28211 = r28210 + r28210;
        double r28212 = sqrt(r28211);
        double r28213 = 2;
        double r28214 = sqrt(r28213);
        double r28215 = sqrt(r28210);
        double r28216 = atan2(1.0, 0.0);
        double r28217 = r28215 * r28216;
        double r28218 = r28214 * r28217;
        double r28219 = r28212 * r28218;
        double r28220 = 1;
        double r28221 = k;
        double r28222 = r28220 - r28221;
        double r28223 = r28222 / r28213;
        double r28224 = pow(r28219, r28223);
        double r28225 = sqrt(r28221);
        double r28226 = r28224 / r28225;
        return r28226;
}

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 r28227, r28228, r28229, r28230, r28231, r28232, r28233, r28234, r28235, r28236, r28237, r28238, r28239;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r28227, "1", 10, MPFR_RNDN);
        mpfr_init(r28228);
        mpfr_init(r28229);
        mpfr_init(r28230);
        mpfr_init_set_str(r28231, "2", 10, MPFR_RNDN);
        mpfr_init(r28232);
        mpfr_init(r28233);
        mpfr_init(r28234);
        mpfr_init(r28235);
        mpfr_init(r28236);
        mpfr_init(r28237);
        mpfr_init(r28238);
        mpfr_init(r28239);
}

double f_im(double k, double n) {
        ;
        mpfr_set_d(r28228, k, MPFR_RNDN);
        mpfr_sqrt(r28229, r28228, MPFR_RNDN);
        mpfr_div(r28230, r28227, r28229, MPFR_RNDN);
        ;
        mpfr_const_pi(r28232, MPFR_RNDN);
        mpfr_mul(r28233, r28231, r28232, MPFR_RNDN);
        mpfr_set_d(r28234, n, MPFR_RNDN);
        mpfr_mul(r28235, r28233, r28234, MPFR_RNDN);
        mpfr_sub(r28236, r28227, r28228, MPFR_RNDN);
        mpfr_div(r28237, r28236, r28231, MPFR_RNDN);
        mpfr_pow(r28238, r28235, r28237, MPFR_RNDN);
        mpfr_mul(r28239, r28230, r28238, MPFR_RNDN);
        return mpfr_get_d(r28239, MPFR_RNDN);
}

static mpfr_t r28240, r28241, r28242, r28243, r28244, r28245, r28246, r28247, r28248, r28249, r28250, r28251, r28252, r28253, r28254, r28255, r28256;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28240);
        mpfr_init(r28241);
        mpfr_init(r28242);
        mpfr_init_set_str(r28243, "2", 10, MPFR_RNDN);
        mpfr_init(r28244);
        mpfr_init(r28245);
        mpfr_init(r28246);
        mpfr_init(r28247);
        mpfr_init(r28248);
        mpfr_init(r28249);
        mpfr_init_set_str(r28250, "1", 10, MPFR_RNDN);
        mpfr_init(r28251);
        mpfr_init(r28252);
        mpfr_init(r28253);
        mpfr_init(r28254);
        mpfr_init(r28255);
        mpfr_init(r28256);
}

double f_fm(double k, double n) {
        mpfr_set_d(r28240, n, MPFR_RNDN);
        mpfr_add(r28241, r28240, r28240, MPFR_RNDN);
        mpfr_sqrt(r28242, r28241, MPFR_RNDN);
        ;
        mpfr_sqrt(r28244, r28243, MPFR_RNDN);
        mpfr_sqrt(r28245, r28240, MPFR_RNDN);
        mpfr_const_pi(r28246, MPFR_RNDN);
        mpfr_mul(r28247, r28245, r28246, MPFR_RNDN);
        mpfr_mul(r28248, r28244, r28247, MPFR_RNDN);
        mpfr_mul(r28249, r28242, r28248, MPFR_RNDN);
        ;
        mpfr_set_d(r28251, k, MPFR_RNDN);
        mpfr_sub(r28252, r28250, r28251, MPFR_RNDN);
        mpfr_div(r28253, r28252, r28243, MPFR_RNDN);
        mpfr_pow(r28254, r28249, r28253, MPFR_RNDN);
        mpfr_sqrt(r28255, r28251, MPFR_RNDN);
        mpfr_div(r28256, r28254, r28255, MPFR_RNDN);
        return mpfr_get_d(r28256, MPFR_RNDN);
}

static mpfr_t r28257, r28258, r28259, r28260, r28261, r28262, r28263, r28264, r28265, r28266, r28267, r28268, r28269, r28270, r28271, r28272, r28273;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28257);
        mpfr_init(r28258);
        mpfr_init(r28259);
        mpfr_init_set_str(r28260, "2", 10, MPFR_RNDN);
        mpfr_init(r28261);
        mpfr_init(r28262);
        mpfr_init(r28263);
        mpfr_init(r28264);
        mpfr_init(r28265);
        mpfr_init(r28266);
        mpfr_init_set_str(r28267, "1", 10, MPFR_RNDN);
        mpfr_init(r28268);
        mpfr_init(r28269);
        mpfr_init(r28270);
        mpfr_init(r28271);
        mpfr_init(r28272);
        mpfr_init(r28273);
}

double f_dm(double k, double n) {
        mpfr_set_d(r28257, n, MPFR_RNDN);
        mpfr_add(r28258, r28257, r28257, MPFR_RNDN);
        mpfr_sqrt(r28259, r28258, MPFR_RNDN);
        ;
        mpfr_sqrt(r28261, r28260, MPFR_RNDN);
        mpfr_sqrt(r28262, r28257, MPFR_RNDN);
        mpfr_const_pi(r28263, MPFR_RNDN);
        mpfr_mul(r28264, r28262, r28263, MPFR_RNDN);
        mpfr_mul(r28265, r28261, r28264, MPFR_RNDN);
        mpfr_mul(r28266, r28259, r28265, MPFR_RNDN);
        ;
        mpfr_set_d(r28268, k, MPFR_RNDN);
        mpfr_sub(r28269, r28267, r28268, MPFR_RNDN);
        mpfr_div(r28270, r28269, r28260, MPFR_RNDN);
        mpfr_pow(r28271, r28266, r28270, MPFR_RNDN);
        mpfr_sqrt(r28272, r28268, MPFR_RNDN);
        mpfr_div(r28273, r28271, r28272, MPFR_RNDN);
        return mpfr_get_d(r28273, MPFR_RNDN);
}

