#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 r27589 = 1;
        float r27590 = s;
        float r27591 = -r27590;
        float r27592 = exp(r27591);
        float r27593 = r27589 + r27592;
        float r27594 = r27589 / r27593;
        float r27595 = c_p;
        float r27596 = pow(r27594, r27595);
        float r27597 = r27589 - r27594;
        float r27598 = c_n;
        float r27599 = pow(r27597, r27598);
        float r27600 = r27596 * r27599;
        float r27601 = t;
        float r27602 = -r27601;
        float r27603 = exp(r27602);
        float r27604 = r27589 + r27603;
        float r27605 = r27589 / r27604;
        float r27606 = pow(r27605, r27595);
        float r27607 = r27589 - r27605;
        float r27608 = pow(r27607, r27598);
        float r27609 = r27606 * r27608;
        float r27610 = r27600 / r27609;
        return r27610;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27611 = 1;
        double r27612 = s;
        double r27613 = -r27612;
        double r27614 = exp(r27613);
        double r27615 = r27611 + r27614;
        double r27616 = r27611 / r27615;
        double r27617 = c_p;
        double r27618 = pow(r27616, r27617);
        double r27619 = r27611 - r27616;
        double r27620 = c_n;
        double r27621 = pow(r27619, r27620);
        double r27622 = r27618 * r27621;
        double r27623 = t;
        double r27624 = -r27623;
        double r27625 = exp(r27624);
        double r27626 = r27611 + r27625;
        double r27627 = r27611 / r27626;
        double r27628 = pow(r27627, r27617);
        double r27629 = r27611 - r27627;
        double r27630 = pow(r27629, r27620);
        double r27631 = r27628 * r27630;
        double r27632 = r27622 / r27631;
        return r27632;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27633 = 1;
        float r27634 = s;
        float r27635 = -r27634;
        float r27636 = exp(r27635);
        float r27637 = r27633 + r27636;
        float r27638 = r27633 / r27637;
        float r27639 = r27633 - r27638;
        float r27640 = log(r27639);
        float r27641 = t;
        float r27642 = -r27641;
        float r27643 = exp(r27642);
        float r27644 = r27643 + r27633;
        float r27645 = r27633 / r27644;
        float r27646 = r27633 - r27645;
        float r27647 = log(r27646);
        float r27648 = r27640 - r27647;
        float r27649 = c_n;
        float r27650 = r27648 * r27649;
        float r27651 = exp(r27650);
        float r27652 = c_p;
        float r27653 = pow(r27638, r27652);
        float r27654 = 1/2;
        float r27655 = log(r27654);
        float r27656 = r27641 * r27654;
        float r27657 = r27655 + r27656;
        float r27658 = r27652 * r27657;
        float r27659 = r27658 + r27633;
        float r27660 = r27653 / r27659;
        float r27661 = r27651 * r27660;
        return r27661;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27662 = 1;
        double r27663 = s;
        double r27664 = -r27663;
        double r27665 = exp(r27664);
        double r27666 = r27662 + r27665;
        double r27667 = r27662 / r27666;
        double r27668 = r27662 - r27667;
        double r27669 = log(r27668);
        double r27670 = t;
        double r27671 = -r27670;
        double r27672 = exp(r27671);
        double r27673 = r27672 + r27662;
        double r27674 = r27662 / r27673;
        double r27675 = r27662 - r27674;
        double r27676 = log(r27675);
        double r27677 = r27669 - r27676;
        double r27678 = c_n;
        double r27679 = r27677 * r27678;
        double r27680 = exp(r27679);
        double r27681 = c_p;
        double r27682 = pow(r27667, r27681);
        double r27683 = 1/2;
        double r27684 = log(r27683);
        double r27685 = r27670 * r27683;
        double r27686 = r27684 + r27685;
        double r27687 = r27681 * r27686;
        double r27688 = r27687 + r27662;
        double r27689 = r27682 / r27688;
        double r27690 = r27680 * r27689;
        return r27690;
}

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 r27691, r27692, r27693, r27694, r27695, r27696, r27697, r27698, r27699, r27700, r27701, r27702, r27703, r27704, r27705, r27706, r27707, r27708, r27709, r27710, r27711, r27712;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r27691, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r27711);
        mpfr_init(r27712);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27692, s, MPFR_RNDN);
        mpfr_neg(r27693, r27692, MPFR_RNDN);
        mpfr_exp(r27694, r27693, MPFR_RNDN);
        mpfr_add(r27695, r27691, r27694, MPFR_RNDN);
        mpfr_div(r27696, r27691, r27695, MPFR_RNDN);
        mpfr_set_d(r27697, c_p, MPFR_RNDN);
        mpfr_pow(r27698, r27696, r27697, MPFR_RNDN);
        mpfr_sub(r27699, r27691, r27696, MPFR_RNDN);
        mpfr_set_d(r27700, c_n, MPFR_RNDN);
        mpfr_pow(r27701, r27699, r27700, MPFR_RNDN);
        mpfr_mul(r27702, r27698, r27701, MPFR_RNDN);
        mpfr_set_d(r27703, t, MPFR_RNDN);
        mpfr_neg(r27704, r27703, MPFR_RNDN);
        mpfr_exp(r27705, r27704, MPFR_RNDN);
        mpfr_add(r27706, r27691, r27705, MPFR_RNDN);
        mpfr_div(r27707, r27691, r27706, MPFR_RNDN);
        mpfr_pow(r27708, r27707, r27697, MPFR_RNDN);
        mpfr_sub(r27709, r27691, r27707, MPFR_RNDN);
        mpfr_pow(r27710, r27709, r27700, MPFR_RNDN);
        mpfr_mul(r27711, r27708, r27710, MPFR_RNDN);
        mpfr_div(r27712, r27702, r27711, MPFR_RNDN);
        return mpfr_get_d(r27712, MPFR_RNDN);
}

static mpfr_t r27713, r27714, r27715, r27716, r27717, r27718, r27719, r27720, r27721, r27722, r27723, r27724, r27725, r27726, r27727, r27728, r27729, r27730, r27731, r27732, r27733, r27734, r27735, r27736, r27737, r27738, r27739, r27740, r27741;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r27713, "1", 10, MPFR_RNDN);
        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_set_str(r27734, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27735);
        mpfr_init(r27736);
        mpfr_init(r27737);
        mpfr_init(r27738);
        mpfr_init(r27739);
        mpfr_init(r27740);
        mpfr_init(r27741);
}

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

static mpfr_t r27742, r27743, r27744, r27745, r27746, r27747, r27748, r27749, r27750, r27751, r27752, r27753, r27754, r27755, r27756, r27757, r27758, r27759, r27760, r27761, r27762, r27763, r27764, r27765, r27766, r27767, r27768, r27769, r27770;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r27742, "1", 10, MPFR_RNDN);
        mpfr_init(r27743);
        mpfr_init(r27744);
        mpfr_init(r27745);
        mpfr_init(r27746);
        mpfr_init(r27747);
        mpfr_init(r27748);
        mpfr_init(r27749);
        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_set_str(r27763, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27764);
        mpfr_init(r27765);
        mpfr_init(r27766);
        mpfr_init(r27767);
        mpfr_init(r27768);
        mpfr_init(r27769);
        mpfr_init(r27770);
}

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

