#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 r18363545 = 1;
        float r18363546 = s;
        float r18363547 = -r18363546;
        float r18363548 = exp(r18363547);
        float r18363549 = r18363545 + r18363548;
        float r18363550 = r18363545 / r18363549;
        float r18363551 = c_p;
        float r18363552 = pow(r18363550, r18363551);
        float r18363553 = r18363545 - r18363550;
        float r18363554 = c_n;
        float r18363555 = pow(r18363553, r18363554);
        float r18363556 = r18363552 * r18363555;
        float r18363557 = t;
        float r18363558 = -r18363557;
        float r18363559 = exp(r18363558);
        float r18363560 = r18363545 + r18363559;
        float r18363561 = r18363545 / r18363560;
        float r18363562 = pow(r18363561, r18363551);
        float r18363563 = r18363545 - r18363561;
        float r18363564 = pow(r18363563, r18363554);
        float r18363565 = r18363562 * r18363564;
        float r18363566 = r18363556 / r18363565;
        return r18363566;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r18363567 = 1;
        double r18363568 = s;
        double r18363569 = -r18363568;
        double r18363570 = exp(r18363569);
        double r18363571 = r18363567 + r18363570;
        double r18363572 = r18363567 / r18363571;
        double r18363573 = c_p;
        double r18363574 = pow(r18363572, r18363573);
        double r18363575 = r18363567 - r18363572;
        double r18363576 = c_n;
        double r18363577 = pow(r18363575, r18363576);
        double r18363578 = r18363574 * r18363577;
        double r18363579 = t;
        double r18363580 = -r18363579;
        double r18363581 = exp(r18363580);
        double r18363582 = r18363567 + r18363581;
        double r18363583 = r18363567 / r18363582;
        double r18363584 = pow(r18363583, r18363573);
        double r18363585 = r18363567 - r18363583;
        double r18363586 = pow(r18363585, r18363576);
        double r18363587 = r18363584 * r18363586;
        double r18363588 = r18363578 / r18363587;
        return r18363588;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r18363589 = s;
        float r18363590 = -786821888.1454914;
        bool r18363591 = r18363589 <= r18363590;
        float r18363592 = 1;
        float r18363593 = -r18363589;
        float r18363594 = exp(r18363593);
        float r18363595 = r18363594 + r18363592;
        float r18363596 = r18363592 / r18363595;
        float r18363597 = r18363592 - r18363596;
        float r18363598 = c_n;
        float r18363599 = pow(r18363597, r18363598);
        float r18363600 = t;
        float r18363601 = -r18363600;
        float r18363602 = exp(r18363601);
        float r18363603 = r18363592 + r18363602;
        float r18363604 = r18363592 / r18363603;
        float r18363605 = r18363592 - r18363604;
        float r18363606 = pow(r18363605, r18363598);
        float r18363607 = r18363599 / r18363606;
        float r18363608 = c_p;
        float r18363609 = pow(r18363596, r18363608);
        float r18363610 = 1/2;
        float r18363611 = r18363600 * r18363610;
        float r18363612 = log(r18363610);
        float r18363613 = r18363611 + r18363612;
        float r18363614 = r18363613 * r18363608;
        float r18363615 = r18363614 + r18363592;
        float r18363616 = r18363609 / r18363615;
        float r18363617 = r18363607 * r18363616;
        float r18363618 = 495.1328251891863;
        bool r18363619 = r18363589 <= r18363618;
        float r18363620 = r18363610 * r18363589;
        float r18363621 = r18363608 - r18363598;
        float r18363622 = r18363620 * r18363621;
        float r18363623 = r18363592 + r18363622;
        float r18363624 = log(r18363595);
        float r18363625 = log(r18363603);
        float r18363626 = r18363624 - r18363625;
        float r18363627 = -r18363608;
        float r18363628 = r18363626 * r18363627;
        float r18363629 = log(r18363597);
        float r18363630 = log(r18363605);
        float r18363631 = r18363629 - r18363630;
        float r18363632 = r18363631 * r18363598;
        float r18363633 = r18363628 + r18363632;
        float r18363634 = exp(r18363633);
        float r18363635 = r18363619 ? r18363623 : r18363634;
        float r18363636 = r18363591 ? r18363617 : r18363635;
        return r18363636;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r18363637 = s;
        double r18363638 = -786821888.1454914;
        bool r18363639 = r18363637 <= r18363638;
        double r18363640 = 1;
        double r18363641 = -r18363637;
        double r18363642 = exp(r18363641);
        double r18363643 = r18363642 + r18363640;
        double r18363644 = r18363640 / r18363643;
        double r18363645 = r18363640 - r18363644;
        double r18363646 = c_n;
        double r18363647 = pow(r18363645, r18363646);
        double r18363648 = t;
        double r18363649 = -r18363648;
        double r18363650 = exp(r18363649);
        double r18363651 = r18363640 + r18363650;
        double r18363652 = r18363640 / r18363651;
        double r18363653 = r18363640 - r18363652;
        double r18363654 = pow(r18363653, r18363646);
        double r18363655 = r18363647 / r18363654;
        double r18363656 = c_p;
        double r18363657 = pow(r18363644, r18363656);
        double r18363658 = 1/2;
        double r18363659 = r18363648 * r18363658;
        double r18363660 = log(r18363658);
        double r18363661 = r18363659 + r18363660;
        double r18363662 = r18363661 * r18363656;
        double r18363663 = r18363662 + r18363640;
        double r18363664 = r18363657 / r18363663;
        double r18363665 = r18363655 * r18363664;
        double r18363666 = 495.1328251891863;
        bool r18363667 = r18363637 <= r18363666;
        double r18363668 = r18363658 * r18363637;
        double r18363669 = r18363656 - r18363646;
        double r18363670 = r18363668 * r18363669;
        double r18363671 = r18363640 + r18363670;
        double r18363672 = log(r18363643);
        double r18363673 = log(r18363651);
        double r18363674 = r18363672 - r18363673;
        double r18363675 = -r18363656;
        double r18363676 = r18363674 * r18363675;
        double r18363677 = log(r18363645);
        double r18363678 = log(r18363653);
        double r18363679 = r18363677 - r18363678;
        double r18363680 = r18363679 * r18363646;
        double r18363681 = r18363676 + r18363680;
        double r18363682 = exp(r18363681);
        double r18363683 = r18363667 ? r18363671 : r18363682;
        double r18363684 = r18363639 ? r18363665 : r18363683;
        return r18363684;
}

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 r18363685, r18363686, r18363687, r18363688, r18363689, r18363690, r18363691, r18363692, r18363693, r18363694, r18363695, r18363696, r18363697, r18363698, r18363699, r18363700, r18363701, r18363702, r18363703, r18363704, r18363705, r18363706;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2192);
        mpfr_init_set_str(r18363685, "1", 10, MPFR_RNDN);
        mpfr_init(r18363686);
        mpfr_init(r18363687);
        mpfr_init(r18363688);
        mpfr_init(r18363689);
        mpfr_init(r18363690);
        mpfr_init(r18363691);
        mpfr_init(r18363692);
        mpfr_init(r18363693);
        mpfr_init(r18363694);
        mpfr_init(r18363695);
        mpfr_init(r18363696);
        mpfr_init(r18363697);
        mpfr_init(r18363698);
        mpfr_init(r18363699);
        mpfr_init(r18363700);
        mpfr_init(r18363701);
        mpfr_init(r18363702);
        mpfr_init(r18363703);
        mpfr_init(r18363704);
        mpfr_init(r18363705);
        mpfr_init(r18363706);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r18363686, s, MPFR_RNDN);
        mpfr_neg(r18363687, r18363686, MPFR_RNDN);
        mpfr_exp(r18363688, r18363687, MPFR_RNDN);
        mpfr_add(r18363689, r18363685, r18363688, MPFR_RNDN);
        mpfr_div(r18363690, r18363685, r18363689, MPFR_RNDN);
        mpfr_set_d(r18363691, c_p, MPFR_RNDN);
        mpfr_pow(r18363692, r18363690, r18363691, MPFR_RNDN);
        mpfr_sub(r18363693, r18363685, r18363690, MPFR_RNDN);
        mpfr_set_d(r18363694, c_n, MPFR_RNDN);
        mpfr_pow(r18363695, r18363693, r18363694, MPFR_RNDN);
        mpfr_mul(r18363696, r18363692, r18363695, MPFR_RNDN);
        mpfr_set_d(r18363697, t, MPFR_RNDN);
        mpfr_neg(r18363698, r18363697, MPFR_RNDN);
        mpfr_exp(r18363699, r18363698, MPFR_RNDN);
        mpfr_add(r18363700, r18363685, r18363699, MPFR_RNDN);
        mpfr_div(r18363701, r18363685, r18363700, MPFR_RNDN);
        mpfr_pow(r18363702, r18363701, r18363691, MPFR_RNDN);
        mpfr_sub(r18363703, r18363685, r18363701, MPFR_RNDN);
        mpfr_pow(r18363704, r18363703, r18363694, MPFR_RNDN);
        mpfr_mul(r18363705, r18363702, r18363704, MPFR_RNDN);
        mpfr_div(r18363706, r18363696, r18363705, MPFR_RNDN);
        return mpfr_get_d(r18363706, MPFR_RNDN);
}

