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

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

double f_if(float t, float l, float k) {
        float r25265 = 2;
        float r25266 = t;
        float r25267 = 3;
        float r25268 = pow(r25266, r25267);
        float r25269 = l;
        float r25270 = r25269 * r25269;
        float r25271 = r25268 / r25270;
        float r25272 = k;
        float r25273 = sin(r25272);
        float r25274 = r25271 * r25273;
        float r25275 = tan(r25272);
        float r25276 = r25274 * r25275;
        float r25277 = 1;
        float r25278 = r25272 / r25266;
        float r25279 = pow(r25278, r25265);
        float r25280 = r25277 + r25279;
        float r25281 = r25280 + r25277;
        float r25282 = r25276 * r25281;
        float r25283 = r25265 / r25282;
        return r25283;
}

double f_id(double t, double l, double k) {
        double r25284 = 2;
        double r25285 = t;
        double r25286 = 3;
        double r25287 = pow(r25285, r25286);
        double r25288 = l;
        double r25289 = r25288 * r25288;
        double r25290 = r25287 / r25289;
        double r25291 = k;
        double r25292 = sin(r25291);
        double r25293 = r25290 * r25292;
        double r25294 = tan(r25291);
        double r25295 = r25293 * r25294;
        double r25296 = 1;
        double r25297 = r25291 / r25285;
        double r25298 = pow(r25297, r25284);
        double r25299 = r25296 + r25298;
        double r25300 = r25299 + r25296;
        double r25301 = r25295 * r25300;
        double r25302 = r25284 / r25301;
        return r25302;
}


double f_of(float t, float l, float k) {
        float r25303 = t;
        float r25304 = l;
        float r25305 = r25304 / r25303;
        float r25306 = r25303 / r25305;
        float r25307 = r25303 / r25304;
        float r25308 = r25306 * r25307;
        float r25309 = k;
        float r25310 = sin(r25309);
        float r25311 = r25308 * r25310;
        float r25312 = tan(r25309);
        float r25313 = r25311 * r25312;
        float r25314 = 1;
        float r25315 = r25309 / r25303;
        float r25316 = 2;
        float r25317 = pow(r25315, r25316);
        float r25318 = r25314 + r25317;
        float r25319 = r25318 + r25314;
        float r25320 = r25313 * r25319;
        float r25321 = 1.5275239260165413e+217;
        bool r25322 = r25320 <= r25321;
        float r25323 = r25307 * r25310;
        float r25324 = r25303 * r25323;
        float r25325 = r25324 * r25310;
        float r25326 = r25325 * r25319;
        float r25327 = cbrt(r25326);
        float r25328 = r25327 * r25327;
        float r25329 = r25328 * r25327;
        float r25330 = cos(r25309);
        float r25331 = r25305 * r25330;
        float r25332 = r25329 / r25331;
        float r25333 = r25316 / r25332;
        float r25334 = r25309 * r25303;
        float r25335 = r25334 / r25304;
        float r25336 = r25303 * r25335;
        float r25337 = r25336 * r25310;
        float r25338 = r25337 * r25319;
        float r25339 = r25338 / r25331;
        float r25340 = r25316 / r25339;
        float r25341 = r25322 ? r25333 : r25340;
        return r25341;
}

