#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 r27608 = 1;
        float r27609 = s;
        float r27610 = -r27609;
        float r27611 = exp(r27610);
        float r27612 = r27608 + r27611;
        float r27613 = r27608 / r27612;
        float r27614 = c_p;
        float r27615 = pow(r27613, r27614);
        float r27616 = r27608 - r27613;
        float r27617 = c_n;
        float r27618 = pow(r27616, r27617);
        float r27619 = r27615 * r27618;
        float r27620 = t;
        float r27621 = -r27620;
        float r27622 = exp(r27621);
        float r27623 = r27608 + r27622;
        float r27624 = r27608 / r27623;
        float r27625 = pow(r27624, r27614);
        float r27626 = r27608 - r27624;
        float r27627 = pow(r27626, r27617);
        float r27628 = r27625 * r27627;
        float r27629 = r27619 / r27628;
        return r27629;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27630 = 1;
        double r27631 = s;
        double r27632 = -r27631;
        double r27633 = exp(r27632);
        double r27634 = r27630 + r27633;
        double r27635 = r27630 / r27634;
        double r27636 = c_p;
        double r27637 = pow(r27635, r27636);
        double r27638 = r27630 - r27635;
        double r27639 = c_n;
        double r27640 = pow(r27638, r27639);
        double r27641 = r27637 * r27640;
        double r27642 = t;
        double r27643 = -r27642;
        double r27644 = exp(r27643);
        double r27645 = r27630 + r27644;
        double r27646 = r27630 / r27645;
        double r27647 = pow(r27646, r27636);
        double r27648 = r27630 - r27646;
        double r27649 = pow(r27648, r27639);
        double r27650 = r27647 * r27649;
        double r27651 = r27641 / r27650;
        return r27651;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27652 = 1;
        float r27653 = s;
        float r27654 = -r27653;
        float r27655 = exp(r27654);
        float r27656 = r27652 + r27655;
        float r27657 = r27652 / r27656;
        float r27658 = r27652 - r27657;
        float r27659 = log(r27658);
        float r27660 = t;
        float r27661 = -r27660;
        float r27662 = exp(r27661);
        float r27663 = r27662 + r27652;
        float r27664 = r27652 / r27663;
        float r27665 = r27652 - r27664;
        float r27666 = log(r27665);
        float r27667 = r27659 - r27666;
        float r27668 = c_n;
        float r27669 = r27667 * r27668;
        float r27670 = log(r27656);
        float r27671 = log(r27663);
        float r27672 = r27670 - r27671;
        float r27673 = c_p;
        float r27674 = r27672 * r27673;
        float r27675 = r27669 - r27674;
        float r27676 = exp(r27675);
        return r27676;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27677 = 1;
        double r27678 = s;
        double r27679 = -r27678;
        double r27680 = exp(r27679);
        double r27681 = r27677 + r27680;
        double r27682 = r27677 / r27681;
        double r27683 = r27677 - r27682;
        double r27684 = log(r27683);
        double r27685 = t;
        double r27686 = -r27685;
        double r27687 = exp(r27686);
        double r27688 = r27687 + r27677;
        double r27689 = r27677 / r27688;
        double r27690 = r27677 - r27689;
        double r27691 = log(r27690);
        double r27692 = r27684 - r27691;
        double r27693 = c_n;
        double r27694 = r27692 * r27693;
        double r27695 = log(r27681);
        double r27696 = log(r27688);
        double r27697 = r27695 - r27696;
        double r27698 = c_p;
        double r27699 = r27697 * r27698;
        double r27700 = r27694 - r27699;
        double r27701 = exp(r27700);
        return r27701;
}

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 r27702, r27703, r27704, r27705, r27706, r27707, r27708, r27709, r27710, r27711, r27712, r27713, r27714, r27715, r27716, r27717, r27718, r27719, r27720, r27721, r27722, r27723;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27702, "1", 10, MPFR_RNDN);
        mpfr_init(r27703);
        mpfr_init(r27704);
        mpfr_init(r27705);
        mpfr_init(r27706);
        mpfr_init(r27707);
        mpfr_init(r27708);
        mpfr_init(r27709);
        mpfr_init(r27710);
        mpfr_init(r27711);
        mpfr_init(r27712);
        mpfr_init(r27713);
        mpfr_init(r27714);
        mpfr_init(r27715);
        mpfr_init(r27716);
        mpfr_init(r27717);
        mpfr_init(r27718);
        mpfr_init(r27719);
        mpfr_init(r27720);
        mpfr_init(r27721);
        mpfr_init(r27722);
        mpfr_init(r27723);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27703, s, MPFR_RNDN);
        mpfr_neg(r27704, r27703, MPFR_RNDN);
        mpfr_exp(r27705, r27704, MPFR_RNDN);
        mpfr_add(r27706, r27702, r27705, MPFR_RNDN);
        mpfr_div(r27707, r27702, r27706, MPFR_RNDN);
        mpfr_set_d(r27708, c_p, MPFR_RNDN);
        mpfr_pow(r27709, r27707, r27708, MPFR_RNDN);
        mpfr_sub(r27710, r27702, r27707, MPFR_RNDN);
        mpfr_set_d(r27711, c_n, MPFR_RNDN);
        mpfr_pow(r27712, r27710, r27711, MPFR_RNDN);
        mpfr_mul(r27713, r27709, r27712, MPFR_RNDN);
        mpfr_set_d(r27714, t, MPFR_RNDN);
        mpfr_neg(r27715, r27714, MPFR_RNDN);
        mpfr_exp(r27716, r27715, MPFR_RNDN);
        mpfr_add(r27717, r27702, r27716, MPFR_RNDN);
        mpfr_div(r27718, r27702, r27717, MPFR_RNDN);
        mpfr_pow(r27719, r27718, r27708, MPFR_RNDN);
        mpfr_sub(r27720, r27702, r27718, MPFR_RNDN);
        mpfr_pow(r27721, r27720, r27711, MPFR_RNDN);
        mpfr_mul(r27722, r27719, r27721, MPFR_RNDN);
        mpfr_div(r27723, r27713, r27722, MPFR_RNDN);
        return mpfr_get_d(r27723, MPFR_RNDN);
}

