#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 r27570 = 1;
        float r27571 = s;
        float r27572 = -r27571;
        float r27573 = exp(r27572);
        float r27574 = r27570 + r27573;
        float r27575 = r27570 / r27574;
        float r27576 = c_p;
        float r27577 = pow(r27575, r27576);
        float r27578 = r27570 - r27575;
        float r27579 = c_n;
        float r27580 = pow(r27578, r27579);
        float r27581 = r27577 * r27580;
        float r27582 = t;
        float r27583 = -r27582;
        float r27584 = exp(r27583);
        float r27585 = r27570 + r27584;
        float r27586 = r27570 / r27585;
        float r27587 = pow(r27586, r27576);
        float r27588 = r27570 - r27586;
        float r27589 = pow(r27588, r27579);
        float r27590 = r27587 * r27589;
        float r27591 = r27581 / r27590;
        return r27591;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27592 = 1;
        double r27593 = s;
        double r27594 = -r27593;
        double r27595 = exp(r27594);
        double r27596 = r27592 + r27595;
        double r27597 = r27592 / r27596;
        double r27598 = c_p;
        double r27599 = pow(r27597, r27598);
        double r27600 = r27592 - r27597;
        double r27601 = c_n;
        double r27602 = pow(r27600, r27601);
        double r27603 = r27599 * r27602;
        double r27604 = t;
        double r27605 = -r27604;
        double r27606 = exp(r27605);
        double r27607 = r27592 + r27606;
        double r27608 = r27592 / r27607;
        double r27609 = pow(r27608, r27598);
        double r27610 = r27592 - r27608;
        double r27611 = pow(r27610, r27601);
        double r27612 = r27609 * r27611;
        double r27613 = r27603 / r27612;
        return r27613;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27614 = 1;
        float r27615 = s;
        float r27616 = -r27615;
        float r27617 = exp(r27616);
        float r27618 = r27614 + r27617;
        float r27619 = r27614 / r27618;
        float r27620 = r27614 - r27619;
        float r27621 = log(r27620);
        float r27622 = t;
        float r27623 = -r27622;
        float r27624 = exp(r27623);
        float r27625 = r27624 + r27614;
        float r27626 = r27614 / r27625;
        float r27627 = r27614 - r27626;
        float r27628 = log(r27627);
        float r27629 = r27621 - r27628;
        float r27630 = c_n;
        float r27631 = r27629 * r27630;
        float r27632 = log(r27618);
        float r27633 = log(r27625);
        float r27634 = r27632 - r27633;
        float r27635 = c_p;
        float r27636 = r27634 * r27635;
        float r27637 = r27631 - r27636;
        float r27638 = exp(r27637);
        return r27638;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27639 = 1;
        double r27640 = s;
        double r27641 = -r27640;
        double r27642 = exp(r27641);
        double r27643 = r27639 + r27642;
        double r27644 = r27639 / r27643;
        double r27645 = r27639 - r27644;
        double r27646 = log(r27645);
        double r27647 = t;
        double r27648 = -r27647;
        double r27649 = exp(r27648);
        double r27650 = r27649 + r27639;
        double r27651 = r27639 / r27650;
        double r27652 = r27639 - r27651;
        double r27653 = log(r27652);
        double r27654 = r27646 - r27653;
        double r27655 = c_n;
        double r27656 = r27654 * r27655;
        double r27657 = log(r27643);
        double r27658 = log(r27650);
        double r27659 = r27657 - r27658;
        double r27660 = c_p;
        double r27661 = r27659 * r27660;
        double r27662 = r27656 - r27661;
        double r27663 = exp(r27662);
        return r27663;
}

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 r27664, r27665, r27666, r27667, r27668, r27669, r27670, r27671, r27672, r27673, r27674, r27675, r27676, r27677, r27678, r27679, r27680, r27681, r27682, r27683, r27684, r27685;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27664, "1", 10, MPFR_RNDN);
        mpfr_init(r27665);
        mpfr_init(r27666);
        mpfr_init(r27667);
        mpfr_init(r27668);
        mpfr_init(r27669);
        mpfr_init(r27670);
        mpfr_init(r27671);
        mpfr_init(r27672);
        mpfr_init(r27673);
        mpfr_init(r27674);
        mpfr_init(r27675);
        mpfr_init(r27676);
        mpfr_init(r27677);
        mpfr_init(r27678);
        mpfr_init(r27679);
        mpfr_init(r27680);
        mpfr_init(r27681);
        mpfr_init(r27682);
        mpfr_init(r27683);
        mpfr_init(r27684);
        mpfr_init(r27685);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27665, s, MPFR_RNDN);
        mpfr_neg(r27666, r27665, MPFR_RNDN);
        mpfr_exp(r27667, r27666, MPFR_RNDN);
        mpfr_add(r27668, r27664, r27667, MPFR_RNDN);
        mpfr_div(r27669, r27664, r27668, MPFR_RNDN);
        mpfr_set_d(r27670, c_p, MPFR_RNDN);
        mpfr_pow(r27671, r27669, r27670, MPFR_RNDN);
        mpfr_sub(r27672, r27664, r27669, MPFR_RNDN);
        mpfr_set_d(r27673, c_n, MPFR_RNDN);
        mpfr_pow(r27674, r27672, r27673, MPFR_RNDN);
        mpfr_mul(r27675, r27671, r27674, MPFR_RNDN);
        mpfr_set_d(r27676, t, MPFR_RNDN);
        mpfr_neg(r27677, r27676, MPFR_RNDN);
        mpfr_exp(r27678, r27677, MPFR_RNDN);
        mpfr_add(r27679, r27664, r27678, MPFR_RNDN);
        mpfr_div(r27680, r27664, r27679, MPFR_RNDN);
        mpfr_pow(r27681, r27680, r27670, MPFR_RNDN);
        mpfr_sub(r27682, r27664, r27680, MPFR_RNDN);
        mpfr_pow(r27683, r27682, r27673, MPFR_RNDN);
        mpfr_mul(r27684, r27681, r27683, MPFR_RNDN);
        mpfr_div(r27685, r27675, r27684, MPFR_RNDN);
        return mpfr_get_d(r27685, MPFR_RNDN);
}

