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

char *name = "Harley's example";

double f_if(float c_p, float c_n, float t, float s) {
        float r48431 = 1;
        float r48432 = s;
        float r48433 = -r48432;
        float r48434 = exp(r48433);
        float r48435 = r48431 + r48434;
        float r48436 = r48431 / r48435;
        float r48437 = c_p;
        float r48438 = pow(r48436, r48437);
        float r48439 = r48431 - r48436;
        float r48440 = c_n;
        float r48441 = pow(r48439, r48440);
        float r48442 = r48438 * r48441;
        float r48443 = t;
        float r48444 = -r48443;
        float r48445 = exp(r48444);
        float r48446 = r48431 + r48445;
        float r48447 = r48431 / r48446;
        float r48448 = pow(r48447, r48437);
        float r48449 = r48431 - r48447;
        float r48450 = pow(r48449, r48440);
        float r48451 = r48448 * r48450;
        float r48452 = r48442 / r48451;
        return r48452;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48453 = 1;
        double r48454 = s;
        double r48455 = -r48454;
        double r48456 = exp(r48455);
        double r48457 = r48453 + r48456;
        double r48458 = r48453 / r48457;
        double r48459 = c_p;
        double r48460 = pow(r48458, r48459);
        double r48461 = r48453 - r48458;
        double r48462 = c_n;
        double r48463 = pow(r48461, r48462);
        double r48464 = r48460 * r48463;
        double r48465 = t;
        double r48466 = -r48465;
        double r48467 = exp(r48466);
        double r48468 = r48453 + r48467;
        double r48469 = r48453 / r48468;
        double r48470 = pow(r48469, r48459);
        double r48471 = r48453 - r48469;
        double r48472 = pow(r48471, r48462);
        double r48473 = r48470 * r48472;
        double r48474 = r48464 / r48473;
        return r48474;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48475 = s;
        float r48476 = -8.038839838415106e-193;
        bool r48477 = r48475 <= r48476;
        float r48478 = 1;
        float r48479 = -r48475;
        float r48480 = exp(r48479);
        float r48481 = r48478 + r48480;
        float r48482 = r48478 / r48481;
        float r48483 = r48478 - r48482;
        float r48484 = c_n;
        float r48485 = pow(r48483, r48484);
        float r48486 = t;
        float r48487 = -r48486;
        float r48488 = exp(r48487);
        float r48489 = r48478 + r48488;
        float r48490 = r48478 / r48489;
        float r48491 = r48478 - r48490;
        float r48492 = pow(r48491, r48484);
        float r48493 = r48485 / r48492;
        float r48494 = c_p;
        float r48495 = pow(r48482, r48494);
        float r48496 = 1/2;
        float r48497 = log(r48496);
        float r48498 = r48486 * r48496;
        float r48499 = r48497 + r48498;
        float r48500 = r48499 * r48494;
        float r48501 = r48500 + r48478;
        float r48502 = r48495 / r48501;
        float r48503 = r48493 * r48502;
        float r48504 = 3.5149560548150004e-48;
        bool r48505 = r48475 <= r48504;
        float r48506 = r48475 * r48496;
        float r48507 = r48494 - r48484;
        float r48508 = r48506 * r48507;
        float r48509 = r48478 + r48508;
        float r48510 = r48505 ? r48509 : r48503;
        float r48511 = r48477 ? r48503 : r48510;
        return r48511;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48512 = s;
        double r48513 = -8.038839838415106e-193;
        bool r48514 = r48512 <= r48513;
        double r48515 = 1;
        double r48516 = -r48512;
        double r48517 = exp(r48516);
        double r48518 = r48515 + r48517;
        double r48519 = r48515 / r48518;
        double r48520 = r48515 - r48519;
        double r48521 = c_n;
        double r48522 = pow(r48520, r48521);
        double r48523 = t;
        double r48524 = -r48523;
        double r48525 = exp(r48524);
        double r48526 = r48515 + r48525;
        double r48527 = r48515 / r48526;
        double r48528 = r48515 - r48527;
        double r48529 = pow(r48528, r48521);
        double r48530 = r48522 / r48529;
        double r48531 = c_p;
        double r48532 = pow(r48519, r48531);
        double r48533 = 1/2;
        double r48534 = log(r48533);
        double r48535 = r48523 * r48533;
        double r48536 = r48534 + r48535;
        double r48537 = r48536 * r48531;
        double r48538 = r48537 + r48515;
        double r48539 = r48532 / r48538;
        double r48540 = r48530 * r48539;
        double r48541 = 3.5149560548150004e-48;
        bool r48542 = r48512 <= r48541;
        double r48543 = r48512 * r48533;
        double r48544 = r48531 - r48521;
        double r48545 = r48543 * r48544;
        double r48546 = r48515 + r48545;
        double r48547 = r48542 ? r48546 : r48540;
        double r48548 = r48514 ? r48540 : r48547;
        return r48548;
}

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 r48549, r48550, r48551, r48552, r48553, r48554, r48555, r48556, r48557, r48558, r48559, r48560, r48561, r48562, r48563, r48564, r48565, r48566, r48567, r48568, r48569, r48570;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r48549, "1", 10, MPFR_RNDN);
        mpfr_init(r48550);
        mpfr_init(r48551);
        mpfr_init(r48552);
        mpfr_init(r48553);
        mpfr_init(r48554);
        mpfr_init(r48555);
        mpfr_init(r48556);
        mpfr_init(r48557);
        mpfr_init(r48558);
        mpfr_init(r48559);
        mpfr_init(r48560);
        mpfr_init(r48561);
        mpfr_init(r48562);
        mpfr_init(r48563);
        mpfr_init(r48564);
        mpfr_init(r48565);
        mpfr_init(r48566);
        mpfr_init(r48567);
        mpfr_init(r48568);
        mpfr_init(r48569);
        mpfr_init(r48570);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48550, s, MPFR_RNDN);
        mpfr_neg(r48551, r48550, MPFR_RNDN);
        mpfr_exp(r48552, r48551, MPFR_RNDN);
        mpfr_add(r48553, r48549, r48552, MPFR_RNDN);
        mpfr_div(r48554, r48549, r48553, MPFR_RNDN);
        mpfr_set_d(r48555, c_p, MPFR_RNDN);
        mpfr_pow(r48556, r48554, r48555, MPFR_RNDN);
        mpfr_sub(r48557, r48549, r48554, MPFR_RNDN);
        mpfr_set_d(r48558, c_n, MPFR_RNDN);
        mpfr_pow(r48559, r48557, r48558, MPFR_RNDN);
        mpfr_mul(r48560, r48556, r48559, MPFR_RNDN);
        mpfr_set_d(r48561, t, MPFR_RNDN);
        mpfr_neg(r48562, r48561, MPFR_RNDN);
        mpfr_exp(r48563, r48562, MPFR_RNDN);
        mpfr_add(r48564, r48549, r48563, MPFR_RNDN);
        mpfr_div(r48565, r48549, r48564, MPFR_RNDN);
        mpfr_pow(r48566, r48565, r48555, MPFR_RNDN);
        mpfr_sub(r48567, r48549, r48565, MPFR_RNDN);
        mpfr_pow(r48568, r48567, r48558, MPFR_RNDN);
        mpfr_mul(r48569, r48566, r48568, MPFR_RNDN);
        mpfr_div(r48570, r48560, r48569, MPFR_RNDN);
        return mpfr_get_d(r48570, MPFR_RNDN);
}