static mpfr_t r18363707, r18363708, r18363709, r18363710, r18363711, r18363712, r18363713, r18363714, r18363715, r18363716, r18363717, r18363718, r18363719, r18363720, r18363721, r18363722, r18363723, r18363724, r18363725, r18363726, r18363727, r18363728, r18363729, r18363730, r18363731, r18363732, r18363733, r18363734, r18363735, r18363736, r18363737, r18363738, r18363739, r18363740, r18363741, r18363742, r18363743, r18363744, r18363745, r18363746, r18363747, r18363748, r18363749, r18363750, r18363751, r18363752, r18363753, r18363754;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r18363707);
        mpfr_init_set_str(r18363708, "-786821888.1454914", 10, MPFR_RNDN);
        mpfr_init(r18363709);
        mpfr_init_set_str(r18363710, "1", 10, MPFR_RNDN);
        mpfr_init(r18363711);
        mpfr_init(r18363712);
        mpfr_init(r18363713);
        mpfr_init(r18363714);
        mpfr_init(r18363715);
        mpfr_init(r18363716);
        mpfr_init(r18363717);
        mpfr_init(r18363718);
        mpfr_init(r18363719);
        mpfr_init(r18363720);
        mpfr_init(r18363721);
        mpfr_init(r18363722);
        mpfr_init(r18363723);
        mpfr_init(r18363724);
        mpfr_init(r18363725);
        mpfr_init(r18363726);
        mpfr_init(r18363727);
        mpfr_init_set_str(r18363728, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18363729);
        mpfr_init(r18363730);
        mpfr_init(r18363731);
        mpfr_init(r18363732);
        mpfr_init(r18363733);
        mpfr_init(r18363734);
        mpfr_init(r18363735);
        mpfr_init_set_str(r18363736, "495.1328251891863", 10, MPFR_RNDN);
        mpfr_init(r18363737);
        mpfr_init(r18363738);
        mpfr_init(r18363739);
        mpfr_init(r18363740);
        mpfr_init(r18363741);
        mpfr_init(r18363742);
        mpfr_init(r18363743);
        mpfr_init(r18363744);
        mpfr_init(r18363745);
        mpfr_init(r18363746);
        mpfr_init(r18363747);
        mpfr_init(r18363748);
        mpfr_init(r18363749);
        mpfr_init(r18363750);
        mpfr_init(r18363751);
        mpfr_init(r18363752);
        mpfr_init(r18363753);
        mpfr_init(r18363754);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r18363707, s, MPFR_RNDN);
        ;
        mpfr_set_si(r18363709, mpfr_cmp(r18363707, r18363708) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r18363711, r18363707, MPFR_RNDN);
        mpfr_exp(r18363712, r18363711, MPFR_RNDN);
        mpfr_add(r18363713, r18363712, r18363710, MPFR_RNDN);
        mpfr_div(r18363714, r18363710, r18363713, MPFR_RNDN);
        mpfr_sub(r18363715, r18363710, r18363714, MPFR_RNDN);
        mpfr_set_d(r18363716, c_n, MPFR_RNDN);
        mpfr_pow(r18363717, r18363715, r18363716, MPFR_RNDN);
        mpfr_set_d(r18363718, t, MPFR_RNDN);
        mpfr_neg(r18363719, r18363718, MPFR_RNDN);
        mpfr_exp(r18363720, r18363719, MPFR_RNDN);
        mpfr_add(r18363721, r18363710, r18363720, MPFR_RNDN);
        mpfr_div(r18363722, r18363710, r18363721, MPFR_RNDN);
        mpfr_sub(r18363723, r18363710, r18363722, MPFR_RNDN);
        mpfr_pow(r18363724, r18363723, r18363716, MPFR_RNDN);
        mpfr_div(r18363725, r18363717, r18363724, MPFR_RNDN);
        mpfr_set_d(r18363726, c_p, MPFR_RNDN);
        mpfr_pow(r18363727, r18363714, r18363726, MPFR_RNDN);
        ;
        mpfr_mul(r18363729, r18363718, r18363728, MPFR_RNDN);
        mpfr_log(r18363730, r18363728, MPFR_RNDN);
        mpfr_add(r18363731, r18363729, r18363730, MPFR_RNDN);
        mpfr_mul(r18363732, r18363731, r18363726, MPFR_RNDN);
        mpfr_add(r18363733, r18363732, r18363710, MPFR_RNDN);
        mpfr_div(r18363734, r18363727, r18363733, MPFR_RNDN);
        mpfr_mul(r18363735, r18363725, r18363734, MPFR_RNDN);
        ;
        mpfr_set_si(r18363737, mpfr_cmp(r18363707, r18363736) <= 0, MPFR_RNDN);
        mpfr_mul(r18363738, r18363728, r18363707, MPFR_RNDN);
        mpfr_sub(r18363739, r18363726, r18363716, MPFR_RNDN);
        mpfr_mul(r18363740, r18363738, r18363739, MPFR_RNDN);
        mpfr_add(r18363741, r18363710, r18363740, MPFR_RNDN);
        mpfr_log(r18363742, r18363713, MPFR_RNDN);
        mpfr_log(r18363743, r18363721, MPFR_RNDN);
        mpfr_sub(r18363744, r18363742, r18363743, MPFR_RNDN);
        mpfr_neg(r18363745, r18363726, MPFR_RNDN);
        mpfr_mul(r18363746, r18363744, r18363745, MPFR_RNDN);
        mpfr_log(r18363747, r18363715, MPFR_RNDN);
        mpfr_log(r18363748, r18363723, MPFR_RNDN);
        mpfr_sub(r18363749, r18363747, r18363748, MPFR_RNDN);
        mpfr_mul(r18363750, r18363749, r18363716, MPFR_RNDN);
        mpfr_add(r18363751, r18363746, r18363750, MPFR_RNDN);
        mpfr_exp(r18363752, r18363751, MPFR_RNDN);
        if (mpfr_get_si(r18363737, MPFR_RNDN)) { mpfr_set(r18363753, r18363741, MPFR_RNDN); } else { mpfr_set(r18363753, r18363752, MPFR_RNDN); };
        if (mpfr_get_si(r18363709, MPFR_RNDN)) { mpfr_set(r18363754, r18363735, MPFR_RNDN); } else { mpfr_set(r18363754, r18363753, MPFR_RNDN); };
        return mpfr_get_d(r18363754, MPFR_RNDN);
}

