#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 r27541 = 1;
        float r27542 = s;
        float r27543 = -r27542;
        float r27544 = exp(r27543);
        float r27545 = r27541 + r27544;
        float r27546 = r27541 / r27545;
        float r27547 = c_p;
        float r27548 = pow(r27546, r27547);
        float r27549 = r27541 - r27546;
        float r27550 = c_n;
        float r27551 = pow(r27549, r27550);
        float r27552 = r27548 * r27551;
        float r27553 = t;
        float r27554 = -r27553;
        float r27555 = exp(r27554);
        float r27556 = r27541 + r27555;
        float r27557 = r27541 / r27556;
        float r27558 = pow(r27557, r27547);
        float r27559 = r27541 - r27557;
        float r27560 = pow(r27559, r27550);
        float r27561 = r27558 * r27560;
        float r27562 = r27552 / r27561;
        return r27562;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27563 = 1;
        double r27564 = s;
        double r27565 = -r27564;
        double r27566 = exp(r27565);
        double r27567 = r27563 + r27566;
        double r27568 = r27563 / r27567;
        double r27569 = c_p;
        double r27570 = pow(r27568, r27569);
        double r27571 = r27563 - r27568;
        double r27572 = c_n;
        double r27573 = pow(r27571, r27572);
        double r27574 = r27570 * r27573;
        double r27575 = t;
        double r27576 = -r27575;
        double r27577 = exp(r27576);
        double r27578 = r27563 + r27577;
        double r27579 = r27563 / r27578;
        double r27580 = pow(r27579, r27569);
        double r27581 = r27563 - r27579;
        double r27582 = pow(r27581, r27572);
        double r27583 = r27580 * r27582;
        double r27584 = r27574 / r27583;
        return r27584;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27585 = 1;
        float r27586 = t;
        float r27587 = -r27586;
        float r27588 = exp(r27587);
        float r27589 = r27585 + r27588;
        float r27590 = r27585 / r27589;
        float r27591 = 0.008436949378518525;
        bool r27592 = r27590 <= r27591;
        float r27593 = s;
        float r27594 = -r27593;
        float r27595 = exp(r27594);
        float r27596 = r27585 + r27595;
        float r27597 = r27585 / r27596;
        float r27598 = r27585 - r27597;
        float r27599 = c_n;
        float r27600 = pow(r27598, r27599);
        float r27601 = r27585 - r27590;
        float r27602 = pow(r27601, r27599);
        float r27603 = c_p;
        float r27604 = 1/2;
        float r27605 = log(r27604);
        float r27606 = fma(r27604, r27586, r27605);
        float r27607 = fma(r27603, r27606, r27585);
        float r27608 = pow(r27597, r27603);
        float r27609 = r27607 / r27608;
        float r27610 = r27602 * r27609;
        float r27611 = r27600 / r27610;
        float r27612 = -r27585;
        float r27613 = r27612 / r27596;
        float r27614 = log1p(r27613);
        float r27615 = -r27603;
        float r27616 = log1p(r27595);
        float r27617 = log1p(r27588);
        float r27618 = r27616 - r27617;
        float r27619 = r27615 * r27618;
        float r27620 = fma(r27614, r27599, r27619);
        float r27621 = r27588 + r27585;
        float r27622 = r27612 / r27621;
        float r27623 = log1p(r27622);
        float r27624 = r27623 * r27599;
        float r27625 = r27620 - r27624;
        float r27626 = exp(r27625);
        float r27627 = r27592 ? r27611 : r27626;
        return r27627;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27628 = 1;
        double r27629 = t;
        double r27630 = -r27629;
        double r27631 = exp(r27630);
        double r27632 = r27628 + r27631;
        double r27633 = r27628 / r27632;
        double r27634 = 0.008436949378518525;
        bool r27635 = r27633 <= r27634;
        double r27636 = s;
        double r27637 = -r27636;
        double r27638 = exp(r27637);
        double r27639 = r27628 + r27638;
        double r27640 = r27628 / r27639;
        double r27641 = r27628 - r27640;
        double r27642 = c_n;
        double r27643 = pow(r27641, r27642);
        double r27644 = r27628 - r27633;
        double r27645 = pow(r27644, r27642);
        double r27646 = c_p;
        double r27647 = 1/2;
        double r27648 = log(r27647);
        double r27649 = fma(r27647, r27629, r27648);
        double r27650 = fma(r27646, r27649, r27628);
        double r27651 = pow(r27640, r27646);
        double r27652 = r27650 / r27651;
        double r27653 = r27645 * r27652;
        double r27654 = r27643 / r27653;
        double r27655 = -r27628;
        double r27656 = r27655 / r27639;
        double r27657 = log1p(r27656);
        double r27658 = -r27646;
        double r27659 = log1p(r27638);
        double r27660 = log1p(r27631);
        double r27661 = r27659 - r27660;
        double r27662 = r27658 * r27661;
        double r27663 = fma(r27657, r27642, r27662);
        double r27664 = r27631 + r27628;
        double r27665 = r27655 / r27664;
        double r27666 = log1p(r27665);
        double r27667 = r27666 * r27642;
        double r27668 = r27663 - r27667;
        double r27669 = exp(r27668);
        double r27670 = r27635 ? r27654 : r27669;
        return r27670;
}

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 r27671, r27672, r27673, r27674, r27675, r27676, r27677, r27678, r27679, r27680, r27681, r27682, r27683, r27684, r27685, r27686, r27687, r27688, r27689, r27690, r27691, r27692;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27671, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r27686);
        mpfr_init(r27687);
        mpfr_init(r27688);
        mpfr_init(r27689);
        mpfr_init(r27690);
        mpfr_init(r27691);
        mpfr_init(r27692);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27672, s, MPFR_RNDN);
        mpfr_neg(r27673, r27672, MPFR_RNDN);
        mpfr_exp(r27674, r27673, MPFR_RNDN);
        mpfr_add(r27675, r27671, r27674, MPFR_RNDN);
        mpfr_div(r27676, r27671, r27675, MPFR_RNDN);
        mpfr_set_d(r27677, c_p, MPFR_RNDN);
        mpfr_pow(r27678, r27676, r27677, MPFR_RNDN);
        mpfr_sub(r27679, r27671, r27676, MPFR_RNDN);
        mpfr_set_d(r27680, c_n, MPFR_RNDN);
        mpfr_pow(r27681, r27679, r27680, MPFR_RNDN);
        mpfr_mul(r27682, r27678, r27681, MPFR_RNDN);
        mpfr_set_d(r27683, t, MPFR_RNDN);
        mpfr_neg(r27684, r27683, MPFR_RNDN);
        mpfr_exp(r27685, r27684, MPFR_RNDN);
        mpfr_add(r27686, r27671, r27685, MPFR_RNDN);
        mpfr_div(r27687, r27671, r27686, MPFR_RNDN);
        mpfr_pow(r27688, r27687, r27677, MPFR_RNDN);
        mpfr_sub(r27689, r27671, r27687, MPFR_RNDN);
        mpfr_pow(r27690, r27689, r27680, MPFR_RNDN);
        mpfr_mul(r27691, r27688, r27690, MPFR_RNDN);
        mpfr_div(r27692, r27682, r27691, MPFR_RNDN);
        return mpfr_get_d(r27692, MPFR_RNDN);
}