static mpfr_t r27686, r27687, r27688, r27689, r27690, r27691, r27692, r27693, r27694, r27695, r27696, r27697, r27698, r27699, r27700, r27701, r27702, r27703, r27704, r27705, r27706, r27707, r27708, r27709, r27710;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27686, "1", 10, MPFR_RNDN);
        mpfr_init(r27687);
        mpfr_init(r27688);
        mpfr_init(r27689);
        mpfr_init(r27690);
        mpfr_init(r27691);
        mpfr_init(r27692);
        mpfr_init(r27693);
        mpfr_init(r27694);
        mpfr_init(r27695);
        mpfr_init(r27696);
        mpfr_init(r27697);
        mpfr_init(r27698);
        mpfr_init(r27699);
        mpfr_init(r27700);
        mpfr_init(r27701);
        mpfr_init(r27702);
        mpfr_init(r27703);
        mpfr_init(r27704);
        mpfr_init(r27705);
        mpfr_init(r27706);
        mpfr_init(r27707);
        mpfr_init(r27708);
        mpfr_init(r27709);
        mpfr_init(r27710);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27687, s, MPFR_RNDN);
        mpfr_neg(r27688, r27687, MPFR_RNDN);
        mpfr_exp(r27689, r27688, MPFR_RNDN);
        mpfr_add(r27690, r27686, r27689, MPFR_RNDN);
        mpfr_div(r27691, r27686, r27690, MPFR_RNDN);
        mpfr_sub(r27692, r27686, r27691, MPFR_RNDN);
        mpfr_log(r27693, r27692, MPFR_RNDN);
        mpfr_set_d(r27694, t, MPFR_RNDN);
        mpfr_neg(r27695, r27694, MPFR_RNDN);
        mpfr_exp(r27696, r27695, MPFR_RNDN);
        mpfr_add(r27697, r27696, r27686, MPFR_RNDN);
        mpfr_div(r27698, r27686, r27697, MPFR_RNDN);
        mpfr_sub(r27699, r27686, r27698, MPFR_RNDN);
        mpfr_log(r27700, r27699, MPFR_RNDN);
        mpfr_sub(r27701, r27693, r27700, MPFR_RNDN);
        mpfr_set_d(r27702, c_n, MPFR_RNDN);
        mpfr_mul(r27703, r27701, r27702, MPFR_RNDN);
        mpfr_log(r27704, r27690, MPFR_RNDN);
        mpfr_log(r27705, r27697, MPFR_RNDN);
        mpfr_sub(r27706, r27704, r27705, MPFR_RNDN);
        mpfr_set_d(r27707, c_p, MPFR_RNDN);
        mpfr_mul(r27708, r27706, r27707, MPFR_RNDN);
        mpfr_sub(r27709, r27703, r27708, MPFR_RNDN);
        mpfr_exp(r27710, r27709, MPFR_RNDN);
        return mpfr_get_d(r27710, MPFR_RNDN);
}

static mpfr_t r27711, r27712, r27713, r27714, r27715, r27716, r27717, r27718, r27719, r27720, r27721, r27722, r27723, r27724, r27725, r27726, r27727, r27728, r27729, r27730, r27731, r27732, r27733, r27734, r27735;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2128);
        mpfr_init_set_str(r27711, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r27724);
        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);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27712, s, MPFR_RNDN);
        mpfr_neg(r27713, r27712, MPFR_RNDN);
        mpfr_exp(r27714, r27713, MPFR_RNDN);
        mpfr_add(r27715, r27711, r27714, MPFR_RNDN);
        mpfr_div(r27716, r27711, r27715, MPFR_RNDN);
        mpfr_sub(r27717, r27711, r27716, MPFR_RNDN);
        mpfr_log(r27718, r27717, MPFR_RNDN);
        mpfr_set_d(r27719, t, MPFR_RNDN);
        mpfr_neg(r27720, r27719, MPFR_RNDN);
        mpfr_exp(r27721, r27720, MPFR_RNDN);
        mpfr_add(r27722, r27721, r27711, MPFR_RNDN);
        mpfr_div(r27723, r27711, r27722, MPFR_RNDN);
        mpfr_sub(r27724, r27711, r27723, MPFR_RNDN);
        mpfr_log(r27725, r27724, MPFR_RNDN);
        mpfr_sub(r27726, r27718, r27725, MPFR_RNDN);
        mpfr_set_d(r27727, c_n, MPFR_RNDN);
        mpfr_mul(r27728, r27726, r27727, MPFR_RNDN);
        mpfr_log(r27729, r27715, MPFR_RNDN);
        mpfr_log(r27730, r27722, MPFR_RNDN);
        mpfr_sub(r27731, r27729, r27730, MPFR_RNDN);
        mpfr_set_d(r27732, c_p, MPFR_RNDN);
        mpfr_mul(r27733, r27731, r27732, MPFR_RNDN);
        mpfr_sub(r27734, r27728, r27733, MPFR_RNDN);
        mpfr_exp(r27735, r27734, MPFR_RNDN);
        return mpfr_get_d(r27735, MPFR_RNDN);
}

