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

char *name = "Toniolo and Linder, Equation (13)";

double f_if(float n, float U, float t, float l, float Om, float U_) {
        float r19108 = 2.0f;
        float r19109 = n;
        float r19110 = r19108 * r19109;
        float r19111 = U;
        float r19112 = r19110 * r19111;
        float r19113 = t;
        float r19114 = l;
        float r19115 = r19114 * r19114;
        float r19116 = Om;
        float r19117 = r19115 / r19116;
        float r19118 = r19108 * r19117;
        float r19119 = r19113 - r19118;
        float r19120 = r19114 / r19116;
        float r19121 = r19120 * r19120;
        float r19122 = r19109 * r19121;
        float r19123 = U_;
        float r19124 = r19111 - r19123;
        float r19125 = r19122 * r19124;
        float r19126 = r19119 - r19125;
        float r19127 = r19112 * r19126;
        float r19128 = sqrt(r19127);
        return r19128;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r19129 = 2.0;
        double r19130 = n;
        double r19131 = r19129 * r19130;
        double r19132 = U;
        double r19133 = r19131 * r19132;
        double r19134 = t;
        double r19135 = l;
        double r19136 = r19135 * r19135;
        double r19137 = Om;
        double r19138 = r19136 / r19137;
        double r19139 = r19129 * r19138;
        double r19140 = r19134 - r19139;
        double r19141 = r19135 / r19137;
        double r19142 = r19141 * r19141;
        double r19143 = r19130 * r19142;
        double r19144 = U_;
        double r19145 = r19132 - r19144;
        double r19146 = r19143 * r19145;
        double r19147 = r19140 - r19146;
        double r19148 = r19133 * r19147;
        double r19149 = sqrt(r19148);
        return r19149;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r19150 = n;
        float r19151 = 1.5063727889175555e-275f;
        bool r19152 = r19150 <= r19151;
        float r19153 = 2.0f;
        float r19154 = r19153 * r19150;
        float r19155 = U;
        float r19156 = t;
        float r19157 = l;
        float r19158 = Om;
        float r19159 = r19158 / r19157;
        float r19160 = r19157 / r19159;
        float r19161 = r19153 * r19160;
        float r19162 = r19156 - r19161;
        float r19163 = r19157 / r19158;
        float r19164 = r19163 * r19163;
        float r19165 = r19150 * r19164;
        float r19166 = U_;
        float r19167 = r19155 - r19166;
        float r19168 = r19165 * r19167;
        float r19169 = r19162 - r19168;
        float r19170 = r19155 * r19169;
        float r19171 = r19154 * r19170;
        float r19172 = sqrt(r19171);
        float r19173 = sqrt(r19154);
        float r19174 = sqrt(r19170);
        float r19175 = r19173 * r19174;
        float r19176 = r19152 ? r19172 : r19175;
        return r19176;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r19177 = n;
        double r19178 = 1.5063727889175555e-275;
        bool r19179 = r19177 <= r19178;
        double r19180 = 2.0;
        double r19181 = r19180 * r19177;
        double r19182 = U;
        double r19183 = t;
        double r19184 = l;
        double r19185 = Om;
        double r19186 = r19185 / r19184;
        double r19187 = r19184 / r19186;
        double r19188 = r19180 * r19187;
        double r19189 = r19183 - r19188;
        double r19190 = r19184 / r19185;
        double r19191 = r19190 * r19190;
        double r19192 = r19177 * r19191;
        double r19193 = U_;
        double r19194 = r19182 - r19193;
        double r19195 = r19192 * r19194;
        double r19196 = r19189 - r19195;
        double r19197 = r19182 * r19196;
        double r19198 = r19181 * r19197;
        double r19199 = sqrt(r19198);
        double r19200 = sqrt(r19181);
        double r19201 = sqrt(r19197);
        double r19202 = r19200 * r19201;
        double r19203 = r19179 ? r19199 : r19202;
        return r19203;
}

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 r19204, r19205, r19206, r19207, r19208, r19209, r19210, r19211, r19212, r19213, r19214, r19215, r19216, r19217, r19218, r19219, r19220, r19221, r19222, r19223, r19224;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r19204, "2", 10, MPFR_RNDN);
        mpfr_init(r19205);
        mpfr_init(r19206);
        mpfr_init(r19207);
        mpfr_init(r19208);
        mpfr_init(r19209);
        mpfr_init(r19210);
        mpfr_init(r19211);
        mpfr_init(r19212);
        mpfr_init(r19213);
        mpfr_init(r19214);
        mpfr_init(r19215);
        mpfr_init(r19216);
        mpfr_init(r19217);
        mpfr_init(r19218);
        mpfr_init(r19219);
        mpfr_init(r19220);
        mpfr_init(r19221);
        mpfr_init(r19222);
        mpfr_init(r19223);
        mpfr_init(r19224);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r19205, n, MPFR_RNDN);
        mpfr_mul(r19206, r19204, r19205, MPFR_RNDN);
        mpfr_set_d(r19207, U, MPFR_RNDN);
        mpfr_mul(r19208, r19206, r19207, MPFR_RNDN);
        mpfr_set_d(r19209, t, MPFR_RNDN);
        mpfr_set_d(r19210, l, MPFR_RNDN);
        mpfr_sqr(r19211, r19210, MPFR_RNDN);
        mpfr_set_d(r19212, Om, MPFR_RNDN);
        mpfr_div(r19213, r19211, r19212, MPFR_RNDN);
        mpfr_mul(r19214, r19204, r19213, MPFR_RNDN);
        mpfr_sub(r19215, r19209, r19214, MPFR_RNDN);
        mpfr_div(r19216, r19210, r19212, MPFR_RNDN);
        mpfr_sqr(r19217, r19216, MPFR_RNDN);
        mpfr_mul(r19218, r19205, r19217, MPFR_RNDN);
        mpfr_set_d(r19219, U_, MPFR_RNDN);
        mpfr_sub(r19220, r19207, r19219, MPFR_RNDN);
        mpfr_mul(r19221, r19218, r19220, MPFR_RNDN);
        mpfr_sub(r19222, r19215, r19221, MPFR_RNDN);
        mpfr_mul(r19223, r19208, r19222, MPFR_RNDN);
        mpfr_sqrt(r19224, r19223, MPFR_RNDN);
        return mpfr_get_d(r19224, MPFR_RNDN);
}