static mpfr_t r27693, r27694, r27695, r27696, r27697, r27698, r27699, r27700, r27701, r27702, r27703, r27704, r27705, r27706, r27707, r27708, r27709, r27710, 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_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27693, "1", 10, MPFR_RNDN);
        mpfr_init(r27694);
        mpfr_init(r27695);
        mpfr_init(r27696);
        mpfr_init(r27697);
        mpfr_init(r27698);
        mpfr_init_set_str(r27699, "0.008436949378518525", 10, MPFR_RNDN);
        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_set_str(r27712, "1/2", 10, MPFR_RNDN);
        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_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27694, t, MPFR_RNDN);
        mpfr_neg(r27695, r27694, MPFR_RNDN);
        mpfr_exp(r27696, r27695, MPFR_RNDN);
        mpfr_add(r27697, r27693, r27696, MPFR_RNDN);
        mpfr_div(r27698, r27693, r27697, MPFR_RNDN);
        ;
        mpfr_set_si(r27700, mpfr_cmp(r27698, r27699) <= 0, MPFR_RNDN);
        mpfr_set_d(r27701, s, MPFR_RNDN);
        mpfr_neg(r27702, r27701, MPFR_RNDN);
        mpfr_exp(r27703, r27702, MPFR_RNDN);
        mpfr_add(r27704, r27693, r27703, MPFR_RNDN);
        mpfr_div(r27705, r27693, r27704, MPFR_RNDN);
        mpfr_sub(r27706, r27693, r27705, MPFR_RNDN);
        mpfr_set_d(r27707, c_n, MPFR_RNDN);
        mpfr_pow(r27708, r27706, r27707, MPFR_RNDN);
        mpfr_sub(r27709, r27693, r27698, MPFR_RNDN);
        mpfr_pow(r27710, r27709, r27707, MPFR_RNDN);
        mpfr_set_d(r27711, c_p, MPFR_RNDN);
        ;
        mpfr_log(r27713, r27712, MPFR_RNDN);
        mpfr_fma(r27714, r27712, r27694, r27713, MPFR_RNDN);
        mpfr_fma(r27715, r27711, r27714, r27693, MPFR_RNDN);
        mpfr_pow(r27716, r27705, r27711, MPFR_RNDN);
        mpfr_div(r27717, r27715, r27716, MPFR_RNDN);
        mpfr_mul(r27718, r27710, r27717, MPFR_RNDN);
        mpfr_div(r27719, r27708, r27718, MPFR_RNDN);
        mpfr_neg(r27720, r27693, MPFR_RNDN);
        mpfr_div(r27721, r27720, r27704, MPFR_RNDN);
        mpfr_log1p(r27722, r27721, MPFR_RNDN);
        mpfr_neg(r27723, r27711, MPFR_RNDN);
        mpfr_log1p(r27724, r27703, MPFR_RNDN);
        mpfr_log1p(r27725, r27696, MPFR_RNDN);
        mpfr_sub(r27726, r27724, r27725, MPFR_RNDN);
        mpfr_mul(r27727, r27723, r27726, MPFR_RNDN);
        mpfr_fma(r27728, r27722, r27707, r27727, MPFR_RNDN);
        mpfr_add(r27729, r27696, r27693, MPFR_RNDN);
        mpfr_div(r27730, r27720, r27729, MPFR_RNDN);
        mpfr_log1p(r27731, r27730, MPFR_RNDN);
        mpfr_mul(r27732, r27731, r27707, MPFR_RNDN);
        mpfr_sub(r27733, r27728, r27732, MPFR_RNDN);
        mpfr_exp(r27734, r27733, MPFR_RNDN);
        if (mpfr_get_si(r27700, MPFR_RNDN)) { mpfr_set(r27735, r27719, MPFR_RNDN); } else { mpfr_set(r27735, r27734, MPFR_RNDN); };
        return mpfr_get_d(r27735, MPFR_RNDN);
}

