#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 r25220 = 2;
        float r25221 = n;
        float r25222 = r25220 * r25221;
        float r25223 = U;
        float r25224 = r25222 * r25223;
        float r25225 = t;
        float r25226 = l;
        float r25227 = r25226 * r25226;
        float r25228 = Om;
        float r25229 = r25227 / r25228;
        float r25230 = r25220 * r25229;
        float r25231 = r25225 - r25230;
        float r25232 = r25226 / r25228;
        float r25233 = pow(r25232, r25220);
        float r25234 = r25221 * r25233;
        float r25235 = U_;
        float r25236 = r25223 - r25235;
        float r25237 = r25234 * r25236;
        float r25238 = r25231 - r25237;
        float r25239 = r25224 * r25238;
        float r25240 = sqrt(r25239);
        return r25240;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r25241 = 2;
        double r25242 = n;
        double r25243 = r25241 * r25242;
        double r25244 = U;
        double r25245 = r25243 * r25244;
        double r25246 = t;
        double r25247 = l;
        double r25248 = r25247 * r25247;
        double r25249 = Om;
        double r25250 = r25248 / r25249;
        double r25251 = r25241 * r25250;
        double r25252 = r25246 - r25251;
        double r25253 = r25247 / r25249;
        double r25254 = pow(r25253, r25241);
        double r25255 = r25242 * r25254;
        double r25256 = U_;
        double r25257 = r25244 - r25256;
        double r25258 = r25255 * r25257;
        double r25259 = r25252 - r25258;
        double r25260 = r25245 * r25259;
        double r25261 = sqrt(r25260);
        return r25261;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r25262 = 2;
        float r25263 = n;
        float r25264 = r25262 * r25263;
        float r25265 = U;
        float r25266 = r25264 * r25265;
        float r25267 = sqrt(r25266);
        float r25268 = t;
        float r25269 = l;
        float r25270 = r25269 * r25269;
        float r25271 = Om;
        float r25272 = r25270 / r25271;
        float r25273 = r25262 * r25272;
        float r25274 = r25268 - r25273;
        float r25275 = r25269 / r25271;
        float r25276 = pow(r25275, r25262);
        float r25277 = r25263 * r25276;
        float r25278 = U_;
        float r25279 = r25265 - r25278;
        float r25280 = r25277 * r25279;
        float r25281 = r25274 - r25280;
        float r25282 = sqrt(r25281);
        float r25283 = r25267 * r25282;
        float r25284 = 4.695275167844759e-265;
        bool r25285 = r25283 <= r25284;
        float r25286 = r25271 / r25269;
        float r25287 = r25269 / r25286;
        float r25288 = r25262 * r25287;
        float r25289 = r25268 - r25288;
        float r25290 = r25271 / r25263;
        float r25291 = r25269 / r25290;
        float r25292 = cbrt(r25275);
        float r25293 = r25291 * r25292;
        float r25294 = pow(r25292, r25262);
        float r25295 = r25293 * r25294;
        float r25296 = r25295 * r25279;
        float r25297 = r25289 - r25296;
        float r25298 = r25265 * r25297;
        float r25299 = r25264 * r25298;
        float r25300 = sqrt(r25299);
        float r25301 = 3.0174277831814187e+260;
        bool r25302 = r25283 <= r25301;
        float r25303 = r25302 ? r25283 : r25300;
        float r25304 = r25285 ? r25300 : r25303;
        return r25304;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r25305 = 2;
        double r25306 = n;
        double r25307 = r25305 * r25306;
        double r25308 = U;
        double r25309 = r25307 * r25308;
        double r25310 = sqrt(r25309);
        double r25311 = t;
        double r25312 = l;
        double r25313 = r25312 * r25312;
        double r25314 = Om;
        double r25315 = r25313 / r25314;
        double r25316 = r25305 * r25315;
        double r25317 = r25311 - r25316;
        double r25318 = r25312 / r25314;
        double r25319 = pow(r25318, r25305);
        double r25320 = r25306 * r25319;
        double r25321 = U_;
        double r25322 = r25308 - r25321;
        double r25323 = r25320 * r25322;
        double r25324 = r25317 - r25323;
        double r25325 = sqrt(r25324);
        double r25326 = r25310 * r25325;
        double r25327 = 4.695275167844759e-265;
        bool r25328 = r25326 <= r25327;
        double r25329 = r25314 / r25312;
        double r25330 = r25312 / r25329;
        double r25331 = r25305 * r25330;
        double r25332 = r25311 - r25331;
        double r25333 = r25314 / r25306;
        double r25334 = r25312 / r25333;
        double r25335 = cbrt(r25318);
        double r25336 = r25334 * r25335;
        double r25337 = pow(r25335, r25305);
        double r25338 = r25336 * r25337;
        double r25339 = r25338 * r25322;
        double r25340 = r25332 - r25339;
        double r25341 = r25308 * r25340;
        double r25342 = r25307 * r25341;
        double r25343 = sqrt(r25342);
        double r25344 = 3.0174277831814187e+260;
        bool r25345 = r25326 <= r25344;
        double r25346 = r25345 ? r25326 : r25343;
        double r25347 = r25328 ? r25343 : r25346;
        return r25347;
}

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 r25348, r25349, r25350, r25351, r25352, r25353, r25354, r25355, r25356, r25357, r25358, r25359, r25360, r25361, r25362, r25363, r25364, r25365, r25366, r25367, r25368;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25348, "2", 10, MPFR_RNDN);
        mpfr_init(r25349);
        mpfr_init(r25350);
        mpfr_init(r25351);
        mpfr_init(r25352);
        mpfr_init(r25353);
        mpfr_init(r25354);
        mpfr_init(r25355);
        mpfr_init(r25356);
        mpfr_init(r25357);
        mpfr_init(r25358);
        mpfr_init(r25359);
        mpfr_init(r25360);
        mpfr_init(r25361);
        mpfr_init(r25362);
        mpfr_init(r25363);
        mpfr_init(r25364);
        mpfr_init(r25365);
        mpfr_init(r25366);
        mpfr_init(r25367);
        mpfr_init(r25368);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r25349, n, MPFR_RNDN);
        mpfr_mul(r25350, r25348, r25349, MPFR_RNDN);
        mpfr_set_d(r25351, U, MPFR_RNDN);
        mpfr_mul(r25352, r25350, r25351, MPFR_RNDN);
        mpfr_set_d(r25353, t, MPFR_RNDN);
        mpfr_set_d(r25354, l, MPFR_RNDN);
        mpfr_mul(r25355, r25354, r25354, MPFR_RNDN);
        mpfr_set_d(r25356, Om, MPFR_RNDN);
        mpfr_div(r25357, r25355, r25356, MPFR_RNDN);
        mpfr_mul(r25358, r25348, r25357, MPFR_RNDN);
        mpfr_sub(r25359, r25353, r25358, MPFR_RNDN);
        mpfr_div(r25360, r25354, r25356, MPFR_RNDN);
        mpfr_pow(r25361, r25360, r25348, MPFR_RNDN);
        mpfr_mul(r25362, r25349, r25361, MPFR_RNDN);
        mpfr_set_d(r25363, U_, MPFR_RNDN);
        mpfr_sub(r25364, r25351, r25363, MPFR_RNDN);
        mpfr_mul(r25365, r25362, r25364, MPFR_RNDN);
        mpfr_sub(r25366, r25359, r25365, MPFR_RNDN);
        mpfr_mul(r25367, r25352, r25366, MPFR_RNDN);
        mpfr_sqrt(r25368, r25367, MPFR_RNDN);
        return mpfr_get_d(r25368, MPFR_RNDN);
}