double f_od(double t, double l, double k) {
        double r25342 = t;
        double r25343 = l;
        double r25344 = r25343 / r25342;
        double r25345 = r25342 / r25344;
        double r25346 = r25342 / r25343;
        double r25347 = r25345 * r25346;
        double r25348 = k;
        double r25349 = sin(r25348);
        double r25350 = r25347 * r25349;
        double r25351 = tan(r25348);
        double r25352 = r25350 * r25351;
        double r25353 = 1;
        double r25354 = r25348 / r25342;
        double r25355 = 2;
        double r25356 = pow(r25354, r25355);
        double r25357 = r25353 + r25356;
        double r25358 = r25357 + r25353;
        double r25359 = r25352 * r25358;
        double r25360 = 1.5275239260165413e+217;
        bool r25361 = r25359 <= r25360;
        double r25362 = r25346 * r25349;
        double r25363 = r25342 * r25362;
        double r25364 = r25363 * r25349;
        double r25365 = r25364 * r25358;
        double r25366 = cbrt(r25365);
        double r25367 = r25366 * r25366;
        double r25368 = r25367 * r25366;
        double r25369 = cos(r25348);
        double r25370 = r25344 * r25369;
        double r25371 = r25368 / r25370;
        double r25372 = r25355 / r25371;
        double r25373 = r25348 * r25342;
        double r25374 = r25373 / r25343;
        double r25375 = r25342 * r25374;
        double r25376 = r25375 * r25349;
        double r25377 = r25376 * r25358;
        double r25378 = r25377 / r25370;
        double r25379 = r25355 / r25378;
        double r25380 = r25361 ? r25372 : r25379;
        return r25380;
}

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 r25381, r25382, r25383, r25384, r25385, r25386, r25387, r25388, r25389, r25390, r25391, r25392, r25393, r25394, r25395, r25396, r25397, r25398, r25399;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25381, "2", 10, MPFR_RNDN);
        mpfr_init(r25382);
        mpfr_init_set_str(r25383, "3", 10, MPFR_RNDN);
        mpfr_init(r25384);
        mpfr_init(r25385);
        mpfr_init(r25386);
        mpfr_init(r25387);
        mpfr_init(r25388);
        mpfr_init(r25389);
        mpfr_init(r25390);
        mpfr_init(r25391);
        mpfr_init(r25392);
        mpfr_init_set_str(r25393, "1", 10, MPFR_RNDN);
        mpfr_init(r25394);
        mpfr_init(r25395);
        mpfr_init(r25396);
        mpfr_init(r25397);
        mpfr_init(r25398);
        mpfr_init(r25399);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r25382, t, MPFR_RNDN);
        ;
        mpfr_pow(r25384, r25382, r25383, MPFR_RNDN);
        mpfr_set_d(r25385, l, MPFR_RNDN);
        mpfr_mul(r25386, r25385, r25385, MPFR_RNDN);
        mpfr_div(r25387, r25384, r25386, MPFR_RNDN);
        mpfr_set_d(r25388, k, MPFR_RNDN);
        mpfr_sin(r25389, r25388, MPFR_RNDN);
        mpfr_mul(r25390, r25387, r25389, MPFR_RNDN);
        mpfr_tan(r25391, r25388, MPFR_RNDN);
        mpfr_mul(r25392, r25390, r25391, MPFR_RNDN);
        ;
        mpfr_div(r25394, r25388, r25382, MPFR_RNDN);
        mpfr_pow(r25395, r25394, r25381, MPFR_RNDN);
        mpfr_add(r25396, r25393, r25395, MPFR_RNDN);
        mpfr_add(r25397, r25396, r25393, MPFR_RNDN);
        mpfr_mul(r25398, r25392, r25397, MPFR_RNDN);
        mpfr_div(r25399, r25381, r25398, MPFR_RNDN);
        return mpfr_get_d(r25399, MPFR_RNDN);
}

