#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 r48511 = 1;
        float r48512 = s;
        float r48513 = -r48512;
        float r48514 = exp(r48513);
        float r48515 = r48511 + r48514;
        float r48516 = r48511 / r48515;
        float r48517 = c_p;
        float r48518 = pow(r48516, r48517);
        float r48519 = r48511 - r48516;
        float r48520 = c_n;
        float r48521 = pow(r48519, r48520);
        float r48522 = r48518 * r48521;
        float r48523 = t;
        float r48524 = -r48523;
        float r48525 = exp(r48524);
        float r48526 = r48511 + r48525;
        float r48527 = r48511 / r48526;
        float r48528 = pow(r48527, r48517);
        float r48529 = r48511 - r48527;
        float r48530 = pow(r48529, r48520);
        float r48531 = r48528 * r48530;
        float r48532 = r48522 / r48531;
        return r48532;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48533 = 1;
        double r48534 = s;
        double r48535 = -r48534;
        double r48536 = exp(r48535);
        double r48537 = r48533 + r48536;
        double r48538 = r48533 / r48537;
        double r48539 = c_p;
        double r48540 = pow(r48538, r48539);
        double r48541 = r48533 - r48538;
        double r48542 = c_n;
        double r48543 = pow(r48541, r48542);
        double r48544 = r48540 * r48543;
        double r48545 = t;
        double r48546 = -r48545;
        double r48547 = exp(r48546);
        double r48548 = r48533 + r48547;
        double r48549 = r48533 / r48548;
        double r48550 = pow(r48549, r48539);
        double r48551 = r48533 - r48549;
        double r48552 = pow(r48551, r48542);
        double r48553 = r48550 * r48552;
        double r48554 = r48544 / r48553;
        return r48554;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48555 = t;
        float r48556 = -335.2389549592286;
        bool r48557 = r48555 <= r48556;
        float r48558 = 1;
        float r48559 = s;
        float r48560 = -r48559;
        float r48561 = exp(r48560);
        float r48562 = r48558 + r48561;
        float r48563 = r48558 / r48562;
        float r48564 = r48558 - r48563;
        float r48565 = -r48555;
        float r48566 = exp(r48565);
        float r48567 = r48558 + r48566;
        float r48568 = r48558 / r48567;
        float r48569 = r48558 - r48568;
        float r48570 = r48564 / r48569;
        float r48571 = c_n;
        float r48572 = pow(r48570, r48571);
        float r48573 = c_p;
        float r48574 = -r48573;
        float r48575 = r48555 - r48559;
        float r48576 = 1/2;
        float r48577 = r48575 * r48576;
        float r48578 = 1/8;
        float r48579 = r48559 * r48578;
        float r48580 = r48579 * r48559;
        float r48581 = r48577 + r48580;
        float r48582 = r48574 * r48581;
        float r48583 = exp(r48582);
        float r48584 = r48572 * r48583;
        float r48585 = log(r48562);
        float r48586 = r48566 + r48558;
        float r48587 = log(r48586);
        float r48588 = r48585 - r48587;
        float r48589 = r48588 * r48574;
        float r48590 = log(r48564);
        float r48591 = r48558 / r48586;
        float r48592 = r48558 - r48591;
        float r48593 = log(r48592);
        float r48594 = r48590 - r48593;
        float r48595 = r48594 * r48571;
        float r48596 = r48589 + r48595;
        float r48597 = exp(r48596);
        float r48598 = r48557 ? r48584 : r48597;
        return r48598;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48599 = t;
        double r48600 = -335.2389549592286;
        bool r48601 = r48599 <= r48600;
        double r48602 = 1;
        double r48603 = s;
        double r48604 = -r48603;
        double r48605 = exp(r48604);
        double r48606 = r48602 + r48605;
        double r48607 = r48602 / r48606;
        double r48608 = r48602 - r48607;
        double r48609 = -r48599;
        double r48610 = exp(r48609);
        double r48611 = r48602 + r48610;
        double r48612 = r48602 / r48611;
        double r48613 = r48602 - r48612;
        double r48614 = r48608 / r48613;
        double r48615 = c_n;
        double r48616 = pow(r48614, r48615);
        double r48617 = c_p;
        double r48618 = -r48617;
        double r48619 = r48599 - r48603;
        double r48620 = 1/2;
        double r48621 = r48619 * r48620;
        double r48622 = 1/8;
        double r48623 = r48603 * r48622;
        double r48624 = r48623 * r48603;
        double r48625 = r48621 + r48624;
        double r48626 = r48618 * r48625;
        double r48627 = exp(r48626);
        double r48628 = r48616 * r48627;
        double r48629 = log(r48606);
        double r48630 = r48610 + r48602;
        double r48631 = log(r48630);
        double r48632 = r48629 - r48631;
        double r48633 = r48632 * r48618;
        double r48634 = log(r48608);
        double r48635 = r48602 / r48630;
        double r48636 = r48602 - r48635;
        double r48637 = log(r48636);
        double r48638 = r48634 - r48637;
        double r48639 = r48638 * r48615;
        double r48640 = r48633 + r48639;
        double r48641 = exp(r48640);
        double r48642 = r48601 ? r48628 : r48641;
        return r48642;
}

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 r48643, r48644, r48645, r48646, r48647, r48648, r48649, r48650, r48651, r48652, r48653, r48654, r48655, r48656, r48657, r48658, r48659, r48660, r48661, r48662, r48663, r48664;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init_set_str(r48643, "1", 10, MPFR_RNDN);
        mpfr_init(r48644);
        mpfr_init(r48645);
        mpfr_init(r48646);
        mpfr_init(r48647);
        mpfr_init(r48648);
        mpfr_init(r48649);
        mpfr_init(r48650);
        mpfr_init(r48651);
        mpfr_init(r48652);
        mpfr_init(r48653);
        mpfr_init(r48654);
        mpfr_init(r48655);
        mpfr_init(r48656);
        mpfr_init(r48657);
        mpfr_init(r48658);
        mpfr_init(r48659);
        mpfr_init(r48660);
        mpfr_init(r48661);
        mpfr_init(r48662);
        mpfr_init(r48663);
        mpfr_init(r48664);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48644, s, MPFR_RNDN);
        mpfr_neg(r48645, r48644, MPFR_RNDN);
        mpfr_exp(r48646, r48645, MPFR_RNDN);
        mpfr_add(r48647, r48643, r48646, MPFR_RNDN);
        mpfr_div(r48648, r48643, r48647, MPFR_RNDN);
        mpfr_set_d(r48649, c_p, MPFR_RNDN);
        mpfr_pow(r48650, r48648, r48649, MPFR_RNDN);
        mpfr_sub(r48651, r48643, r48648, MPFR_RNDN);
        mpfr_set_d(r48652, c_n, MPFR_RNDN);
        mpfr_pow(r48653, r48651, r48652, MPFR_RNDN);
        mpfr_mul(r48654, r48650, r48653, MPFR_RNDN);
        mpfr_set_d(r48655, t, MPFR_RNDN);
        mpfr_neg(r48656, r48655, MPFR_RNDN);
        mpfr_exp(r48657, r48656, MPFR_RNDN);
        mpfr_add(r48658, r48643, r48657, MPFR_RNDN);
        mpfr_div(r48659, r48643, r48658, MPFR_RNDN);
        mpfr_pow(r48660, r48659, r48649, MPFR_RNDN);
        mpfr_sub(r48661, r48643, r48659, MPFR_RNDN);
        mpfr_pow(r48662, r48661, r48652, MPFR_RNDN);
        mpfr_mul(r48663, r48660, r48662, MPFR_RNDN);
        mpfr_div(r48664, r48654, r48663, MPFR_RNDN);
        return mpfr_get_d(r48664, MPFR_RNDN);
}