static mpfr_t r27724, r27725, r27726, r27727, r27728, r27729, r27730, r27731, r27732, r27733, r27734, r27735, r27736, r27737, r27738, r27739, r27740, r27741, r27742, r27743, r27744, r27745, r27746, r27747, r27748;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27724, "1", 10, MPFR_RNDN);
        mpfr_init(r27725);
        mpfr_init(r27726);
        mpfr_init(r27727);
        mpfr_init(r27728);
        mpfr_init(r27729);
        mpfr_init(r27730);
        mpfr_init(r27731);
        mpfr_init(r27732);
        mpfr_init(r27733);
        mpfr_init(r27734);
        mpfr_init(r27735);
        mpfr_init(r27736);
        mpfr_init(r27737);
        mpfr_init(r27738);
        mpfr_init(r27739);
        mpfr_init(r27740);
        mpfr_init(r27741);
        mpfr_init(r27742);
        mpfr_init(r27743);
        mpfr_init(r27744);
        mpfr_init(r27745);
        mpfr_init(r27746);
        mpfr_init(r27747);
        mpfr_init(r27748);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27725, s, MPFR_RNDN);
        mpfr_neg(r27726, r27725, MPFR_RNDN);
        mpfr_exp(r27727, r27726, MPFR_RNDN);
        mpfr_add(r27728, r27724, r27727, MPFR_RNDN);
        mpfr_div(r27729, r27724, r27728, MPFR_RNDN);
        mpfr_sub(r27730, r27724, r27729, MPFR_RNDN);
        mpfr_log(r27731, r27730, MPFR_RNDN);
        mpfr_set_d(r27732, t, MPFR_RNDN);
        mpfr_neg(r27733, r27732, MPFR_RNDN);
        mpfr_exp(r27734, r27733, MPFR_RNDN);
        mpfr_add(r27735, r27734, r27724, MPFR_RNDN);
        mpfr_div(r27736, r27724, r27735, MPFR_RNDN);
        mpfr_sub(r27737, r27724, r27736, MPFR_RNDN);
        mpfr_log(r27738, r27737, MPFR_RNDN);
        mpfr_sub(r27739, r27731, r27738, MPFR_RNDN);
        mpfr_set_d(r27740, c_n, MPFR_RNDN);
        mpfr_mul(r27741, r27739, r27740, MPFR_RNDN);
        mpfr_log(r27742, r27728, MPFR_RNDN);
        mpfr_log(r27743, r27735, MPFR_RNDN);
        mpfr_sub(r27744, r27742, r27743, MPFR_RNDN);
        mpfr_set_d(r27745, c_p, MPFR_RNDN);
        mpfr_mul(r27746, r27744, r27745, MPFR_RNDN);
        mpfr_sub(r27747, r27741, r27746, MPFR_RNDN);
        mpfr_exp(r27748, r27747, MPFR_RNDN);
        return mpfr_get_d(r27748, MPFR_RNDN);
}