static mpfr_t r19225, r19226, r19227, r19228, r19229, r19230, r19231, r19232, r19233, r19234, r19235, r19236, r19237, r19238, r19239, r19240, r19241, r19242, r19243, r19244, r19245, r19246, r19247, r19248, r19249, r19250, r19251;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19225);
        mpfr_init_set_str(r19226, "1.5063727889175555e-275", 10, MPFR_RNDN);
        mpfr_init(r19227);
        mpfr_init_set_str(r19228, "2", 10, MPFR_RNDN);
        mpfr_init(r19229);
        mpfr_init(r19230);
        mpfr_init(r19231);
        mpfr_init(r19232);
        mpfr_init(r19233);
        mpfr_init(r19234);
        mpfr_init(r19235);
        mpfr_init(r19236);
        mpfr_init(r19237);
        mpfr_init(r19238);
        mpfr_init(r19239);
        mpfr_init(r19240);
        mpfr_init(r19241);
        mpfr_init(r19242);
        mpfr_init(r19243);
        mpfr_init(r19244);
        mpfr_init(r19245);
        mpfr_init(r19246);
        mpfr_init(r19247);
        mpfr_init(r19248);
        mpfr_init(r19249);
        mpfr_init(r19250);
        mpfr_init(r19251);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r19225, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19227, mpfr_cmp(r19225, r19226) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r19229, r19228, r19225, MPFR_RNDN);
        mpfr_set_d(r19230, U, MPFR_RNDN);
        mpfr_set_d(r19231, t, MPFR_RNDN);
        mpfr_set_d(r19232, l, MPFR_RNDN);
        mpfr_set_d(r19233, Om, MPFR_RNDN);
        mpfr_div(r19234, r19233, r19232, MPFR_RNDN);
        mpfr_div(r19235, r19232, r19234, MPFR_RNDN);
        mpfr_mul(r19236, r19228, r19235, MPFR_RNDN);
        mpfr_sub(r19237, r19231, r19236, MPFR_RNDN);
        mpfr_div(r19238, r19232, r19233, MPFR_RNDN);
        mpfr_sqr(r19239, r19238, MPFR_RNDN);
        mpfr_mul(r19240, r19225, r19239, MPFR_RNDN);
        mpfr_set_d(r19241, U_, MPFR_RNDN);
        mpfr_sub(r19242, r19230, r19241, MPFR_RNDN);
        mpfr_mul(r19243, r19240, r19242, MPFR_RNDN);
        mpfr_sub(r19244, r19237, r19243, MPFR_RNDN);
        mpfr_mul(r19245, r19230, r19244, MPFR_RNDN);
        mpfr_mul(r19246, r19229, r19245, MPFR_RNDN);
        mpfr_sqrt(r19247, r19246, MPFR_RNDN);
        mpfr_sqrt(r19248, r19229, MPFR_RNDN);
        mpfr_sqrt(r19249, r19245, MPFR_RNDN);
        mpfr_mul(r19250, r19248, r19249, MPFR_RNDN);
        if (mpfr_get_si(r19227, MPFR_RNDN)) { mpfr_set(r19251, r19247, MPFR_RNDN); } else { mpfr_set(r19251, r19250, MPFR_RNDN); };
        return mpfr_get_d(r19251, MPFR_RNDN);
}