static mpfr_t r27736, r27737, r27738, r27739, r27740, r27741, 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, r27771, r27772, r27773, r27774, r27775, r27776, r27777, r27778;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27736, "1", 10, MPFR_RNDN);
        mpfr_init(r27737);
        mpfr_init(r27738);
        mpfr_init(r27739);
        mpfr_init(r27740);
        mpfr_init(r27741);
        mpfr_init_set_str(r27742, "0.008436949378518525", 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_set_str(r27755, "1/2", 10, MPFR_RNDN);
        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);
        mpfr_init(r27774);
        mpfr_init(r27775);
        mpfr_init(r27776);
        mpfr_init(r27777);
        mpfr_init(r27778);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27737, t, MPFR_RNDN);
        mpfr_neg(r27738, r27737, MPFR_RNDN);
        mpfr_exp(r27739, r27738, MPFR_RNDN);
        mpfr_add(r27740, r27736, r27739, MPFR_RNDN);
        mpfr_div(r27741, r27736, r27740, MPFR_RNDN);
        ;
        mpfr_set_si(r27743, mpfr_cmp(r27741, r27742) <= 0, MPFR_RNDN);
        mpfr_set_d(r27744, s, MPFR_RNDN);
        mpfr_neg(r27745, r27744, MPFR_RNDN);
        mpfr_exp(r27746, r27745, MPFR_RNDN);
        mpfr_add(r27747, r27736, r27746, MPFR_RNDN);
        mpfr_div(r27748, r27736, r27747, MPFR_RNDN);
        mpfr_sub(r27749, r27736, r27748, MPFR_RNDN);
        mpfr_set_d(r27750, c_n, MPFR_RNDN);
        mpfr_pow(r27751, r27749, r27750, MPFR_RNDN);
        mpfr_sub(r27752, r27736, r27741, MPFR_RNDN);
        mpfr_pow(r27753, r27752, r27750, MPFR_RNDN);
        mpfr_set_d(r27754, c_p, MPFR_RNDN);
        ;
        mpfr_log(r27756, r27755, MPFR_RNDN);
        mpfr_fma(r27757, r27755, r27737, r27756, MPFR_RNDN);
        mpfr_fma(r27758, r27754, r27757, r27736, MPFR_RNDN);
        mpfr_pow(r27759, r27748, r27754, MPFR_RNDN);
        mpfr_div(r27760, r27758, r27759, MPFR_RNDN);
        mpfr_mul(r27761, r27753, r27760, MPFR_RNDN);
        mpfr_div(r27762, r27751, r27761, MPFR_RNDN);
        mpfr_neg(r27763, r27736, MPFR_RNDN);
        mpfr_div(r27764, r27763, r27747, MPFR_RNDN);
        mpfr_log1p(r27765, r27764, MPFR_RNDN);
        mpfr_neg(r27766, r27754, MPFR_RNDN);
        mpfr_log1p(r27767, r27746, MPFR_RNDN);
        mpfr_log1p(r27768, r27739, MPFR_RNDN);
        mpfr_sub(r27769, r27767, r27768, MPFR_RNDN);
        mpfr_mul(r27770, r27766, r27769, MPFR_RNDN);
        mpfr_fma(r27771, r27765, r27750, r27770, MPFR_RNDN);
        mpfr_add(r27772, r27739, r27736, MPFR_RNDN);
        mpfr_div(r27773, r27763, r27772, MPFR_RNDN);
        mpfr_log1p(r27774, r27773, MPFR_RNDN);
        mpfr_mul(r27775, r27774, r27750, MPFR_RNDN);
        mpfr_sub(r27776, r27771, r27775, MPFR_RNDN);
        mpfr_exp(r27777, r27776, MPFR_RNDN);
        if (mpfr_get_si(r27743, MPFR_RNDN)) { mpfr_set(r27778, r27762, MPFR_RNDN); } else { mpfr_set(r27778, r27777, MPFR_RNDN); };
        return mpfr_get_d(r27778, MPFR_RNDN);
}