static mpfr_t r25400, r25401, r25402, r25403, r25404, r25405, r25406, r25407, r25408, r25409, r25410, r25411, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        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(r25408);
        mpfr_init(r25409);
        mpfr_init(r25410);
        mpfr_init_set_str(r25411, "1", 10, MPFR_RNDN);
        mpfr_init(r25412);
        mpfr_init_set_str(r25413, "2", 10, MPFR_RNDN);
        mpfr_init(r25414);
        mpfr_init(r25415);
        mpfr_init(r25416);
        mpfr_init(r25417);
        mpfr_init_set_str(r25418, "1.5275239260165413e+217", 10, MPFR_RNDN);
        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(r25434);
        mpfr_init(r25435);
        mpfr_init(r25436);
        mpfr_init(r25437);
        mpfr_init(r25438);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r25400, t, MPFR_RNDN);
        mpfr_set_d(r25401, l, MPFR_RNDN);
        mpfr_div(r25402, r25401, r25400, MPFR_RNDN);
        mpfr_div(r25403, r25400, r25402, MPFR_RNDN);
        mpfr_div(r25404, r25400, r25401, MPFR_RNDN);
        mpfr_mul(r25405, r25403, r25404, MPFR_RNDN);
        mpfr_set_d(r25406, k, MPFR_RNDN);
        mpfr_sin(r25407, r25406, MPFR_RNDN);
        mpfr_mul(r25408, r25405, r25407, MPFR_RNDN);
        mpfr_tan(r25409, r25406, MPFR_RNDN);
        mpfr_mul(r25410, r25408, r25409, MPFR_RNDN);
        ;
        mpfr_div(r25412, r25406, r25400, MPFR_RNDN);
        ;
        mpfr_pow(r25414, r25412, r25413, MPFR_RNDN);
        mpfr_add(r25415, r25411, r25414, MPFR_RNDN);
        mpfr_add(r25416, r25415, r25411, MPFR_RNDN);
        mpfr_mul(r25417, r25410, r25416, MPFR_RNDN);
        ;
        mpfr_set_si(r25419, mpfr_cmp(r25417, r25418) <= 0, MPFR_RNDN);
        mpfr_mul(r25420, r25404, r25407, MPFR_RNDN);
        mpfr_mul(r25421, r25400, r25420, MPFR_RNDN);
        mpfr_mul(r25422, r25421, r25407, MPFR_RNDN);
        mpfr_mul(r25423, r25422, r25416, MPFR_RNDN);
        mpfr_cbrt(r25424, r25423, MPFR_RNDN);
        mpfr_mul(r25425, r25424, r25424, MPFR_RNDN);
        mpfr_mul(r25426, r25425, r25424, MPFR_RNDN);
        mpfr_cos(r25427, r25406, MPFR_RNDN);
        mpfr_mul(r25428, r25402, r25427, MPFR_RNDN);
        mpfr_div(r25429, r25426, r25428, MPFR_RNDN);
        mpfr_div(r25430, r25413, r25429, MPFR_RNDN);
        mpfr_mul(r25431, r25406, r25400, MPFR_RNDN);
        mpfr_div(r25432, r25431, r25401, MPFR_RNDN);
        mpfr_mul(r25433, r25400, r25432, MPFR_RNDN);
        mpfr_mul(r25434, r25433, r25407, MPFR_RNDN);
        mpfr_mul(r25435, r25434, r25416, MPFR_RNDN);
        mpfr_div(r25436, r25435, r25428, MPFR_RNDN);
        mpfr_div(r25437, r25413, r25436, MPFR_RNDN);
        if (mpfr_get_si(r25419, MPFR_RNDN)) { mpfr_set(r25438, r25430, MPFR_RNDN); } else { mpfr_set(r25438, r25437, MPFR_RNDN); };
        return mpfr_get_d(r25438, MPFR_RNDN);
}