static mpfr_t r48665, r48666, r48667, r48668, r48669, r48670, r48671, r48672, r48673, r48674, r48675, r48676, r48677, r48678, r48679, r48680, r48681, r48682, r48683, r48684, r48685, r48686, r48687, r48688, r48689, r48690, r48691, r48692, r48693, r48694, r48695, r48696, r48697, r48698, r48699, r48700, r48701, r48702, r48703, r48704, r48705, r48706, r48707, r48708;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r48665);
        mpfr_init_set_str(r48666, "-335.2389549592286", 10, MPFR_RNDN);
        mpfr_init(r48667);
        mpfr_init_set_str(r48668, "1", 10, MPFR_RNDN);
        mpfr_init(r48669);
        mpfr_init(r48670);
        mpfr_init(r48671);
        mpfr_init(r48672);
        mpfr_init(r48673);
        mpfr_init(r48674);
        mpfr_init(r48675);
        mpfr_init(r48676);
        mpfr_init(r48677);
        mpfr_init(r48678);
        mpfr_init(r48679);
        mpfr_init(r48680);
        mpfr_init(r48681);
        mpfr_init(r48682);
        mpfr_init(r48683);
        mpfr_init(r48684);
        mpfr_init(r48685);
        mpfr_init_set_str(r48686, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48687);
        mpfr_init_set_str(r48688, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48689);
        mpfr_init(r48690);
        mpfr_init(r48691);
        mpfr_init(r48692);
        mpfr_init(r48693);
        mpfr_init(r48694);
        mpfr_init(r48695);
        mpfr_init(r48696);
        mpfr_init(r48697);
        mpfr_init(r48698);
        mpfr_init(r48699);
        mpfr_init(r48700);
        mpfr_init(r48701);
        mpfr_init(r48702);
        mpfr_init(r48703);
        mpfr_init(r48704);
        mpfr_init(r48705);
        mpfr_init(r48706);
        mpfr_init(r48707);
        mpfr_init(r48708);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48665, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48667, mpfr_cmp(r48665, r48666) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48669, s, MPFR_RNDN);
        mpfr_neg(r48670, r48669, MPFR_RNDN);
        mpfr_exp(r48671, r48670, MPFR_RNDN);
        mpfr_add(r48672, r48668, r48671, MPFR_RNDN);
        mpfr_div(r48673, r48668, r48672, MPFR_RNDN);
        mpfr_sub(r48674, r48668, r48673, MPFR_RNDN);
        mpfr_neg(r48675, r48665, MPFR_RNDN);
        mpfr_exp(r48676, r48675, MPFR_RNDN);
        mpfr_add(r48677, r48668, r48676, MPFR_RNDN);
        mpfr_div(r48678, r48668, r48677, MPFR_RNDN);
        mpfr_sub(r48679, r48668, r48678, MPFR_RNDN);
        mpfr_div(r48680, r48674, r48679, MPFR_RNDN);
        mpfr_set_d(r48681, c_n, MPFR_RNDN);
        mpfr_pow(r48682, r48680, r48681, MPFR_RNDN);
        mpfr_set_d(r48683, c_p, MPFR_RNDN);
        mpfr_neg(r48684, r48683, MPFR_RNDN);
        mpfr_sub(r48685, r48665, r48669, MPFR_RNDN);
        ;
        mpfr_mul(r48687, r48685, r48686, MPFR_RNDN);
        ;
        mpfr_mul(r48689, r48669, r48688, MPFR_RNDN);
        mpfr_mul(r48690, r48689, r48669, MPFR_RNDN);
        mpfr_add(r48691, r48687, r48690, MPFR_RNDN);
        mpfr_mul(r48692, r48684, r48691, MPFR_RNDN);
        mpfr_exp(r48693, r48692, MPFR_RNDN);
        mpfr_mul(r48694, r48682, r48693, MPFR_RNDN);
        mpfr_log(r48695, r48672, MPFR_RNDN);
        mpfr_add(r48696, r48676, r48668, MPFR_RNDN);
        mpfr_log(r48697, r48696, MPFR_RNDN);
        mpfr_sub(r48698, r48695, r48697, MPFR_RNDN);
        mpfr_mul(r48699, r48698, r48684, MPFR_RNDN);
        mpfr_log(r48700, r48674, MPFR_RNDN);
        mpfr_div(r48701, r48668, r48696, MPFR_RNDN);
        mpfr_sub(r48702, r48668, r48701, MPFR_RNDN);
        mpfr_log(r48703, r48702, MPFR_RNDN);
        mpfr_sub(r48704, r48700, r48703, MPFR_RNDN);
        mpfr_mul(r48705, r48704, r48681, MPFR_RNDN);
        mpfr_add(r48706, r48699, r48705, MPFR_RNDN);
        mpfr_exp(r48707, r48706, MPFR_RNDN);
        if (mpfr_get_si(r48667, MPFR_RNDN)) { mpfr_set(r48708, r48694, MPFR_RNDN); } else { mpfr_set(r48708, r48707, MPFR_RNDN); };
        return mpfr_get_d(r48708, MPFR_RNDN);
}

