#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 r25467 = 1;
        float r25468 = s;
        float r25469 = -r25468;
        float r25470 = exp(r25469);
        float r25471 = r25467 + r25470;
        float r25472 = r25467 / r25471;
        float r25473 = c_p;
        float r25474 = pow(r25472, r25473);
        float r25475 = r25467 - r25472;
        float r25476 = c_n;
        float r25477 = pow(r25475, r25476);
        float r25478 = r25474 * r25477;
        float r25479 = t;
        float r25480 = -r25479;
        float r25481 = exp(r25480);
        float r25482 = r25467 + r25481;
        float r25483 = r25467 / r25482;
        float r25484 = pow(r25483, r25473);
        float r25485 = r25467 - r25483;
        float r25486 = pow(r25485, r25476);
        float r25487 = r25484 * r25486;
        float r25488 = r25478 / r25487;
        return r25488;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r25489 = 1;
        double r25490 = s;
        double r25491 = -r25490;
        double r25492 = exp(r25491);
        double r25493 = r25489 + r25492;
        double r25494 = r25489 / r25493;
        double r25495 = c_p;
        double r25496 = pow(r25494, r25495);
        double r25497 = r25489 - r25494;
        double r25498 = c_n;
        double r25499 = pow(r25497, r25498);
        double r25500 = r25496 * r25499;
        double r25501 = t;
        double r25502 = -r25501;
        double r25503 = exp(r25502);
        double r25504 = r25489 + r25503;
        double r25505 = r25489 / r25504;
        double r25506 = pow(r25505, r25495);
        double r25507 = r25489 - r25505;
        double r25508 = pow(r25507, r25498);
        double r25509 = r25506 * r25508;
        double r25510 = r25500 / r25509;
        return r25510;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r25511 = s;
        float r25512 = -r25511;
        float r25513 = -568.7478543096058;
        bool r25514 = r25512 <= r25513;
        float r25515 = 1;
        float r25516 = exp(r25512);
        float r25517 = r25515 + r25516;
        float r25518 = r25515 / r25517;
        float r25519 = r25515 - r25518;
        float r25520 = c_n;
        float r25521 = pow(r25519, r25520);
        float r25522 = t;
        float r25523 = -r25522;
        float r25524 = exp(r25523);
        float r25525 = r25515 + r25524;
        float r25526 = r25515 / r25525;
        float r25527 = r25515 - r25526;
        float r25528 = pow(r25527, r25520);
        float r25529 = r25521 / r25528;
        float r25530 = c_p;
        float r25531 = pow(r25518, r25530);
        float r25532 = 1/2;
        float r25533 = log(r25532);
        float r25534 = r25522 * r25532;
        float r25535 = r25533 + r25534;
        float r25536 = r25530 * r25535;
        float r25537 = r25536 + r25515;
        float r25538 = r25531 / r25537;
        float r25539 = r25529 * r25538;
        float r25540 = 694813722.037109;
        bool r25541 = r25512 <= r25540;
        float r25542 = r25530 - r25520;
        float r25543 = r25511 * r25532;
        float r25544 = r25542 * r25543;
        float r25545 = r25515 + r25544;
        float r25546 = log(r25519);
        float r25547 = r25524 + r25515;
        float r25548 = r25515 / r25547;
        float r25549 = r25515 - r25548;
        float r25550 = log(r25549);
        float r25551 = r25546 - r25550;
        float r25552 = r25551 * r25520;
        float r25553 = r25517 / r25547;
        float r25554 = cbrt(r25553);
        float r25555 = r25554 * r25554;
        float r25556 = log(r25555);
        float r25557 = r25517 / r25525;
        float r25558 = cbrt(r25557);
        float r25559 = log(r25558);
        float r25560 = 3;
        float r25561 = pow(r25559, r25560);
        float r25562 = cbrt(r25561);
        float r25563 = r25556 + r25562;
        float r25564 = r25563 * r25530;
        float r25565 = r25552 - r25564;
        float r25566 = exp(r25565);
        float r25567 = r25541 ? r25545 : r25566;
        float r25568 = r25514 ? r25539 : r25567;
        return r25568;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r25569 = s;
        double r25570 = -r25569;
        double r25571 = -568.7478543096058;
        bool r25572 = r25570 <= r25571;
        double r25573 = 1;
        double r25574 = exp(r25570);
        double r25575 = r25573 + r25574;
        double r25576 = r25573 / r25575;
        double r25577 = r25573 - r25576;
        double r25578 = c_n;
        double r25579 = pow(r25577, r25578);
        double r25580 = t;
        double r25581 = -r25580;
        double r25582 = exp(r25581);
        double r25583 = r25573 + r25582;
        double r25584 = r25573 / r25583;
        double r25585 = r25573 - r25584;
        double r25586 = pow(r25585, r25578);
        double r25587 = r25579 / r25586;
        double r25588 = c_p;
        double r25589 = pow(r25576, r25588);
        double r25590 = 1/2;
        double r25591 = log(r25590);
        double r25592 = r25580 * r25590;
        double r25593 = r25591 + r25592;
        double r25594 = r25588 * r25593;
        double r25595 = r25594 + r25573;
        double r25596 = r25589 / r25595;
        double r25597 = r25587 * r25596;
        double r25598 = 694813722.037109;
        bool r25599 = r25570 <= r25598;
        double r25600 = r25588 - r25578;
        double r25601 = r25569 * r25590;
        double r25602 = r25600 * r25601;
        double r25603 = r25573 + r25602;
        double r25604 = log(r25577);
        double r25605 = r25582 + r25573;
        double r25606 = r25573 / r25605;
        double r25607 = r25573 - r25606;
        double r25608 = log(r25607);
        double r25609 = r25604 - r25608;
        double r25610 = r25609 * r25578;
        double r25611 = r25575 / r25605;
        double r25612 = cbrt(r25611);
        double r25613 = r25612 * r25612;
        double r25614 = log(r25613);
        double r25615 = r25575 / r25583;
        double r25616 = cbrt(r25615);
        double r25617 = log(r25616);
        double r25618 = 3;
        double r25619 = pow(r25617, r25618);
        double r25620 = cbrt(r25619);
        double r25621 = r25614 + r25620;
        double r25622 = r25621 * r25588;
        double r25623 = r25610 - r25622;
        double r25624 = exp(r25623);
        double r25625 = r25599 ? r25603 : r25624;
        double r25626 = r25572 ? r25597 : r25625;
        return r25626;
}

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 r25627, r25628, r25629, r25630, r25631, r25632, r25633, r25634, r25635, r25636, r25637, r25638, r25639, r25640, r25641, r25642, r25643, r25644, r25645, r25646, r25647, r25648;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r25627, "1", 10, MPFR_RNDN);
        mpfr_init(r25628);
        mpfr_init(r25629);
        mpfr_init(r25630);
        mpfr_init(r25631);
        mpfr_init(r25632);
        mpfr_init(r25633);
        mpfr_init(r25634);
        mpfr_init(r25635);
        mpfr_init(r25636);
        mpfr_init(r25637);
        mpfr_init(r25638);
        mpfr_init(r25639);
        mpfr_init(r25640);
        mpfr_init(r25641);
        mpfr_init(r25642);
        mpfr_init(r25643);
        mpfr_init(r25644);
        mpfr_init(r25645);
        mpfr_init(r25646);
        mpfr_init(r25647);
        mpfr_init(r25648);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r25628, s, MPFR_RNDN);
        mpfr_neg(r25629, r25628, MPFR_RNDN);
        mpfr_exp(r25630, r25629, MPFR_RNDN);
        mpfr_add(r25631, r25627, r25630, MPFR_RNDN);
        mpfr_div(r25632, r25627, r25631, MPFR_RNDN);
        mpfr_set_d(r25633, c_p, MPFR_RNDN);
        mpfr_pow(r25634, r25632, r25633, MPFR_RNDN);
        mpfr_sub(r25635, r25627, r25632, MPFR_RNDN);
        mpfr_set_d(r25636, c_n, MPFR_RNDN);
        mpfr_pow(r25637, r25635, r25636, MPFR_RNDN);
        mpfr_mul(r25638, r25634, r25637, MPFR_RNDN);
        mpfr_set_d(r25639, t, MPFR_RNDN);
        mpfr_neg(r25640, r25639, MPFR_RNDN);
        mpfr_exp(r25641, r25640, MPFR_RNDN);
        mpfr_add(r25642, r25627, r25641, MPFR_RNDN);
        mpfr_div(r25643, r25627, r25642, MPFR_RNDN);
        mpfr_pow(r25644, r25643, r25633, MPFR_RNDN);
        mpfr_sub(r25645, r25627, r25643, MPFR_RNDN);
        mpfr_pow(r25646, r25645, r25636, MPFR_RNDN);
        mpfr_mul(r25647, r25644, r25646, MPFR_RNDN);
        mpfr_div(r25648, r25638, r25647, MPFR_RNDN);
        return mpfr_get_d(r25648, MPFR_RNDN);
}

