#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 r11443 = 1;
        float r11444 = s;
        float r11445 = -r11444;
        float r11446 = exp(r11445);
        float r11447 = r11443 + r11446;
        float r11448 = r11443 / r11447;
        float r11449 = c_p;
        float r11450 = pow(r11448, r11449);
        float r11451 = r11443 - r11448;
        float r11452 = c_n;
        float r11453 = pow(r11451, r11452);
        float r11454 = r11450 * r11453;
        float r11455 = t;
        float r11456 = -r11455;
        float r11457 = exp(r11456);
        float r11458 = r11443 + r11457;
        float r11459 = r11443 / r11458;
        float r11460 = pow(r11459, r11449);
        float r11461 = r11443 - r11459;
        float r11462 = pow(r11461, r11452);
        float r11463 = r11460 * r11462;
        float r11464 = r11454 / r11463;
        return r11464;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11465 = 1;
        double r11466 = s;
        double r11467 = -r11466;
        double r11468 = exp(r11467);
        double r11469 = r11465 + r11468;
        double r11470 = r11465 / r11469;
        double r11471 = c_p;
        double r11472 = pow(r11470, r11471);
        double r11473 = r11465 - r11470;
        double r11474 = c_n;
        double r11475 = pow(r11473, r11474);
        double r11476 = r11472 * r11475;
        double r11477 = t;
        double r11478 = -r11477;
        double r11479 = exp(r11478);
        double r11480 = r11465 + r11479;
        double r11481 = r11465 / r11480;
        double r11482 = pow(r11481, r11471);
        double r11483 = r11465 - r11481;
        double r11484 = pow(r11483, r11474);
        double r11485 = r11482 * r11484;
        double r11486 = r11476 / r11485;
        return r11486;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11487 = 1;
        float r11488 = s;
        float r11489 = -r11488;
        float r11490 = exp(r11489);
        float r11491 = r11490 + r11487;
        float r11492 = r11487 / r11491;
        float r11493 = 1.8336260487680146e-300;
        bool r11494 = r11492 <= r11493;
        float r11495 = 0.5000333288116081;
        bool r11496 = r11492 <= r11495;
        float r11497 = !r11496;
        bool r11498 = r11494 || r11497;
        float r11499 = c_p;
        float r11500 = pow(r11492, r11499);
        float r11501 = t;
        float r11502 = -r11501;
        float r11503 = exp(r11502);
        float r11504 = r11503 + r11487;
        float r11505 = r11487 / r11504;
        float r11506 = r11487 - r11505;
        float r11507 = c_n;
        float r11508 = pow(r11506, r11507);
        float r11509 = r11500 / r11508;
        float r11510 = r11487 - r11492;
        float r11511 = pow(r11510, r11507);
        float r11512 = 1/2;
        float r11513 = log(r11512);
        float r11514 = r11501 * r11512;
        float r11515 = r11513 + r11514;
        float r11516 = r11499 * r11515;
        float r11517 = r11516 + r11487;
        float r11518 = r11511 / r11517;
        float r11519 = r11509 * r11518;
        float r11520 = r11512 * r11507;
        float r11521 = r11501 - r11488;
        float r11522 = r11520 * r11521;
        float r11523 = exp(r11522);
        float r11524 = r11504 / r11491;
        float r11525 = pow(r11524, r11499);
        float r11526 = r11488 * r11488;
        float r11527 = 1/8;
        float r11528 = r11527 * r11507;
        float r11529 = r11526 * r11528;
        float r11530 = exp(r11529);
        float r11531 = r11525 / r11530;
        float r11532 = r11523 * r11531;
        float r11533 = r11498 ? r11519 : r11532;
        return r11533;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11534 = 1;
        double r11535 = s;
        double r11536 = -r11535;
        double r11537 = exp(r11536);
        double r11538 = r11537 + r11534;
        double r11539 = r11534 / r11538;
        double r11540 = 1.8336260487680146e-300;
        bool r11541 = r11539 <= r11540;
        double r11542 = 0.5000333288116081;
        bool r11543 = r11539 <= r11542;
        double r11544 = !r11543;
        bool r11545 = r11541 || r11544;
        double r11546 = c_p;
        double r11547 = pow(r11539, r11546);
        double r11548 = t;
        double r11549 = -r11548;
        double r11550 = exp(r11549);
        double r11551 = r11550 + r11534;
        double r11552 = r11534 / r11551;
        double r11553 = r11534 - r11552;
        double r11554 = c_n;
        double r11555 = pow(r11553, r11554);
        double r11556 = r11547 / r11555;
        double r11557 = r11534 - r11539;
        double r11558 = pow(r11557, r11554);
        double r11559 = 1/2;
        double r11560 = log(r11559);
        double r11561 = r11548 * r11559;
        double r11562 = r11560 + r11561;
        double r11563 = r11546 * r11562;
        double r11564 = r11563 + r11534;
        double r11565 = r11558 / r11564;
        double r11566 = r11556 * r11565;
        double r11567 = r11559 * r11554;
        double r11568 = r11548 - r11535;
        double r11569 = r11567 * r11568;
        double r11570 = exp(r11569);
        double r11571 = r11551 / r11538;
        double r11572 = pow(r11571, r11546);
        double r11573 = r11535 * r11535;
        double r11574 = 1/8;
        double r11575 = r11574 * r11554;
        double r11576 = r11573 * r11575;
        double r11577 = exp(r11576);
        double r11578 = r11572 / r11577;
        double r11579 = r11570 * r11578;
        double r11580 = r11545 ? r11566 : r11579;
        return r11580;
}

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 r11581, r11582, r11583, r11584, r11585, r11586, r11587, r11588, r11589, r11590, r11591, r11592, r11593, r11594, r11595, r11596, r11597, r11598, r11599, r11600, r11601, r11602;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11581, "1", 10, MPFR_RNDN);
        mpfr_init(r11582);
        mpfr_init(r11583);
        mpfr_init(r11584);
        mpfr_init(r11585);
        mpfr_init(r11586);
        mpfr_init(r11587);
        mpfr_init(r11588);
        mpfr_init(r11589);
        mpfr_init(r11590);
        mpfr_init(r11591);
        mpfr_init(r11592);
        mpfr_init(r11593);
        mpfr_init(r11594);
        mpfr_init(r11595);
        mpfr_init(r11596);
        mpfr_init(r11597);
        mpfr_init(r11598);
        mpfr_init(r11599);
        mpfr_init(r11600);
        mpfr_init(r11601);
        mpfr_init(r11602);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11582, s, MPFR_RNDN);
        mpfr_neg(r11583, r11582, MPFR_RNDN);
        mpfr_exp(r11584, r11583, MPFR_RNDN);
        mpfr_add(r11585, r11581, r11584, MPFR_RNDN);
        mpfr_div(r11586, r11581, r11585, MPFR_RNDN);
        mpfr_set_d(r11587, c_p, MPFR_RNDN);
        mpfr_pow(r11588, r11586, r11587, MPFR_RNDN);
        mpfr_sub(r11589, r11581, r11586, MPFR_RNDN);
        mpfr_set_d(r11590, c_n, MPFR_RNDN);
        mpfr_pow(r11591, r11589, r11590, MPFR_RNDN);
        mpfr_mul(r11592, r11588, r11591, MPFR_RNDN);
        mpfr_set_d(r11593, t, MPFR_RNDN);
        mpfr_neg(r11594, r11593, MPFR_RNDN);
        mpfr_exp(r11595, r11594, MPFR_RNDN);
        mpfr_add(r11596, r11581, r11595, MPFR_RNDN);
        mpfr_div(r11597, r11581, r11596, MPFR_RNDN);
        mpfr_pow(r11598, r11597, r11587, MPFR_RNDN);
        mpfr_sub(r11599, r11581, r11597, MPFR_RNDN);
        mpfr_pow(r11600, r11599, r11590, MPFR_RNDN);
        mpfr_mul(r11601, r11598, r11600, MPFR_RNDN);
        mpfr_div(r11602, r11592, r11601, MPFR_RNDN);
        return mpfr_get_d(r11602, MPFR_RNDN);
}