static mpfr_t r25369, r25370, r25371, r25372, r25373, r25374, r25375, r25376, r25377, r25378, r25379, r25380, r25381, r25382, r25383, r25384, r25385, r25386, r25387, r25388, r25389, r25390, r25391, r25392, r25393, r25394, r25395, r25396, r25397, r25398, r25399, r25400, r25401, r25402, r25403, r25404, r25405, r25406, r25407, r25408, r25409, r25410, r25411;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25369, "2", 10, MPFR_RNDN);
        mpfr_init(r25370);
        mpfr_init(r25371);
        mpfr_init(r25372);
        mpfr_init(r25373);
        mpfr_init(r25374);
        mpfr_init(r25375);
        mpfr_init(r25376);
        mpfr_init(r25377);
        mpfr_init(r25378);
        mpfr_init(r25379);
        mpfr_init(r25380);
        mpfr_init(r25381);
        mpfr_init(r25382);
        mpfr_init(r25383);
        mpfr_init(r25384);
        mpfr_init(r25385);
        mpfr_init(r25386);
        mpfr_init(r25387);
        mpfr_init(r25388);
        mpfr_init(r25389);
        mpfr_init(r25390);
        mpfr_init_set_str(r25391, "4.695275167844759e-265", 10, MPFR_RNDN);
        mpfr_init(r25392);
        mpfr_init(r25393);
        mpfr_init(r25394);
        mpfr_init(r25395);
        mpfr_init(r25396);
        mpfr_init(r25397);
        mpfr_init(r25398);
        mpfr_init(r25399);
        mpfr_init(r25400);
        mpfr_init(r25401);
        mpfr_init(r25402);
        mpfr_init(r25403);
        mpfr_init(r25404);
        mpfr_init(r25405);
        mpfr_init(r25406);
        mpfr_init(r25407);
        mpfr_init_set_str(r25408, "3.0174277831814187e+260", 10, MPFR_RNDN);
        mpfr_init(r25409);
        mpfr_init(r25410);
        mpfr_init(r25411);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r25370, n, MPFR_RNDN);
        mpfr_mul(r25371, r25369, r25370, MPFR_RNDN);
        mpfr_set_d(r25372, U, MPFR_RNDN);
        mpfr_mul(r25373, r25371, r25372, MPFR_RNDN);
        mpfr_sqrt(r25374, r25373, MPFR_RNDN);
        mpfr_set_d(r25375, t, MPFR_RNDN);
        mpfr_set_d(r25376, l, MPFR_RNDN);
        mpfr_mul(r25377, r25376, r25376, MPFR_RNDN);
        mpfr_set_d(r25378, Om, MPFR_RNDN);
        mpfr_div(r25379, r25377, r25378, MPFR_RNDN);
        mpfr_mul(r25380, r25369, r25379, MPFR_RNDN);
        mpfr_sub(r25381, r25375, r25380, MPFR_RNDN);
        mpfr_div(r25382, r25376, r25378, MPFR_RNDN);
        mpfr_pow(r25383, r25382, r25369, MPFR_RNDN);
        mpfr_mul(r25384, r25370, r25383, MPFR_RNDN);
        mpfr_set_d(r25385, U_, MPFR_RNDN);
        mpfr_sub(r25386, r25372, r25385, MPFR_RNDN);
        mpfr_mul(r25387, r25384, r25386, MPFR_RNDN);
        mpfr_sub(r25388, r25381, r25387, MPFR_RNDN);
        mpfr_sqrt(r25389, r25388, MPFR_RNDN);
        mpfr_mul(r25390, r25374, r25389, MPFR_RNDN);
        ;
        mpfr_set_si(r25392, mpfr_cmp(r25390, r25391) <= 0, MPFR_RNDN);
        mpfr_div(r25393, r25378, r25376, MPFR_RNDN);
        mpfr_div(r25394, r25376, r25393, MPFR_RNDN);
        mpfr_mul(r25395, r25369, r25394, MPFR_RNDN);
        mpfr_sub(r25396, r25375, r25395, MPFR_RNDN);
        mpfr_div(r25397, r25378, r25370, MPFR_RNDN);
        mpfr_div(r25398, r25376, r25397, MPFR_RNDN);
        mpfr_cbrt(r25399, r25382, MPFR_RNDN);
        mpfr_mul(r25400, r25398, r25399, MPFR_RNDN);
        mpfr_pow(r25401, r25399, r25369, MPFR_RNDN);
        mpfr_mul(r25402, r25400, r25401, MPFR_RNDN);
        mpfr_mul(r25403, r25402, r25386, MPFR_RNDN);
        mpfr_sub(r25404, r25396, r25403, MPFR_RNDN);
        mpfr_mul(r25405, r25372, r25404, MPFR_RNDN);
        mpfr_mul(r25406, r25371, r25405, MPFR_RNDN);
        mpfr_sqrt(r25407, r25406, MPFR_RNDN);
        ;
        mpfr_set_si(r25409, mpfr_cmp(r25390, r25408) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r25409, MPFR_RNDN)) { mpfr_set(r25410, r25390, MPFR_RNDN); } else { mpfr_set(r25410, r25407, MPFR_RNDN); };
        if (mpfr_get_si(r25392, MPFR_RNDN)) { mpfr_set(r25411, r25407, MPFR_RNDN); } else { mpfr_set(r25411, r25410, MPFR_RNDN); };
        return mpfr_get_d(r25411, MPFR_RNDN);
}