static mpfr_t r27749, r27750, r27751, r27752, r27753, r27754, r27755, r27756, r27757, r27758, r27759, r27760, r27761, r27762, r27763, r27764, r27765, r27766, r27767, r27768, r27769, r27770, r27771, r27772, r27773;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27749, "1", 10, MPFR_RNDN);
        mpfr_init(r27750);
        mpfr_init(r27751);
        mpfr_init(r27752);
        mpfr_init(r27753);
        mpfr_init(r27754);
        mpfr_init(r27755);
        mpfr_init(r27756);
        mpfr_init(r27757);
        mpfr_init(r27758);
        mpfr_init(r27759);
        mpfr_init(r27760);
        mpfr_init(r27761);
        mpfr_init(r27762);
        mpfr_init(r27763);
        mpfr_init(r27764);
        mpfr_init(r27765);
        mpfr_init(r27766);
        mpfr_init(r27767);
        mpfr_init(r27768);
        mpfr_init(r27769);
        mpfr_init(r27770);
        mpfr_init(r27771);
        mpfr_init(r27772);
        mpfr_init(r27773);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27750, s, MPFR_RNDN);
        mpfr_neg(r27751, r27750, MPFR_RNDN);
        mpfr_exp(r27752, r27751, MPFR_RNDN);
        mpfr_add(r27753, r27749, r27752, MPFR_RNDN);
        mpfr_div(r27754, r27749, r27753, MPFR_RNDN);
        mpfr_sub(r27755, r27749, r27754, MPFR_RNDN);
        mpfr_log(r27756, r27755, MPFR_RNDN);
        mpfr_set_d(r27757, t, MPFR_RNDN);
        mpfr_neg(r27758, r27757, MPFR_RNDN);
        mpfr_exp(r27759, r27758, MPFR_RNDN);
        mpfr_add(r27760, r27759, r27749, MPFR_RNDN);
        mpfr_div(r27761, r27749, r27760, MPFR_RNDN);
        mpfr_sub(r27762, r27749, r27761, MPFR_RNDN);
        mpfr_log(r27763, r27762, MPFR_RNDN);
        mpfr_sub(r27764, r27756, r27763, MPFR_RNDN);
        mpfr_set_d(r27765, c_n, MPFR_RNDN);
        mpfr_mul(r27766, r27764, r27765, MPFR_RNDN);
        mpfr_log(r27767, r27753, MPFR_RNDN);
        mpfr_log(r27768, r27760, MPFR_RNDN);
        mpfr_sub(r27769, r27767, r27768, MPFR_RNDN);
        mpfr_set_d(r27770, c_p, MPFR_RNDN);
        mpfr_mul(r27771, r27769, r27770, MPFR_RNDN);
        mpfr_sub(r27772, r27766, r27771, MPFR_RNDN);
        mpfr_exp(r27773, r27772, MPFR_RNDN);
        return mpfr_get_d(r27773, MPFR_RNDN);
}