static mpfr_t r25649, r25650, r25651, r25652, r25653, r25654, r25655, r25656, r25657, r25658, r25659, r25660, r25661, r25662, r25663, r25664, r25665, r25666, r25667, r25668, r25669, r25670, r25671, r25672, r25673, r25674, r25675, r25676, r25677, r25678, r25679, r25680, r25681, r25682, r25683, r25684, r25685, r25686, r25687, r25688, r25689, r25690, r25691, r25692, r25693, r25694, r25695, r25696, r25697, r25698, r25699, r25700, r25701, r25702, r25703, r25704, r25705, r25706;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r25649);
        mpfr_init(r25650);
        mpfr_init_set_str(r25651, "-568.7478543096058", 10, MPFR_RNDN);
        mpfr_init(r25652);
        mpfr_init_set_str(r25653, "1", 10, MPFR_RNDN);
        mpfr_init(r25654);
        mpfr_init(r25655);
        mpfr_init(r25656);
        mpfr_init(r25657);
        mpfr_init(r25658);
        mpfr_init(r25659);
        mpfr_init(r25660);
        mpfr_init(r25661);
        mpfr_init(r25662);
        mpfr_init(r25663);
        mpfr_init(r25664);
        mpfr_init(r25665);
        mpfr_init(r25666);
        mpfr_init(r25667);
        mpfr_init(r25668);
        mpfr_init(r25669);
        mpfr_init_set_str(r25670, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25671);
        mpfr_init(r25672);
        mpfr_init(r25673);
        mpfr_init(r25674);
        mpfr_init(r25675);
        mpfr_init(r25676);
        mpfr_init(r25677);
        mpfr_init_set_str(r25678, "694813722.037109", 10, MPFR_RNDN);
        mpfr_init(r25679);
        mpfr_init(r25680);
        mpfr_init(r25681);
        mpfr_init(r25682);
        mpfr_init(r25683);
        mpfr_init(r25684);
        mpfr_init(r25685);
        mpfr_init(r25686);
        mpfr_init(r25687);
        mpfr_init(r25688);
        mpfr_init(r25689);
        mpfr_init(r25690);
        mpfr_init(r25691);
        mpfr_init(r25692);
        mpfr_init(r25693);
        mpfr_init(r25694);
        mpfr_init(r25695);
        mpfr_init(r25696);
        mpfr_init(r25697);
        mpfr_init_set_str(r25698, "3", 10, MPFR_RNDN);
        mpfr_init(r25699);
        mpfr_init(r25700);
        mpfr_init(r25701);
        mpfr_init(r25702);
        mpfr_init(r25703);
        mpfr_init(r25704);
        mpfr_init(r25705);
        mpfr_init(r25706);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r25649, s, MPFR_RNDN);
        mpfr_neg(r25650, r25649, MPFR_RNDN);
        ;
        mpfr_set_si(r25652, mpfr_cmp(r25650, r25651) <= 0, MPFR_RNDN);
        ;
        mpfr_exp(r25654, r25650, MPFR_RNDN);
        mpfr_add(r25655, r25653, r25654, MPFR_RNDN);
        mpfr_div(r25656, r25653, r25655, MPFR_RNDN);
        mpfr_sub(r25657, r25653, r25656, MPFR_RNDN);
        mpfr_set_d(r25658, c_n, MPFR_RNDN);
        mpfr_pow(r25659, r25657, r25658, MPFR_RNDN);
        mpfr_set_d(r25660, t, MPFR_RNDN);
        mpfr_neg(r25661, r25660, MPFR_RNDN);
        mpfr_exp(r25662, r25661, MPFR_RNDN);
        mpfr_add(r25663, r25653, r25662, MPFR_RNDN);
        mpfr_div(r25664, r25653, r25663, MPFR_RNDN);
        mpfr_sub(r25665, r25653, r25664, MPFR_RNDN);
        mpfr_pow(r25666, r25665, r25658, MPFR_RNDN);
        mpfr_div(r25667, r25659, r25666, MPFR_RNDN);
        mpfr_set_d(r25668, c_p, MPFR_RNDN);
        mpfr_pow(r25669, r25656, r25668, MPFR_RNDN);
        ;
        mpfr_log(r25671, r25670, MPFR_RNDN);
        mpfr_mul(r25672, r25660, r25670, MPFR_RNDN);
        mpfr_add(r25673, r25671, r25672, MPFR_RNDN);
        mpfr_mul(r25674, r25668, r25673, MPFR_RNDN);
        mpfr_add(r25675, r25674, r25653, MPFR_RNDN);
        mpfr_div(r25676, r25669, r25675, MPFR_RNDN);
        mpfr_mul(r25677, r25667, r25676, MPFR_RNDN);
        ;
        mpfr_set_si(r25679, mpfr_cmp(r25650, r25678) <= 0, MPFR_RNDN);
        mpfr_sub(r25680, r25668, r25658, MPFR_RNDN);
        mpfr_mul(r25681, r25649, r25670, MPFR_RNDN);
        mpfr_mul(r25682, r25680, r25681, MPFR_RNDN);
        mpfr_add(r25683, r25653, r25682, MPFR_RNDN);
        mpfr_log(r25684, r25657, MPFR_RNDN);
        mpfr_add(r25685, r25662, r25653, MPFR_RNDN);
        mpfr_div(r25686, r25653, r25685, MPFR_RNDN);
        mpfr_sub(r25687, r25653, r25686, MPFR_RNDN);
        mpfr_log(r25688, r25687, MPFR_RNDN);
        mpfr_sub(r25689, r25684, r25688, MPFR_RNDN);
        mpfr_mul(r25690, r25689, r25658, MPFR_RNDN);
        mpfr_div(r25691, r25655, r25685, MPFR_RNDN);
        mpfr_cbrt(r25692, r25691, MPFR_RNDN);
        mpfr_mul(r25693, r25692, r25692, MPFR_RNDN);
        mpfr_log(r25694, r25693, MPFR_RNDN);
        mpfr_div(r25695, r25655, r25663, MPFR_RNDN);
        mpfr_cbrt(r25696, r25695, MPFR_RNDN);
        mpfr_log(r25697, r25696, MPFR_RNDN);
        ;
        mpfr_pow(r25699, r25697, r25698, MPFR_RNDN);
        mpfr_cbrt(r25700, r25699, MPFR_RNDN);
        mpfr_add(r25701, r25694, r25700, MPFR_RNDN);
        mpfr_mul(r25702, r25701, r25668, MPFR_RNDN);
        mpfr_sub(r25703, r25690, r25702, MPFR_RNDN);
        mpfr_exp(r25704, r25703, MPFR_RNDN);
        if (mpfr_get_si(r25679, MPFR_RNDN)) { mpfr_set(r25705, r25683, MPFR_RNDN); } else { mpfr_set(r25705, r25704, MPFR_RNDN); };
        if (mpfr_get_si(r25652, MPFR_RNDN)) { mpfr_set(r25706, r25677, MPFR_RNDN); } else { mpfr_set(r25706, r25705, MPFR_RNDN); };
        return mpfr_get_d(r25706, MPFR_RNDN);
}

