#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 r7446 = 2.0f;
        float r7447 = n;
        float r7448 = r7446 * r7447;
        float r7449 = U;
        float r7450 = r7448 * r7449;
        float r7451 = t;
        float r7452 = l;
        float r7453 = r7452 * r7452;
        float r7454 = Om;
        float r7455 = r7453 / r7454;
        float r7456 = r7446 * r7455;
        float r7457 = r7451 - r7456;
        float r7458 = r7452 / r7454;
        float r7459 = pow(r7458, r7446);
        float r7460 = r7447 * r7459;
        float r7461 = U_;
        float r7462 = r7449 - r7461;
        float r7463 = r7460 * r7462;
        float r7464 = r7457 - r7463;
        float r7465 = r7450 * r7464;
        float r7466 = sqrt(r7465);
        return r7466;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r7467 = 2.0;
        double r7468 = n;
        double r7469 = r7467 * r7468;
        double r7470 = U;
        double r7471 = r7469 * r7470;
        double r7472 = t;
        double r7473 = l;
        double r7474 = r7473 * r7473;
        double r7475 = Om;
        double r7476 = r7474 / r7475;
        double r7477 = r7467 * r7476;
        double r7478 = r7472 - r7477;
        double r7479 = r7473 / r7475;
        double r7480 = pow(r7479, r7467);
        double r7481 = r7468 * r7480;
        double r7482 = U_;
        double r7483 = r7470 - r7482;
        double r7484 = r7481 * r7483;
        double r7485 = r7478 - r7484;
        double r7486 = r7471 * r7485;
        double r7487 = sqrt(r7486);
        return r7487;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r7488 = n;
        float r7489 = U;
        float r7490 = r7488 * r7489;
        float r7491 = 2.0f;
        float r7492 = r7490 * r7491;
        float r7493 = sqrt(r7492);
        float r7494 = t;
        float r7495 = l;
        float r7496 = Om;
        float r7497 = r7495 / r7496;
        float r7498 = r7497 * r7497;
        float r7499 = U_;
        float r7500 = r7489 - r7499;
        float r7501 = r7488 * r7500;
        float r7502 = r7495 * r7491;
        float r7503 = r7502 * r7497;
        float r7504 = fma(r7498, r7501, r7503);
        float r7505 = r7494 - r7504;
        float r7506 = sqrt(r7505);
        float r7507 = r7493 * r7506;
        float r7508 = 1.7922553581745162e-234f;
        bool r7509 = r7507 <= r7508;
        float r7510 = r7488 * r7497;
        float r7511 = fma(r7500, r7510, r7502);
        float r7512 = r7491 * r7489;
        float r7513 = -r7512;
        float r7514 = r7513 * r7510;
        float r7515 = r7494 * r7489;
        float r7516 = r7491 * r7488;
        float r7517 = r7515 * r7516;
        float r7518 = fma(r7511, r7514, r7517);
        float r7519 = 0.5f;
        float r7520 = pow(r7518, r7519);
        float r7521 = 3.345971184085273e+259f;
        bool r7522 = r7507 <= r7521;
        float r7523 = r7522 ? r7507 : r7520;
        float r7524 = r7509 ? r7520 : r7523;
        return r7524;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r7525 = n;
        double r7526 = U;
        double r7527 = r7525 * r7526;
        double r7528 = 2.0;
        double r7529 = r7527 * r7528;
        double r7530 = sqrt(r7529);
        double r7531 = t;
        double r7532 = l;
        double r7533 = Om;
        double r7534 = r7532 / r7533;
        double r7535 = r7534 * r7534;
        double r7536 = U_;
        double r7537 = r7526 - r7536;
        double r7538 = r7525 * r7537;
        double r7539 = r7532 * r7528;
        double r7540 = r7539 * r7534;
        double r7541 = fma(r7535, r7538, r7540);
        double r7542 = r7531 - r7541;
        double r7543 = sqrt(r7542);
        double r7544 = r7530 * r7543;
        double r7545 = 1.7922553581745162e-234;
        bool r7546 = r7544 <= r7545;
        double r7547 = r7525 * r7534;
        double r7548 = fma(r7537, r7547, r7539);
        double r7549 = r7528 * r7526;
        double r7550 = -r7549;
        double r7551 = r7550 * r7547;
        double r7552 = r7531 * r7526;
        double r7553 = r7528 * r7525;
        double r7554 = r7552 * r7553;
        double r7555 = fma(r7548, r7551, r7554);
        double r7556 = 0.5;
        double r7557 = pow(r7555, r7556);
        double r7558 = 3.345971184085273e+259;
        bool r7559 = r7544 <= r7558;
        double r7560 = r7559 ? r7544 : r7557;
        double r7561 = r7546 ? r7557 : r7560;
        return r7561;
}

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 r7562, r7563, r7564, r7565, r7566, r7567, r7568, r7569, r7570, r7571, r7572, r7573, r7574, r7575, r7576, r7577, r7578, r7579, r7580, r7581, r7582;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7562, "2", 10, MPFR_RNDN);
        mpfr_init(r7563);
        mpfr_init(r7564);
        mpfr_init(r7565);
        mpfr_init(r7566);
        mpfr_init(r7567);
        mpfr_init(r7568);
        mpfr_init(r7569);
        mpfr_init(r7570);
        mpfr_init(r7571);
        mpfr_init(r7572);
        mpfr_init(r7573);
        mpfr_init(r7574);
        mpfr_init(r7575);
        mpfr_init(r7576);
        mpfr_init(r7577);
        mpfr_init(r7578);
        mpfr_init(r7579);
        mpfr_init(r7580);
        mpfr_init(r7581);
        mpfr_init(r7582);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7563, n, MPFR_RNDN);
        mpfr_mul(r7564, r7562, r7563, MPFR_RNDN);
        mpfr_set_d(r7565, U, MPFR_RNDN);
        mpfr_mul(r7566, r7564, r7565, MPFR_RNDN);
        mpfr_set_d(r7567, t, MPFR_RNDN);
        mpfr_set_d(r7568, l, MPFR_RNDN);
        mpfr_mul(r7569, r7568, r7568, MPFR_RNDN);
        mpfr_set_d(r7570, Om, MPFR_RNDN);
        mpfr_div(r7571, r7569, r7570, MPFR_RNDN);
        mpfr_mul(r7572, r7562, r7571, MPFR_RNDN);
        mpfr_sub(r7573, r7567, r7572, MPFR_RNDN);
        mpfr_div(r7574, r7568, r7570, MPFR_RNDN);
        mpfr_pow(r7575, r7574, r7562, MPFR_RNDN);
        mpfr_mul(r7576, r7563, r7575, MPFR_RNDN);
        mpfr_set_d(r7577, U_, MPFR_RNDN);
        mpfr_sub(r7578, r7565, r7577, MPFR_RNDN);
        mpfr_mul(r7579, r7576, r7578, MPFR_RNDN);
        mpfr_sub(r7580, r7573, r7579, MPFR_RNDN);
        mpfr_mul(r7581, r7566, r7580, MPFR_RNDN);
        mpfr_sqrt(r7582, r7581, MPFR_RNDN);
        return mpfr_get_d(r7582, MPFR_RNDN);
}