static mpfr_t r48571, r48572, r48573, r48574, r48575, r48576, r48577, r48578, r48579, r48580, r48581, r48582, r48583, r48584, r48585, r48586, r48587, r48588, r48589, r48590, r48591, r48592, r48593, r48594, r48595, r48596, r48597, r48598, r48599, r48600, r48601, r48602, r48603, r48604, r48605, r48606, r48607;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r48571);
        mpfr_init_set_str(r48572, "-8.038839838415106e-193", 10, MPFR_RNDN);
        mpfr_init(r48573);
        mpfr_init_set_str(r48574, "1", 10, MPFR_RNDN);
        mpfr_init(r48575);
        mpfr_init(r48576);
        mpfr_init(r48577);
        mpfr_init(r48578);
        mpfr_init(r48579);
        mpfr_init(r48580);
        mpfr_init(r48581);
        mpfr_init(r48582);
        mpfr_init(r48583);
        mpfr_init(r48584);
        mpfr_init(r48585);
        mpfr_init(r48586);
        mpfr_init(r48587);
        mpfr_init(r48588);
        mpfr_init(r48589);
        mpfr_init(r48590);
        mpfr_init(r48591);
        mpfr_init_set_str(r48592, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48593);
        mpfr_init(r48594);
        mpfr_init(r48595);
        mpfr_init(r48596);
        mpfr_init(r48597);
        mpfr_init(r48598);
        mpfr_init(r48599);
        mpfr_init_set_str(r48600, "3.5149560548150004e-48", 10, MPFR_RNDN);
        mpfr_init(r48601);
        mpfr_init(r48602);
        mpfr_init(r48603);
        mpfr_init(r48604);
        mpfr_init(r48605);
        mpfr_init(r48606);
        mpfr_init(r48607);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48571, s, MPFR_RNDN);
        ;
        mpfr_set_si(r48573, mpfr_cmp(r48571, r48572) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r48575, r48571, MPFR_RNDN);
        mpfr_exp(r48576, r48575, MPFR_RNDN);
        mpfr_add(r48577, r48574, r48576, MPFR_RNDN);
        mpfr_div(r48578, r48574, r48577, MPFR_RNDN);
        mpfr_sub(r48579, r48574, r48578, MPFR_RNDN);
        mpfr_set_d(r48580, c_n, MPFR_RNDN);
        mpfr_pow(r48581, r48579, r48580, MPFR_RNDN);
        mpfr_set_d(r48582, t, MPFR_RNDN);
        mpfr_neg(r48583, r48582, MPFR_RNDN);
        mpfr_exp(r48584, r48583, MPFR_RNDN);
        mpfr_add(r48585, r48574, r48584, MPFR_RNDN);
        mpfr_div(r48586, r48574, r48585, MPFR_RNDN);
        mpfr_sub(r48587, r48574, r48586, MPFR_RNDN);
        mpfr_pow(r48588, r48587, r48580, MPFR_RNDN);
        mpfr_div(r48589, r48581, r48588, MPFR_RNDN);
        mpfr_set_d(r48590, c_p, MPFR_RNDN);
        mpfr_pow(r48591, r48578, r48590, MPFR_RNDN);
        ;
        mpfr_log(r48593, r48592, MPFR_RNDN);
        mpfr_mul(r48594, r48582, r48592, MPFR_RNDN);
        mpfr_add(r48595, r48593, r48594, MPFR_RNDN);
        mpfr_mul(r48596, r48595, r48590, MPFR_RNDN);
        mpfr_add(r48597, r48596, r48574, MPFR_RNDN);
        mpfr_div(r48598, r48591, r48597, MPFR_RNDN);
        mpfr_mul(r48599, r48589, r48598, MPFR_RNDN);
        ;
        mpfr_set_si(r48601, mpfr_cmp(r48571, r48600) <= 0, MPFR_RNDN);
        mpfr_mul(r48602, r48571, r48592, MPFR_RNDN);
        mpfr_sub(r48603, r48590, r48580, MPFR_RNDN);
        mpfr_mul(r48604, r48602, r48603, MPFR_RNDN);
        mpfr_add(r48605, r48574, r48604, MPFR_RNDN);
        if (mpfr_get_si(r48601, MPFR_RNDN)) { mpfr_set(r48606, r48605, MPFR_RNDN); } else { mpfr_set(r48606, r48599, MPFR_RNDN); };
        if (mpfr_get_si(r48573, MPFR_RNDN)) { mpfr_set(r48607, r48599, MPFR_RNDN); } else { mpfr_set(r48607, r48606, MPFR_RNDN); };
        return mpfr_get_d(r48607, MPFR_RNDN);
}