static mpfr_t r18363755, r18363756, r18363757, r18363758, r18363759, r18363760, r18363761, r18363762, r18363763, r18363764, r18363765, r18363766, r18363767, r18363768, r18363769, r18363770, r18363771, r18363772, r18363773, r18363774, r18363775, r18363776, r18363777, r18363778, r18363779, r18363780, r18363781, r18363782, r18363783, r18363784, r18363785, r18363786, r18363787, r18363788, r18363789, r18363790, r18363791, r18363792, r18363793, r18363794, r18363795, r18363796, r18363797, r18363798, r18363799, r18363800, r18363801, r18363802;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r18363755);
        mpfr_init_set_str(r18363756, "-786821888.1454914", 10, MPFR_RNDN);
        mpfr_init(r18363757);
        mpfr_init_set_str(r18363758, "1", 10, MPFR_RNDN);
        mpfr_init(r18363759);
        mpfr_init(r18363760);
        mpfr_init(r18363761);
        mpfr_init(r18363762);
        mpfr_init(r18363763);
        mpfr_init(r18363764);
        mpfr_init(r18363765);
        mpfr_init(r18363766);
        mpfr_init(r18363767);
        mpfr_init(r18363768);
        mpfr_init(r18363769);
        mpfr_init(r18363770);
        mpfr_init(r18363771);
        mpfr_init(r18363772);
        mpfr_init(r18363773);
        mpfr_init(r18363774);
        mpfr_init(r18363775);
        mpfr_init_set_str(r18363776, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18363777);
        mpfr_init(r18363778);
        mpfr_init(r18363779);
        mpfr_init(r18363780);
        mpfr_init(r18363781);
        mpfr_init(r18363782);
        mpfr_init(r18363783);
        mpfr_init_set_str(r18363784, "495.1328251891863", 10, MPFR_RNDN);
        mpfr_init(r18363785);
        mpfr_init(r18363786);
        mpfr_init(r18363787);
        mpfr_init(r18363788);
        mpfr_init(r18363789);
        mpfr_init(r18363790);
        mpfr_init(r18363791);
        mpfr_init(r18363792);
        mpfr_init(r18363793);
        mpfr_init(r18363794);
        mpfr_init(r18363795);
        mpfr_init(r18363796);
        mpfr_init(r18363797);
        mpfr_init(r18363798);
        mpfr_init(r18363799);
        mpfr_init(r18363800);
        mpfr_init(r18363801);
        mpfr_init(r18363802);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r18363755, s, MPFR_RNDN);
        ;
        mpfr_set_si(r18363757, mpfr_cmp(r18363755, r18363756) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r18363759, r18363755, MPFR_RNDN);
        mpfr_exp(r18363760, r18363759, MPFR_RNDN);
        mpfr_add(r18363761, r18363760, r18363758, MPFR_RNDN);
        mpfr_div(r18363762, r18363758, r18363761, MPFR_RNDN);
        mpfr_sub(r18363763, r18363758, r18363762, MPFR_RNDN);
        mpfr_set_d(r18363764, c_n, MPFR_RNDN);
        mpfr_pow(r18363765, r18363763, r18363764, MPFR_RNDN);
        mpfr_set_d(r18363766, t, MPFR_RNDN);
        mpfr_neg(r18363767, r18363766, MPFR_RNDN);
        mpfr_exp(r18363768, r18363767, MPFR_RNDN);
        mpfr_add(r18363769, r18363758, r18363768, MPFR_RNDN);
        mpfr_div(r18363770, r18363758, r18363769, MPFR_RNDN);
        mpfr_sub(r18363771, r18363758, r18363770, MPFR_RNDN);
        mpfr_pow(r18363772, r18363771, r18363764, MPFR_RNDN);
        mpfr_div(r18363773, r18363765, r18363772, MPFR_RNDN);
        mpfr_set_d(r18363774, c_p, MPFR_RNDN);
        mpfr_pow(r18363775, r18363762, r18363774, MPFR_RNDN);
        ;
        mpfr_mul(r18363777, r18363766, r18363776, MPFR_RNDN);
        mpfr_log(r18363778, r18363776, MPFR_RNDN);
        mpfr_add(r18363779, r18363777, r18363778, MPFR_RNDN);
        mpfr_mul(r18363780, r18363779, r18363774, MPFR_RNDN);
        mpfr_add(r18363781, r18363780, r18363758, MPFR_RNDN);
        mpfr_div(r18363782, r18363775, r18363781, MPFR_RNDN);
        mpfr_mul(r18363783, r18363773, r18363782, MPFR_RNDN);
        ;
        mpfr_set_si(r18363785, mpfr_cmp(r18363755, r18363784) <= 0, MPFR_RNDN);
        mpfr_mul(r18363786, r18363776, r18363755, MPFR_RNDN);
        mpfr_sub(r18363787, r18363774, r18363764, MPFR_RNDN);
        mpfr_mul(r18363788, r18363786, r18363787, MPFR_RNDN);
        mpfr_add(r18363789, r18363758, r18363788, MPFR_RNDN);
        mpfr_log(r18363790, r18363761, MPFR_RNDN);
        mpfr_log(r18363791, r18363769, MPFR_RNDN);
        mpfr_sub(r18363792, r18363790, r18363791, MPFR_RNDN);
        mpfr_neg(r18363793, r18363774, MPFR_RNDN);
        mpfr_mul(r18363794, r18363792, r18363793, MPFR_RNDN);
        mpfr_log(r18363795, r18363763, MPFR_RNDN);
        mpfr_log(r18363796, r18363771, MPFR_RNDN);
        mpfr_sub(r18363797, r18363795, r18363796, MPFR_RNDN);
        mpfr_mul(r18363798, r18363797, r18363764, MPFR_RNDN);
        mpfr_add(r18363799, r18363794, r18363798, MPFR_RNDN);
        mpfr_exp(r18363800, r18363799, MPFR_RNDN);
        if (mpfr_get_si(r18363785, MPFR_RNDN)) { mpfr_set(r18363801, r18363789, MPFR_RNDN); } else { mpfr_set(r18363801, r18363800, MPFR_RNDN); };
        if (mpfr_get_si(r18363757, MPFR_RNDN)) { mpfr_set(r18363802, r18363783, MPFR_RNDN); } else { mpfr_set(r18363802, r18363801, MPFR_RNDN); };
        return mpfr_get_d(r18363802, MPFR_RNDN);
}