static mpfr_t r25412, r25413, r25414, r25415, r25416, r25417, r25418, r25419, r25420, r25421, r25422, r25423, r25424, r25425, r25426, r25427, r25428, r25429, r25430, r25431, r25432, r25433, r25434, r25435, r25436, r25437, r25438, r25439, r25440, r25441, r25442, r25443, r25444, r25445, r25446, r25447, r25448, r25449, r25450, r25451, r25452, r25453, r25454;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25412, "2", 10, MPFR_RNDN);
        mpfr_init(r25413);
        mpfr_init(r25414);
        mpfr_init(r25415);
        mpfr_init(r25416);
        mpfr_init(r25417);
        mpfr_init(r25418);
        mpfr_init(r25419);
        mpfr_init(r25420);
        mpfr_init(r25421);
        mpfr_init(r25422);
        mpfr_init(r25423);
        mpfr_init(r25424);
        mpfr_init(r25425);
        mpfr_init(r25426);
        mpfr_init(r25427);
        mpfr_init(r25428);
        mpfr_init(r25429);
        mpfr_init(r25430);
        mpfr_init(r25431);
        mpfr_init(r25432);
        mpfr_init(r25433);
        mpfr_init_set_str(r25434, "4.695275167844759e-265", 10, MPFR_RNDN);
        mpfr_init(r25435);
        mpfr_init(r25436);
        mpfr_init(r25437);
        mpfr_init(r25438);
        mpfr_init(r25439);
        mpfr_init(r25440);
        mpfr_init(r25441);
        mpfr_init(r25442);
        mpfr_init(r25443);
        mpfr_init(r25444);
        mpfr_init(r25445);
        mpfr_init(r25446);
        mpfr_init(r25447);
        mpfr_init(r25448);
        mpfr_init(r25449);
        mpfr_init(r25450);
        mpfr_init_set_str(r25451, "3.0174277831814187e+260", 10, MPFR_RNDN);
        mpfr_init(r25452);
        mpfr_init(r25453);
        mpfr_init(r25454);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r25413, n, MPFR_RNDN);
        mpfr_mul(r25414, r25412, r25413, MPFR_RNDN);
        mpfr_set_d(r25415, U, MPFR_RNDN);
        mpfr_mul(r25416, r25414, r25415, MPFR_RNDN);
        mpfr_sqrt(r25417, r25416, MPFR_RNDN);
        mpfr_set_d(r25418, t, MPFR_RNDN);
        mpfr_set_d(r25419, l, MPFR_RNDN);
        mpfr_mul(r25420, r25419, r25419, MPFR_RNDN);
        mpfr_set_d(r25421, Om, MPFR_RNDN);
        mpfr_div(r25422, r25420, r25421, MPFR_RNDN);
        mpfr_mul(r25423, r25412, r25422, MPFR_RNDN);
        mpfr_sub(r25424, r25418, r25423, MPFR_RNDN);
        mpfr_div(r25425, r25419, r25421, MPFR_RNDN);
        mpfr_pow(r25426, r25425, r25412, MPFR_RNDN);
        mpfr_mul(r25427, r25413, r25426, MPFR_RNDN);
        mpfr_set_d(r25428, U_, MPFR_RNDN);
        mpfr_sub(r25429, r25415, r25428, MPFR_RNDN);
        mpfr_mul(r25430, r25427, r25429, MPFR_RNDN);
        mpfr_sub(r25431, r25424, r25430, MPFR_RNDN);
        mpfr_sqrt(r25432, r25431, MPFR_RNDN);
        mpfr_mul(r25433, r25417, r25432, MPFR_RNDN);
        ;
        mpfr_set_si(r25435, mpfr_cmp(r25433, r25434) <= 0, MPFR_RNDN);
        mpfr_div(r25436, r25421, r25419, MPFR_RNDN);
        mpfr_div(r25437, r25419, r25436, MPFR_RNDN);
        mpfr_mul(r25438, r25412, r25437, MPFR_RNDN);
        mpfr_sub(r25439, r25418, r25438, MPFR_RNDN);
        mpfr_div(r25440, r25421, r25413, MPFR_RNDN);
        mpfr_div(r25441, r25419, r25440, MPFR_RNDN);
        mpfr_cbrt(r25442, r25425, MPFR_RNDN);
        mpfr_mul(r25443, r25441, r25442, MPFR_RNDN);
        mpfr_pow(r25444, r25442, r25412, MPFR_RNDN);
        mpfr_mul(r25445, r25443, r25444, MPFR_RNDN);
        mpfr_mul(r25446, r25445, r25429, MPFR_RNDN);
        mpfr_sub(r25447, r25439, r25446, MPFR_RNDN);
        mpfr_mul(r25448, r25415, r25447, MPFR_RNDN);
        mpfr_mul(r25449, r25414, r25448, MPFR_RNDN);
        mpfr_sqrt(r25450, r25449, MPFR_RNDN);
        ;
        mpfr_set_si(r25452, mpfr_cmp(r25433, r25451) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r25452, MPFR_RNDN)) { mpfr_set(r25453, r25433, MPFR_RNDN); } else { mpfr_set(r25453, r25450, MPFR_RNDN); };
        if (mpfr_get_si(r25435, MPFR_RNDN)) { mpfr_set(r25454, r25450, MPFR_RNDN); } else { mpfr_set(r25454, r25453, MPFR_RNDN); };
        return mpfr_get_d(r25454, MPFR_RNDN);
}

