#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 r9217 = 1;
        float r9218 = k;
        float r9219 = sqrt(r9218);
        float r9220 = r9217 / r9219;
        float r9221 = 2;
        float r9222 = atan2(1.0, 0.0);
        float r9223 = r9221 * r9222;
        float r9224 = n;
        float r9225 = r9223 * r9224;
        float r9226 = r9217 - r9218;
        float r9227 = r9226 / r9221;
        float r9228 = pow(r9225, r9227);
        float r9229 = r9220 * r9228;
        return r9229;
}

double f_id(double k, double n) {
        double r9230 = 1;
        double r9231 = k;
        double r9232 = sqrt(r9231);
        double r9233 = r9230 / r9232;
        double r9234 = 2;
        double r9235 = atan2(1.0, 0.0);
        double r9236 = r9234 * r9235;
        double r9237 = n;
        double r9238 = r9236 * r9237;
        double r9239 = r9230 - r9231;
        double r9240 = r9239 / r9234;
        double r9241 = pow(r9238, r9240);
        double r9242 = r9233 * r9241;
        return r9242;
}


double f_of(float k, float n) {
        float r9243 = n;
        float r9244 = atan2(1.0, 0.0);
        float r9245 = r9243 * r9244;
        float r9246 = sqrt(r9245);
        float r9247 = r9246 * r9246;
        float r9248 = 2;
        float r9249 = r9247 * r9248;
        float r9250 = 1;
        float r9251 = r9250 / r9248;
        float r9252 = pow(r9249, r9251);
        float r9253 = r9245 * r9248;
        float r9254 = k;
        float r9255 = r9254 / r9248;
        float r9256 = pow(r9253, r9255);
        float r9257 = r9252 / r9256;
        float r9258 = sqrt(r9254);
        float r9259 = r9257 / r9258;
        return r9259;
}

double f_od(double k, double n) {
        double r9260 = n;
        double r9261 = atan2(1.0, 0.0);
        double r9262 = r9260 * r9261;
        double r9263 = sqrt(r9262);
        double r9264 = r9263 * r9263;
        double r9265 = 2;
        double r9266 = r9264 * r9265;
        double r9267 = 1;
        double r9268 = r9267 / r9265;
        double r9269 = pow(r9266, r9268);
        double r9270 = r9262 * r9265;
        double r9271 = k;
        double r9272 = r9271 / r9265;
        double r9273 = pow(r9270, r9272);
        double r9274 = r9269 / r9273;
        double r9275 = sqrt(r9271);
        double r9276 = r9274 / r9275;
        return r9276;
}

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 r9277, r9278, r9279, r9280, r9281, r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9277, "1", 10, MPFR_RNDN);
        mpfr_init(r9278);
        mpfr_init(r9279);
        mpfr_init(r9280);
        mpfr_init_set_str(r9281, "2", 10, MPFR_RNDN);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init(r9289);
}

double f_im(double k, double n) {
        ;
        mpfr_set_d(r9278, k, MPFR_RNDN);
        mpfr_sqrt(r9279, r9278, MPFR_RNDN);
        mpfr_div(r9280, r9277, r9279, MPFR_RNDN);
        ;
        mpfr_const_pi(r9282, MPFR_RNDN);
        mpfr_mul(r9283, r9281, r9282, MPFR_RNDN);
        mpfr_set_d(r9284, n, MPFR_RNDN);
        mpfr_mul(r9285, r9283, r9284, MPFR_RNDN);
        mpfr_sub(r9286, r9277, r9278, MPFR_RNDN);
        mpfr_div(r9287, r9286, r9281, MPFR_RNDN);
        mpfr_pow(r9288, r9285, r9287, MPFR_RNDN);
        mpfr_mul(r9289, r9280, r9288, MPFR_RNDN);
        return mpfr_get_d(r9289, MPFR_RNDN);
}

static mpfr_t r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301, r9302, r9303, r9304, r9305, r9306;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init_set_str(r9295, "2", 10, MPFR_RNDN);
        mpfr_init(r9296);
        mpfr_init_set_str(r9297, "1", 10, MPFR_RNDN);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
}

double f_fm(double k, double n) {
        mpfr_set_d(r9290, n, MPFR_RNDN);
        mpfr_const_pi(r9291, MPFR_RNDN);
        mpfr_mul(r9292, r9290, r9291, MPFR_RNDN);
        mpfr_sqrt(r9293, r9292, MPFR_RNDN);
        mpfr_mul(r9294, r9293, r9293, MPFR_RNDN);
        ;
        mpfr_mul(r9296, r9294, r9295, MPFR_RNDN);
        ;
        mpfr_div(r9298, r9297, r9295, MPFR_RNDN);
        mpfr_pow(r9299, r9296, r9298, MPFR_RNDN);
        mpfr_mul(r9300, r9292, r9295, MPFR_RNDN);
        mpfr_set_d(r9301, k, MPFR_RNDN);
        mpfr_div(r9302, r9301, r9295, MPFR_RNDN);
        mpfr_pow(r9303, r9300, r9302, MPFR_RNDN);
        mpfr_div(r9304, r9299, r9303, MPFR_RNDN);
        mpfr_sqrt(r9305, r9301, MPFR_RNDN);
        mpfr_div(r9306, r9304, r9305, MPFR_RNDN);
        return mpfr_get_d(r9306, MPFR_RNDN);
}

static mpfr_t r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316, r9317, r9318, r9319, r9320, r9321, r9322, r9323;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9307);
        mpfr_init(r9308);
        mpfr_init(r9309);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init_set_str(r9312, "2", 10, MPFR_RNDN);
        mpfr_init(r9313);
        mpfr_init_set_str(r9314, "1", 10, MPFR_RNDN);
        mpfr_init(r9315);
        mpfr_init(r9316);
        mpfr_init(r9317);
        mpfr_init(r9318);
        mpfr_init(r9319);
        mpfr_init(r9320);
        mpfr_init(r9321);
        mpfr_init(r9322);
        mpfr_init(r9323);
}

double f_dm(double k, double n) {
        mpfr_set_d(r9307, n, MPFR_RNDN);
        mpfr_const_pi(r9308, MPFR_RNDN);
        mpfr_mul(r9309, r9307, r9308, MPFR_RNDN);
        mpfr_sqrt(r9310, r9309, MPFR_RNDN);
        mpfr_mul(r9311, r9310, r9310, MPFR_RNDN);
        ;
        mpfr_mul(r9313, r9311, r9312, MPFR_RNDN);
        ;
        mpfr_div(r9315, r9314, r9312, MPFR_RNDN);
        mpfr_pow(r9316, r9313, r9315, MPFR_RNDN);
        mpfr_mul(r9317, r9309, r9312, MPFR_RNDN);
        mpfr_set_d(r9318, k, MPFR_RNDN);
        mpfr_div(r9319, r9318, r9312, MPFR_RNDN);
        mpfr_pow(r9320, r9317, r9319, MPFR_RNDN);
        mpfr_div(r9321, r9316, r9320, MPFR_RNDN);
        mpfr_sqrt(r9322, r9318, MPFR_RNDN);
        mpfr_div(r9323, r9321, r9322, MPFR_RNDN);
        return mpfr_get_d(r9323, MPFR_RNDN);
}