static mpfr_t r11603, r11604, r11605, r11606, r11607, r11608, r11609, r11610, r11611, r11612, r11613, r11614, r11615, r11616, r11617, r11618, r11619, r11620, r11621, r11622, r11623, r11624, r11625, r11626, r11627, r11628, r11629, r11630, r11631, r11632, r11633, r11634, r11635, r11636, r11637, r11638, r11639, r11640, r11641, r11642, r11643, r11644, r11645, r11646, r11647, r11648, r11649;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11603, "1", 10, MPFR_RNDN);
        mpfr_init(r11604);
        mpfr_init(r11605);
        mpfr_init(r11606);
        mpfr_init(r11607);
        mpfr_init(r11608);
        mpfr_init_set_str(r11609, "1.8336260487680146e-300", 10, MPFR_RNDN);
        mpfr_init(r11610);
        mpfr_init_set_str(r11611, "0.5000333288116081", 10, MPFR_RNDN);
        mpfr_init(r11612);
        mpfr_init(r11613);
        mpfr_init(r11614);
        mpfr_init(r11615);
        mpfr_init(r11616);
        mpfr_init(r11617);
        mpfr_init(r11618);
        mpfr_init(r11619);
        mpfr_init(r11620);
        mpfr_init(r11621);
        mpfr_init(r11622);
        mpfr_init(r11623);
        mpfr_init(r11624);
        mpfr_init(r11625);
        mpfr_init(r11626);
        mpfr_init(r11627);
        mpfr_init_set_str(r11628, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11629);
        mpfr_init(r11630);
        mpfr_init(r11631);
        mpfr_init(r11632);
        mpfr_init(r11633);
        mpfr_init(r11634);
        mpfr_init(r11635);
        mpfr_init(r11636);
        mpfr_init(r11637);
        mpfr_init(r11638);
        mpfr_init(r11639);
        mpfr_init(r11640);
        mpfr_init(r11641);
        mpfr_init(r11642);
        mpfr_init_set_str(r11643, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11644);
        mpfr_init(r11645);
        mpfr_init(r11646);
        mpfr_init(r11647);
        mpfr_init(r11648);
        mpfr_init(r11649);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11604, s, MPFR_RNDN);
        mpfr_neg(r11605, r11604, MPFR_RNDN);
        mpfr_exp(r11606, r11605, MPFR_RNDN);
        mpfr_add(r11607, r11606, r11603, MPFR_RNDN);
        mpfr_div(r11608, r11603, r11607, MPFR_RNDN);
        ;
        mpfr_set_si(r11610, mpfr_cmp(r11608, r11609) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11612, mpfr_cmp(r11608, r11611) <= 0, MPFR_RNDN);
        mpfr_set_si(r11613, !mpfr_get_si(r11612, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r11614, mpfr_get_si(r11610, MPFR_RNDN) || mpfr_get_si(r11613, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r11615, c_p, MPFR_RNDN);
        mpfr_pow(r11616, r11608, r11615, MPFR_RNDN);
        mpfr_set_d(r11617, t, MPFR_RNDN);
        mpfr_neg(r11618, r11617, MPFR_RNDN);
        mpfr_exp(r11619, r11618, MPFR_RNDN);
        mpfr_add(r11620, r11619, r11603, MPFR_RNDN);
        mpfr_div(r11621, r11603, r11620, MPFR_RNDN);
        mpfr_sub(r11622, r11603, r11621, MPFR_RNDN);
        mpfr_set_d(r11623, c_n, MPFR_RNDN);
        mpfr_pow(r11624, r11622, r11623, MPFR_RNDN);
        mpfr_div(r11625, r11616, r11624, MPFR_RNDN);
        mpfr_sub(r11626, r11603, r11608, MPFR_RNDN);
        mpfr_pow(r11627, r11626, r11623, MPFR_RNDN);
        ;
        mpfr_log(r11629, r11628, MPFR_RNDN);
        mpfr_mul(r11630, r11617, r11628, MPFR_RNDN);
        mpfr_add(r11631, r11629, r11630, MPFR_RNDN);
        mpfr_mul(r11632, r11615, r11631, MPFR_RNDN);
        mpfr_add(r11633, r11632, r11603, MPFR_RNDN);
        mpfr_div(r11634, r11627, r11633, MPFR_RNDN);
        mpfr_mul(r11635, r11625, r11634, MPFR_RNDN);
        mpfr_mul(r11636, r11628, r11623, MPFR_RNDN);
        mpfr_sub(r11637, r11617, r11604, MPFR_RNDN);
        mpfr_mul(r11638, r11636, r11637, MPFR_RNDN);
        mpfr_exp(r11639, r11638, MPFR_RNDN);
        mpfr_div(r11640, r11620, r11607, MPFR_RNDN);
        mpfr_pow(r11641, r11640, r11615, MPFR_RNDN);
        mpfr_mul(r11642, r11604, r11604, MPFR_RNDN);
        ;
        mpfr_mul(r11644, r11643, r11623, MPFR_RNDN);
        mpfr_mul(r11645, r11642, r11644, MPFR_RNDN);
        mpfr_exp(r11646, r11645, MPFR_RNDN);
        mpfr_div(r11647, r11641, r11646, MPFR_RNDN);
        mpfr_mul(r11648, r11639, r11647, MPFR_RNDN);
        if (mpfr_get_si(r11614, MPFR_RNDN)) { mpfr_set(r11649, r11635, MPFR_RNDN); } else { mpfr_set(r11649, r11648, MPFR_RNDN); };
        return mpfr_get_d(r11649, MPFR_RNDN);
}

static mpfr_t r11650, r11651, r11652, r11653, r11654, r11655, r11656, r11657, r11658, r11659, r11660, r11661, r11662, r11663, r11664, r11665, r11666, r11667, r11668, r11669, r11670, r11671, r11672, r11673, r11674, r11675, r11676, r11677, r11678, r11679, r11680, r11681, r11682, r11683, r11684, r11685, r11686, r11687, r11688, r11689, r11690, r11691, r11692, r11693, r11694, r11695, r11696;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2896);
        mpfr_init_set_str(r11650, "1", 10, MPFR_RNDN);
        mpfr_init(r11651);
        mpfr_init(r11652);
        mpfr_init(r11653);
        mpfr_init(r11654);
        mpfr_init(r11655);
        mpfr_init_set_str(r11656, "1.8336260487680146e-300", 10, MPFR_RNDN);
        mpfr_init(r11657);
        mpfr_init_set_str(r11658, "0.5000333288116081", 10, MPFR_RNDN);
        mpfr_init(r11659);
        mpfr_init(r11660);
        mpfr_init(r11661);
        mpfr_init(r11662);
        mpfr_init(r11663);
        mpfr_init(r11664);
        mpfr_init(r11665);
        mpfr_init(r11666);
        mpfr_init(r11667);
        mpfr_init(r11668);
        mpfr_init(r11669);
        mpfr_init(r11670);
        mpfr_init(r11671);
        mpfr_init(r11672);
        mpfr_init(r11673);
        mpfr_init(r11674);
        mpfr_init_set_str(r11675, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11676);
        mpfr_init(r11677);
        mpfr_init(r11678);
        mpfr_init(r11679);
        mpfr_init(r11680);
        mpfr_init(r11681);
        mpfr_init(r11682);
        mpfr_init(r11683);
        mpfr_init(r11684);
        mpfr_init(r11685);
        mpfr_init(r11686);
        mpfr_init(r11687);
        mpfr_init(r11688);
        mpfr_init(r11689);
        mpfr_init_set_str(r11690, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11691);
        mpfr_init(r11692);
        mpfr_init(r11693);
        mpfr_init(r11694);
        mpfr_init(r11695);
        mpfr_init(r11696);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11651, s, MPFR_RNDN);
        mpfr_neg(r11652, r11651, MPFR_RNDN);
        mpfr_exp(r11653, r11652, MPFR_RNDN);
        mpfr_add(r11654, r11653, r11650, MPFR_RNDN);
        mpfr_div(r11655, r11650, r11654, MPFR_RNDN);
        ;
        mpfr_set_si(r11657, mpfr_cmp(r11655, r11656) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11659, mpfr_cmp(r11655, r11658) <= 0, MPFR_RNDN);
        mpfr_set_si(r11660, !mpfr_get_si(r11659, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r11661, mpfr_get_si(r11657, MPFR_RNDN) || mpfr_get_si(r11660, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r11662, c_p, MPFR_RNDN);
        mpfr_pow(r11663, r11655, r11662, MPFR_RNDN);
        mpfr_set_d(r11664, t, MPFR_RNDN);
        mpfr_neg(r11665, r11664, MPFR_RNDN);
        mpfr_exp(r11666, r11665, MPFR_RNDN);
        mpfr_add(r11667, r11666, r11650, MPFR_RNDN);
        mpfr_div(r11668, r11650, r11667, MPFR_RNDN);
        mpfr_sub(r11669, r11650, r11668, MPFR_RNDN);
        mpfr_set_d(r11670, c_n, MPFR_RNDN);
        mpfr_pow(r11671, r11669, r11670, MPFR_RNDN);
        mpfr_div(r11672, r11663, r11671, MPFR_RNDN);
        mpfr_sub(r11673, r11650, r11655, MPFR_RNDN);
        mpfr_pow(r11674, r11673, r11670, MPFR_RNDN);
        ;
        mpfr_log(r11676, r11675, MPFR_RNDN);
        mpfr_mul(r11677, r11664, r11675, MPFR_RNDN);
        mpfr_add(r11678, r11676, r11677, MPFR_RNDN);
        mpfr_mul(r11679, r11662, r11678, MPFR_RNDN);
        mpfr_add(r11680, r11679, r11650, MPFR_RNDN);
        mpfr_div(r11681, r11674, r11680, MPFR_RNDN);
        mpfr_mul(r11682, r11672, r11681, MPFR_RNDN);
        mpfr_mul(r11683, r11675, r11670, MPFR_RNDN);
        mpfr_sub(r11684, r11664, r11651, MPFR_RNDN);
        mpfr_mul(r11685, r11683, r11684, MPFR_RNDN);
        mpfr_exp(r11686, r11685, MPFR_RNDN);
        mpfr_div(r11687, r11667, r11654, MPFR_RNDN);
        mpfr_pow(r11688, r11687, r11662, MPFR_RNDN);
        mpfr_mul(r11689, r11651, r11651, MPFR_RNDN);
        ;
        mpfr_mul(r11691, r11690, r11670, MPFR_RNDN);
        mpfr_mul(r11692, r11689, r11691, MPFR_RNDN);
        mpfr_exp(r11693, r11692, MPFR_RNDN);
        mpfr_div(r11694, r11688, r11693, MPFR_RNDN);
        mpfr_mul(r11695, r11686, r11694, MPFR_RNDN);
        if (mpfr_get_si(r11661, MPFR_RNDN)) { mpfr_set(r11696, r11682, MPFR_RNDN); } else { mpfr_set(r11696, r11695, MPFR_RNDN); };
        return mpfr_get_d(r11696, MPFR_RNDN);
}