static mpfr_t r25439, r25440, r25441, r25442, r25443, r25444, r25445, r25446, r25447, r25448, r25449, r25450, r25451, r25452, r25453, r25454, r25455, r25456, r25457, r25458, r25459, r25460, r25461, r25462, r25463, r25464, r25465, r25466, r25467, r25468, r25469, r25470, r25471, r25472, r25473, r25474, r25475, r25476, r25477;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        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_set_str(r25450, "1", 10, MPFR_RNDN);
        mpfr_init(r25451);
        mpfr_init_set_str(r25452, "2", 10, MPFR_RNDN);
        mpfr_init(r25453);
        mpfr_init(r25454);
        mpfr_init(r25455);
        mpfr_init(r25456);
        mpfr_init_set_str(r25457, "1.5275239260165413e+217", 10, MPFR_RNDN);
        mpfr_init(r25458);
        mpfr_init(r25459);
        mpfr_init(r25460);
        mpfr_init(r25461);
        mpfr_init(r25462);
        mpfr_init(r25463);
        mpfr_init(r25464);
        mpfr_init(r25465);
        mpfr_init(r25466);
        mpfr_init(r25467);
        mpfr_init(r25468);
        mpfr_init(r25469);
        mpfr_init(r25470);
        mpfr_init(r25471);
        mpfr_init(r25472);
        mpfr_init(r25473);
        mpfr_init(r25474);
        mpfr_init(r25475);
        mpfr_init(r25476);
        mpfr_init(r25477);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r25439, t, MPFR_RNDN);
        mpfr_set_d(r25440, l, MPFR_RNDN);
        mpfr_div(r25441, r25440, r25439, MPFR_RNDN);
        mpfr_div(r25442, r25439, r25441, MPFR_RNDN);
        mpfr_div(r25443, r25439, r25440, MPFR_RNDN);
        mpfr_mul(r25444, r25442, r25443, MPFR_RNDN);
        mpfr_set_d(r25445, k, MPFR_RNDN);
        mpfr_sin(r25446, r25445, MPFR_RNDN);
        mpfr_mul(r25447, r25444, r25446, MPFR_RNDN);
        mpfr_tan(r25448, r25445, MPFR_RNDN);
        mpfr_mul(r25449, r25447, r25448, MPFR_RNDN);
        ;
        mpfr_div(r25451, r25445, r25439, MPFR_RNDN);
        ;
        mpfr_pow(r25453, r25451, r25452, MPFR_RNDN);
        mpfr_add(r25454, r25450, r25453, MPFR_RNDN);
        mpfr_add(r25455, r25454, r25450, MPFR_RNDN);
        mpfr_mul(r25456, r25449, r25455, MPFR_RNDN);
        ;
        mpfr_set_si(r25458, mpfr_cmp(r25456, r25457) <= 0, MPFR_RNDN);
        mpfr_mul(r25459, r25443, r25446, MPFR_RNDN);
        mpfr_mul(r25460, r25439, r25459, MPFR_RNDN);
        mpfr_mul(r25461, r25460, r25446, MPFR_RNDN);
        mpfr_mul(r25462, r25461, r25455, MPFR_RNDN);
        mpfr_cbrt(r25463, r25462, MPFR_RNDN);
        mpfr_mul(r25464, r25463, r25463, MPFR_RNDN);
        mpfr_mul(r25465, r25464, r25463, MPFR_RNDN);
        mpfr_cos(r25466, r25445, MPFR_RNDN);
        mpfr_mul(r25467, r25441, r25466, MPFR_RNDN);
        mpfr_div(r25468, r25465, r25467, MPFR_RNDN);
        mpfr_div(r25469, r25452, r25468, MPFR_RNDN);
        mpfr_mul(r25470, r25445, r25439, MPFR_RNDN);
        mpfr_div(r25471, r25470, r25440, MPFR_RNDN);
        mpfr_mul(r25472, r25439, r25471, MPFR_RNDN);
        mpfr_mul(r25473, r25472, r25446, MPFR_RNDN);
        mpfr_mul(r25474, r25473, r25455, MPFR_RNDN);
        mpfr_div(r25475, r25474, r25467, MPFR_RNDN);
        mpfr_div(r25476, r25452, r25475, MPFR_RNDN);
        if (mpfr_get_si(r25458, MPFR_RNDN)) { mpfr_set(r25477, r25469, MPFR_RNDN); } else { mpfr_set(r25477, r25476, MPFR_RNDN); };
        return mpfr_get_d(r25477, MPFR_RNDN);
}