static mpfr_t r19252, r19253, r19254, r19255, r19256, r19257, r19258, r19259, r19260, r19261, r19262, r19263, r19264, r19265, r19266, r19267, r19268, r19269, r19270, r19271, r19272, r19273, r19274, r19275, r19276, r19277, r19278;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19252);
        mpfr_init_set_str(r19253, "1.5063727889175555e-275", 10, MPFR_RNDN);
        mpfr_init(r19254);
        mpfr_init_set_str(r19255, "2", 10, MPFR_RNDN);
        mpfr_init(r19256);
        mpfr_init(r19257);
        mpfr_init(r19258);
        mpfr_init(r19259);
        mpfr_init(r19260);
        mpfr_init(r19261);
        mpfr_init(r19262);
        mpfr_init(r19263);
        mpfr_init(r19264);
        mpfr_init(r19265);
        mpfr_init(r19266);
        mpfr_init(r19267);
        mpfr_init(r19268);
        mpfr_init(r19269);
        mpfr_init(r19270);
        mpfr_init(r19271);
        mpfr_init(r19272);
        mpfr_init(r19273);
        mpfr_init(r19274);
        mpfr_init(r19275);
        mpfr_init(r19276);
        mpfr_init(r19277);
        mpfr_init(r19278);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r19252, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19254, mpfr_cmp(r19252, r19253) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r19256, r19255, r19252, MPFR_RNDN);
        mpfr_set_d(r19257, U, MPFR_RNDN);
        mpfr_set_d(r19258, t, MPFR_RNDN);
        mpfr_set_d(r19259, l, MPFR_RNDN);
        mpfr_set_d(r19260, Om, MPFR_RNDN);
        mpfr_div(r19261, r19260, r19259, MPFR_RNDN);
        mpfr_div(r19262, r19259, r19261, MPFR_RNDN);
        mpfr_mul(r19263, r19255, r19262, MPFR_RNDN);
        mpfr_sub(r19264, r19258, r19263, MPFR_RNDN);
        mpfr_div(r19265, r19259, r19260, MPFR_RNDN);
        mpfr_sqr(r19266, r19265, MPFR_RNDN);
        mpfr_mul(r19267, r19252, r19266, MPFR_RNDN);
        mpfr_set_d(r19268, U_, MPFR_RNDN);
        mpfr_sub(r19269, r19257, r19268, MPFR_RNDN);
        mpfr_mul(r19270, r19267, r19269, MPFR_RNDN);
        mpfr_sub(r19271, r19264, r19270, MPFR_RNDN);
        mpfr_mul(r19272, r19257, r19271, MPFR_RNDN);
        mpfr_mul(r19273, r19256, r19272, MPFR_RNDN);
        mpfr_sqrt(r19274, r19273, MPFR_RNDN);
        mpfr_sqrt(r19275, r19256, MPFR_RNDN);
        mpfr_sqrt(r19276, r19272, MPFR_RNDN);
        mpfr_mul(r19277, r19275, r19276, MPFR_RNDN);
        if (mpfr_get_si(r19254, MPFR_RNDN)) { mpfr_set(r19278, r19274, MPFR_RNDN); } else { mpfr_set(r19278, r19277, MPFR_RNDN); };
        return mpfr_get_d(r19278, MPFR_RNDN);
}