static mpfr_t r25707, r25708, r25709, r25710, r25711, r25712, r25713, r25714, r25715, r25716, r25717, r25718, r25719, r25720, r25721, r25722, r25723, r25724, r25725, r25726, r25727, r25728, r25729, r25730, r25731, r25732, r25733, r25734, r25735, r25736, r25737, r25738, r25739, r25740, r25741, r25742, r25743, r25744, r25745, r25746, r25747, r25748, r25749, r25750, r25751, r25752, r25753, r25754, r25755, r25756, r25757, r25758, r25759, r25760, r25761, r25762, r25763, r25764;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r25707);
        mpfr_init(r25708);
        mpfr_init_set_str(r25709, "-568.7478543096058", 10, MPFR_RNDN);
        mpfr_init(r25710);
        mpfr_init_set_str(r25711, "1", 10, MPFR_RNDN);
        mpfr_init(r25712);
        mpfr_init(r25713);
        mpfr_init(r25714);
        mpfr_init(r25715);
        mpfr_init(r25716);
        mpfr_init(r25717);
        mpfr_init(r25718);
        mpfr_init(r25719);
        mpfr_init(r25720);
        mpfr_init(r25721);
        mpfr_init(r25722);
        mpfr_init(r25723);
        mpfr_init(r25724);
        mpfr_init(r25725);
        mpfr_init(r25726);
        mpfr_init(r25727);
        mpfr_init_set_str(r25728, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25729);
        mpfr_init(r25730);
        mpfr_init(r25731);
        mpfr_init(r25732);
        mpfr_init(r25733);
        mpfr_init(r25734);
        mpfr_init(r25735);
        mpfr_init_set_str(r25736, "694813722.037109", 10, MPFR_RNDN);
        mpfr_init(r25737);
        mpfr_init(r25738);
        mpfr_init(r25739);
        mpfr_init(r25740);
        mpfr_init(r25741);
        mpfr_init(r25742);
        mpfr_init(r25743);
        mpfr_init(r25744);
        mpfr_init(r25745);
        mpfr_init(r25746);
        mpfr_init(r25747);
        mpfr_init(r25748);
        mpfr_init(r25749);
        mpfr_init(r25750);
        mpfr_init(r25751);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init(r25754);
        mpfr_init(r25755);
        mpfr_init_set_str(r25756, "3", 10, MPFR_RNDN);
        mpfr_init(r25757);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init(r25760);
        mpfr_init(r25761);
        mpfr_init(r25762);
        mpfr_init(r25763);
        mpfr_init(r25764);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r25707, s, MPFR_RNDN);
        mpfr_neg(r25708, r25707, MPFR_RNDN);
        ;
        mpfr_set_si(r25710, mpfr_cmp(r25708, r25709) <= 0, MPFR_RNDN);
        ;
        mpfr_exp(r25712, r25708, MPFR_RNDN);
        mpfr_add(r25713, r25711, r25712, MPFR_RNDN);
        mpfr_div(r25714, r25711, r25713, MPFR_RNDN);
        mpfr_sub(r25715, r25711, r25714, MPFR_RNDN);
        mpfr_set_d(r25716, c_n, MPFR_RNDN);
        mpfr_pow(r25717, r25715, r25716, MPFR_RNDN);
        mpfr_set_d(r25718, t, MPFR_RNDN);
        mpfr_neg(r25719, r25718, MPFR_RNDN);
        mpfr_exp(r25720, r25719, MPFR_RNDN);
        mpfr_add(r25721, r25711, r25720, MPFR_RNDN);
        mpfr_div(r25722, r25711, r25721, MPFR_RNDN);
        mpfr_sub(r25723, r25711, r25722, MPFR_RNDN);
        mpfr_pow(r25724, r25723, r25716, MPFR_RNDN);
        mpfr_div(r25725, r25717, r25724, MPFR_RNDN);
        mpfr_set_d(r25726, c_p, MPFR_RNDN);
        mpfr_pow(r25727, r25714, r25726, MPFR_RNDN);
        ;
        mpfr_log(r25729, r25728, MPFR_RNDN);
        mpfr_mul(r25730, r25718, r25728, MPFR_RNDN);
        mpfr_add(r25731, r25729, r25730, MPFR_RNDN);
        mpfr_mul(r25732, r25726, r25731, MPFR_RNDN);
        mpfr_add(r25733, r25732, r25711, MPFR_RNDN);
        mpfr_div(r25734, r25727, r25733, MPFR_RNDN);
        mpfr_mul(r25735, r25725, r25734, MPFR_RNDN);
        ;
        mpfr_set_si(r25737, mpfr_cmp(r25708, r25736) <= 0, MPFR_RNDN);
        mpfr_sub(r25738, r25726, r25716, MPFR_RNDN);
        mpfr_mul(r25739, r25707, r25728, MPFR_RNDN);
        mpfr_mul(r25740, r25738, r25739, MPFR_RNDN);
        mpfr_add(r25741, r25711, r25740, MPFR_RNDN);
        mpfr_log(r25742, r25715, MPFR_RNDN);
        mpfr_add(r25743, r25720, r25711, MPFR_RNDN);
        mpfr_div(r25744, r25711, r25743, MPFR_RNDN);
        mpfr_sub(r25745, r25711, r25744, MPFR_RNDN);
        mpfr_log(r25746, r25745, MPFR_RNDN);
        mpfr_sub(r25747, r25742, r25746, MPFR_RNDN);
        mpfr_mul(r25748, r25747, r25716, MPFR_RNDN);
        mpfr_div(r25749, r25713, r25743, MPFR_RNDN);
        mpfr_cbrt(r25750, r25749, MPFR_RNDN);
        mpfr_mul(r25751, r25750, r25750, MPFR_RNDN);
        mpfr_log(r25752, r25751, MPFR_RNDN);
        mpfr_div(r25753, r25713, r25721, MPFR_RNDN);
        mpfr_cbrt(r25754, r25753, MPFR_RNDN);
        mpfr_log(r25755, r25754, MPFR_RNDN);
        ;
        mpfr_pow(r25757, r25755, r25756, MPFR_RNDN);
        mpfr_cbrt(r25758, r25757, MPFR_RNDN);
        mpfr_add(r25759, r25752, r25758, MPFR_RNDN);
        mpfr_mul(r25760, r25759, r25726, MPFR_RNDN);
        mpfr_sub(r25761, r25748, r25760, MPFR_RNDN);
        mpfr_exp(r25762, r25761, MPFR_RNDN);
        if (mpfr_get_si(r25737, MPFR_RNDN)) { mpfr_set(r25763, r25741, MPFR_RNDN); } else { mpfr_set(r25763, r25762, MPFR_RNDN); };
        if (mpfr_get_si(r25710, MPFR_RNDN)) { mpfr_set(r25764, r25735, MPFR_RNDN); } else { mpfr_set(r25764, r25763, MPFR_RNDN); };
        return mpfr_get_d(r25764, MPFR_RNDN);
}