static mpfr_t r7583, r7584, r7585, r7586, r7587, r7588, r7589, r7590, r7591, r7592, r7593, r7594, r7595, r7596, r7597, r7598, r7599, r7600, r7601, r7602, r7603, r7604, r7605, r7606, r7607, r7608, r7609, r7610, r7611, r7612, r7613, r7614, r7615, r7616, r7617, r7618, r7619;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r7583);
        mpfr_init(r7584);
        mpfr_init(r7585);
        mpfr_init_set_str(r7586, "2", 10, MPFR_RNDN);
        mpfr_init(r7587);
        mpfr_init(r7588);
        mpfr_init(r7589);
        mpfr_init(r7590);
        mpfr_init(r7591);
        mpfr_init(r7592);
        mpfr_init(r7593);
        mpfr_init(r7594);
        mpfr_init(r7595);
        mpfr_init(r7596);
        mpfr_init(r7597);
        mpfr_init(r7598);
        mpfr_init(r7599);
        mpfr_init(r7600);
        mpfr_init(r7601);
        mpfr_init(r7602);
        mpfr_init_set_str(r7603, "1.7922553581745162e-234", 10, MPFR_RNDN);
        mpfr_init(r7604);
        mpfr_init(r7605);
        mpfr_init(r7606);
        mpfr_init(r7607);
        mpfr_init(r7608);
        mpfr_init(r7609);
        mpfr_init(r7610);
        mpfr_init(r7611);
        mpfr_init(r7612);
        mpfr_init(r7613);
        mpfr_init_set_str(r7614, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7615);
        mpfr_init_set_str(r7616, "3.345971184085273e+259", 10, MPFR_RNDN);
        mpfr_init(r7617);
        mpfr_init(r7618);
        mpfr_init(r7619);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r7583, n, MPFR_RNDN);
        mpfr_set_d(r7584, U, MPFR_RNDN);
        mpfr_mul(r7585, r7583, r7584, MPFR_RNDN);
        ;
        mpfr_mul(r7587, r7585, r7586, MPFR_RNDN);
        mpfr_sqrt(r7588, r7587, MPFR_RNDN);
        mpfr_set_d(r7589, t, MPFR_RNDN);
        mpfr_set_d(r7590, l, MPFR_RNDN);
        mpfr_set_d(r7591, Om, MPFR_RNDN);
        mpfr_div(r7592, r7590, r7591, MPFR_RNDN);
        mpfr_mul(r7593, r7592, r7592, MPFR_RNDN);
        mpfr_set_d(r7594, U_, MPFR_RNDN);
        mpfr_sub(r7595, r7584, r7594, MPFR_RNDN);
        mpfr_mul(r7596, r7583, r7595, MPFR_RNDN);
        mpfr_mul(r7597, r7590, r7586, MPFR_RNDN);
        mpfr_mul(r7598, r7597, r7592, MPFR_RNDN);
        mpfr_fma(r7599, r7593, r7596, r7598, MPFR_RNDN);
        mpfr_sub(r7600, r7589, r7599, MPFR_RNDN);
        mpfr_sqrt(r7601, r7600, MPFR_RNDN);
        mpfr_mul(r7602, r7588, r7601, MPFR_RNDN);
        ;
        mpfr_set_si(r7604, mpfr_cmp(r7602, r7603) <= 0, MPFR_RNDN);
        mpfr_mul(r7605, r7583, r7592, MPFR_RNDN);
        mpfr_fma(r7606, r7595, r7605, r7597, MPFR_RNDN);
        mpfr_mul(r7607, r7586, r7584, MPFR_RNDN);
        mpfr_neg(r7608, r7607, MPFR_RNDN);
        mpfr_mul(r7609, r7608, r7605, MPFR_RNDN);
        mpfr_mul(r7610, r7589, r7584, MPFR_RNDN);
        mpfr_mul(r7611, r7586, r7583, MPFR_RNDN);
        mpfr_mul(r7612, r7610, r7611, MPFR_RNDN);
        mpfr_fma(r7613, r7606, r7609, r7612, MPFR_RNDN);
        ;
        mpfr_pow(r7615, r7613, r7614, MPFR_RNDN);
        ;
        mpfr_set_si(r7617, mpfr_cmp(r7602, r7616) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r7617, MPFR_RNDN)) { mpfr_set(r7618, r7602, MPFR_RNDN); } else { mpfr_set(r7618, r7615, MPFR_RNDN); };
        if (mpfr_get_si(r7604, MPFR_RNDN)) { mpfr_set(r7619, r7615, MPFR_RNDN); } else { mpfr_set(r7619, r7618, MPFR_RNDN); };
        return mpfr_get_d(r7619, MPFR_RNDN);
}