static mpfr_t r48709, r48710, r48711, r48712, r48713, r48714, r48715, r48716, r48717, r48718, r48719, r48720, r48721, r48722, r48723, r48724, r48725, r48726, r48727, r48728, r48729, r48730, r48731, r48732, r48733, r48734, r48735, r48736, r48737, r48738, r48739, r48740, r48741, r48742, r48743, r48744, r48745, r48746, r48747, r48748, r48749, r48750, r48751, r48752;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r48709);
        mpfr_init_set_str(r48710, "-335.2389549592286", 10, MPFR_RNDN);
        mpfr_init(r48711);
        mpfr_init_set_str(r48712, "1", 10, MPFR_RNDN);
        mpfr_init(r48713);
        mpfr_init(r48714);
        mpfr_init(r48715);
        mpfr_init(r48716);
        mpfr_init(r48717);
        mpfr_init(r48718);
        mpfr_init(r48719);
        mpfr_init(r48720);
        mpfr_init(r48721);
        mpfr_init(r48722);
        mpfr_init(r48723);
        mpfr_init(r48724);
        mpfr_init(r48725);
        mpfr_init(r48726);
        mpfr_init(r48727);
        mpfr_init(r48728);
        mpfr_init(r48729);
        mpfr_init_set_str(r48730, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48731);
        mpfr_init_set_str(r48732, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48733);
        mpfr_init(r48734);
        mpfr_init(r48735);
        mpfr_init(r48736);
        mpfr_init(r48737);
        mpfr_init(r48738);
        mpfr_init(r48739);
        mpfr_init(r48740);
        mpfr_init(r48741);
        mpfr_init(r48742);
        mpfr_init(r48743);
        mpfr_init(r48744);
        mpfr_init(r48745);
        mpfr_init(r48746);
        mpfr_init(r48747);
        mpfr_init(r48748);
        mpfr_init(r48749);
        mpfr_init(r48750);
        mpfr_init(r48751);
        mpfr_init(r48752);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48709, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48711, mpfr_cmp(r48709, r48710) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48713, s, MPFR_RNDN);
        mpfr_neg(r48714, r48713, MPFR_RNDN);
        mpfr_exp(r48715, r48714, MPFR_RNDN);
        mpfr_add(r48716, r48712, r48715, MPFR_RNDN);
        mpfr_div(r48717, r48712, r48716, MPFR_RNDN);
        mpfr_sub(r48718, r48712, r48717, MPFR_RNDN);
        mpfr_neg(r48719, r48709, MPFR_RNDN);
        mpfr_exp(r48720, r48719, MPFR_RNDN);
        mpfr_add(r48721, r48712, r48720, MPFR_RNDN);
        mpfr_div(r48722, r48712, r48721, MPFR_RNDN);
        mpfr_sub(r48723, r48712, r48722, MPFR_RNDN);
        mpfr_div(r48724, r48718, r48723, MPFR_RNDN);
        mpfr_set_d(r48725, c_n, MPFR_RNDN);
        mpfr_pow(r48726, r48724, r48725, MPFR_RNDN);
        mpfr_set_d(r48727, c_p, MPFR_RNDN);
        mpfr_neg(r48728, r48727, MPFR_RNDN);
        mpfr_sub(r48729, r48709, r48713, MPFR_RNDN);
        ;
        mpfr_mul(r48731, r48729, r48730, MPFR_RNDN);
        ;
        mpfr_mul(r48733, r48713, r48732, MPFR_RNDN);
        mpfr_mul(r48734, r48733, r48713, MPFR_RNDN);
        mpfr_add(r48735, r48731, r48734, MPFR_RNDN);
        mpfr_mul(r48736, r48728, r48735, MPFR_RNDN);
        mpfr_exp(r48737, r48736, MPFR_RNDN);
        mpfr_mul(r48738, r48726, r48737, MPFR_RNDN);
        mpfr_log(r48739, r48716, MPFR_RNDN);
        mpfr_add(r48740, r48720, r48712, MPFR_RNDN);
        mpfr_log(r48741, r48740, MPFR_RNDN);
        mpfr_sub(r48742, r48739, r48741, MPFR_RNDN);
        mpfr_mul(r48743, r48742, r48728, MPFR_RNDN);
        mpfr_log(r48744, r48718, MPFR_RNDN);
        mpfr_div(r48745, r48712, r48740, MPFR_RNDN);
        mpfr_sub(r48746, r48712, r48745, MPFR_RNDN);
        mpfr_log(r48747, r48746, MPFR_RNDN);
        mpfr_sub(r48748, r48744, r48747, MPFR_RNDN);
        mpfr_mul(r48749, r48748, r48725, MPFR_RNDN);
        mpfr_add(r48750, r48743, r48749, MPFR_RNDN);
        mpfr_exp(r48751, r48750, MPFR_RNDN);
        if (mpfr_get_si(r48711, MPFR_RNDN)) { mpfr_set(r48752, r48738, MPFR_RNDN); } else { mpfr_set(r48752, r48751, MPFR_RNDN); };
        return mpfr_get_d(r48752, MPFR_RNDN);
}

