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

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


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

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

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7559, "2", 10, MPFR_RNDN);
        mpfr_init(r7560);
        mpfr_init(r7561);
        mpfr_init(r7562);
        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);
}

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

static mpfr_t r7580, r7581, r7582, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r7580);
        mpfr_init(r7581);
        mpfr_init(r7582);
        mpfr_init_set_str(r7583, "2", 10, MPFR_RNDN);
        mpfr_init(r7584);
        mpfr_init(r7585);
        mpfr_init(r7586);
        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_set_str(r7600, "1.7922553581745162e-234", 10, MPFR_RNDN);
        mpfr_init(r7601);
        mpfr_init(r7602);
        mpfr_init(r7603);
        mpfr_init(r7604);
        mpfr_init(r7605);
        mpfr_init(r7606);
        mpfr_init(r7607);
        mpfr_init(r7608);
        mpfr_init(r7609);
        mpfr_init(r7610);
        mpfr_init_set_str(r7611, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7612);
        mpfr_init_set_str(r7613, "3.345971184085273e+259", 10, MPFR_RNDN);
        mpfr_init(r7614);
        mpfr_init(r7615);
        mpfr_init(r7616);
}

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

static mpfr_t r7617, r7618, r7619, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r7617);
        mpfr_init(r7618);
        mpfr_init(r7619);
        mpfr_init_set_str(r7620, "2", 10, MPFR_RNDN);
        mpfr_init(r7621);
        mpfr_init(r7622);
        mpfr_init(r7623);
        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_set_str(r7637, "1.7922553581745162e-234", 10, MPFR_RNDN);
        mpfr_init(r7638);
        mpfr_init(r7639);
        mpfr_init(r7640);
        mpfr_init(r7641);
        mpfr_init(r7642);
        mpfr_init(r7643);
        mpfr_init(r7644);
        mpfr_init(r7645);
        mpfr_init(r7646);
        mpfr_init(r7647);
        mpfr_init_set_str(r7648, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7649);
        mpfr_init_set_str(r7650, "3.345971184085273e+259", 10, MPFR_RNDN);
        mpfr_init(r7651);
        mpfr_init(r7652);
        mpfr_init(r7653);
}

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