static mpfr_t r7620, r7621, r7622, r7623, r7624, r7625, r7626, r7627, r7628, r7629, r7630, r7631, r7632, r7633, r7634, r7635, r7636, r7637, r7638, r7639, r7640, r7641, r7642, r7643, r7644, r7645, r7646, r7647, r7648, r7649, r7650, r7651, r7652, r7653, r7654, r7655, r7656;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r7620);
        mpfr_init(r7621);
        mpfr_init(r7622);
        mpfr_init_set_str(r7623, "2", 10, MPFR_RNDN);
        mpfr_init(r7624);
        mpfr_init(r7625);
        mpfr_init(r7626);
        mpfr_init(r7627);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init(r7630);
        mpfr_init(r7631);
        mpfr_init(r7632);
        mpfr_init(r7633);
        mpfr_init(r7634);
        mpfr_init(r7635);
        mpfr_init(r7636);
        mpfr_init(r7637);
        mpfr_init(r7638);
        mpfr_init(r7639);
        mpfr_init_set_str(r7640, "1.7922553581745162e-234", 10, MPFR_RNDN);
        mpfr_init(r7641);
        mpfr_init(r7642);
        mpfr_init(r7643);
        mpfr_init(r7644);
        mpfr_init(r7645);
        mpfr_init(r7646);
        mpfr_init(r7647);
        mpfr_init(r7648);
        mpfr_init(r7649);
        mpfr_init(r7650);
        mpfr_init_set_str(r7651, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7652);
        mpfr_init_set_str(r7653, "3.345971184085273e+259", 10, MPFR_RNDN);
        mpfr_init(r7654);
        mpfr_init(r7655);
        mpfr_init(r7656);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        mpfr_set_d(r7620, n, MPFR_RNDN);
        mpfr_set_d(r7621, U, MPFR_RNDN);
        mpfr_mul(r7622, r7620, r7621, MPFR_RNDN);
        ;
        mpfr_mul(r7624, r7622, r7623, MPFR_RNDN);
        mpfr_sqrt(r7625, r7624, MPFR_RNDN);
        mpfr_set_d(r7626, t, MPFR_RNDN);
        mpfr_set_d(r7627, l, MPFR_RNDN);
        mpfr_set_d(r7628, Om, MPFR_RNDN);
        mpfr_div(r7629, r7627, r7628, MPFR_RNDN);
        mpfr_mul(r7630, r7629, r7629, MPFR_RNDN);
        mpfr_set_d(r7631, U_, MPFR_RNDN);
        mpfr_sub(r7632, r7621, r7631, MPFR_RNDN);
        mpfr_mul(r7633, r7620, r7632, MPFR_RNDN);
        mpfr_mul(r7634, r7627, r7623, MPFR_RNDN);
        mpfr_mul(r7635, r7634, r7629, MPFR_RNDN);
        mpfr_fma(r7636, r7630, r7633, r7635, MPFR_RNDN);
        mpfr_sub(r7637, r7626, r7636, MPFR_RNDN);
        mpfr_sqrt(r7638, r7637, MPFR_RNDN);
        mpfr_mul(r7639, r7625, r7638, MPFR_RNDN);
        ;
        mpfr_set_si(r7641, mpfr_cmp(r7639, r7640) <= 0, MPFR_RNDN);
        mpfr_mul(r7642, r7620, r7629, MPFR_RNDN);
        mpfr_fma(r7643, r7632, r7642, r7634, MPFR_RNDN);
        mpfr_mul(r7644, r7623, r7621, MPFR_RNDN);
        mpfr_neg(r7645, r7644, MPFR_RNDN);
        mpfr_mul(r7646, r7645, r7642, MPFR_RNDN);
        mpfr_mul(r7647, r7626, r7621, MPFR_RNDN);
        mpfr_mul(r7648, r7623, r7620, MPFR_RNDN);
        mpfr_mul(r7649, r7647, r7648, MPFR_RNDN);
        mpfr_fma(r7650, r7643, r7646, r7649, MPFR_RNDN);
        ;
        mpfr_pow(r7652, r7650, r7651, MPFR_RNDN);
        ;
        mpfr_set_si(r7654, mpfr_cmp(r7639, r7653) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r7654, MPFR_RNDN)) { mpfr_set(r7655, r7639, MPFR_RNDN); } else { mpfr_set(r7655, r7652, MPFR_RNDN); };
        if (mpfr_get_si(r7641, MPFR_RNDN)) { mpfr_set(r7656, r7652, MPFR_RNDN); } else { mpfr_set(r7656, r7655, MPFR_RNDN); };
        return mpfr_get_d(r7656, MPFR_RNDN);
}