static mpfr_t r48608, r48609, r48610, r48611, r48612, r48613, r48614, r48615, r48616, r48617, r48618, r48619, r48620, r48621, r48622, r48623, r48624, r48625, r48626, r48627, r48628, r48629, r48630, r48631, r48632, r48633, r48634, r48635, r48636, r48637, r48638, r48639, r48640, r48641, r48642, r48643, r48644;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r48608);
        mpfr_init_set_str(r48609, "-8.038839838415106e-193", 10, MPFR_RNDN);
        mpfr_init(r48610);
        mpfr_init_set_str(r48611, "1", 10, MPFR_RNDN);
        mpfr_init(r48612);
        mpfr_init(r48613);
        mpfr_init(r48614);
        mpfr_init(r48615);
        mpfr_init(r48616);
        mpfr_init(r48617);
        mpfr_init(r48618);
        mpfr_init(r48619);
        mpfr_init(r48620);
        mpfr_init(r48621);
        mpfr_init(r48622);
        mpfr_init(r48623);
        mpfr_init(r48624);
        mpfr_init(r48625);
        mpfr_init(r48626);
        mpfr_init(r48627);
        mpfr_init(r48628);
        mpfr_init_set_str(r48629, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48630);
        mpfr_init(r48631);
        mpfr_init(r48632);
        mpfr_init(r48633);
        mpfr_init(r48634);
        mpfr_init(r48635);
        mpfr_init(r48636);
        mpfr_init_set_str(r48637, "3.5149560548150004e-48", 10, MPFR_RNDN);
        mpfr_init(r48638);
        mpfr_init(r48639);
        mpfr_init(r48640);
        mpfr_init(r48641);
        mpfr_init(r48642);
        mpfr_init(r48643);
        mpfr_init(r48644);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48608, s, MPFR_RNDN);
        ;
        mpfr_set_si(r48610, mpfr_cmp(r48608, r48609) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r48612, r48608, MPFR_RNDN);
        mpfr_exp(r48613, r48612, MPFR_RNDN);
        mpfr_add(r48614, r48611, r48613, MPFR_RNDN);
        mpfr_div(r48615, r48611, r48614, MPFR_RNDN);
        mpfr_sub(r48616, r48611, r48615, MPFR_RNDN);
        mpfr_set_d(r48617, c_n, MPFR_RNDN);
        mpfr_pow(r48618, r48616, r48617, MPFR_RNDN);
        mpfr_set_d(r48619, t, MPFR_RNDN);
        mpfr_neg(r48620, r48619, MPFR_RNDN);
        mpfr_exp(r48621, r48620, MPFR_RNDN);
        mpfr_add(r48622, r48611, r48621, MPFR_RNDN);
        mpfr_div(r48623, r48611, r48622, MPFR_RNDN);
        mpfr_sub(r48624, r48611, r48623, MPFR_RNDN);
        mpfr_pow(r48625, r48624, r48617, MPFR_RNDN);
        mpfr_div(r48626, r48618, r48625, MPFR_RNDN);
        mpfr_set_d(r48627, c_p, MPFR_RNDN);
        mpfr_pow(r48628, r48615, r48627, MPFR_RNDN);
        ;
        mpfr_log(r48630, r48629, MPFR_RNDN);
        mpfr_mul(r48631, r48619, r48629, MPFR_RNDN);
        mpfr_add(r48632, r48630, r48631, MPFR_RNDN);
        mpfr_mul(r48633, r48632, r48627, MPFR_RNDN);
        mpfr_add(r48634, r48633, r48611, MPFR_RNDN);
        mpfr_div(r48635, r48628, r48634, MPFR_RNDN);
        mpfr_mul(r48636, r48626, r48635, MPFR_RNDN);
        ;
        mpfr_set_si(r48638, mpfr_cmp(r48608, r48637) <= 0, MPFR_RNDN);
        mpfr_mul(r48639, r48608, r48629, MPFR_RNDN);
        mpfr_sub(r48640, r48627, r48617, MPFR_RNDN);
        mpfr_mul(r48641, r48639, r48640, MPFR_RNDN);
        mpfr_add(r48642, r48611, r48641, MPFR_RNDN);
        if (mpfr_get_si(r48638, MPFR_RNDN)) { mpfr_set(r48643, r48642, MPFR_RNDN); } else { mpfr_set(r48643, r48636, MPFR_RNDN); };
        if (mpfr_get_si(r48610, MPFR_RNDN)) { mpfr_set(r48644, r48636, MPFR_RNDN); } else { mpfr_set(r48644, r48643, MPFR_RNDN); };
        return mpfr_get_d(r48644, MPFR_RNDN);
}

