#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 r27719 = 1;
        float r27720 = s;
        float r27721 = -r27720;
        float r27722 = exp(r27721);
        float r27723 = r27719 + r27722;
        float r27724 = r27719 / r27723;
        float r27725 = c_p;
        float r27726 = pow(r27724, r27725);
        float r27727 = r27719 - r27724;
        float r27728 = c_n;
        float r27729 = pow(r27727, r27728);
        float r27730 = r27726 * r27729;
        float r27731 = t;
        float r27732 = -r27731;
        float r27733 = exp(r27732);
        float r27734 = r27719 + r27733;
        float r27735 = r27719 / r27734;
        float r27736 = pow(r27735, r27725);
        float r27737 = r27719 - r27735;
        float r27738 = pow(r27737, r27728);
        float r27739 = r27736 * r27738;
        float r27740 = r27730 / r27739;
        return r27740;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27741 = 1;
        double r27742 = s;
        double r27743 = -r27742;
        double r27744 = exp(r27743);
        double r27745 = r27741 + r27744;
        double r27746 = r27741 / r27745;
        double r27747 = c_p;
        double r27748 = pow(r27746, r27747);
        double r27749 = r27741 - r27746;
        double r27750 = c_n;
        double r27751 = pow(r27749, r27750);
        double r27752 = r27748 * r27751;
        double r27753 = t;
        double r27754 = -r27753;
        double r27755 = exp(r27754);
        double r27756 = r27741 + r27755;
        double r27757 = r27741 / r27756;
        double r27758 = pow(r27757, r27747);
        double r27759 = r27741 - r27757;
        double r27760 = pow(r27759, r27750);
        double r27761 = r27758 * r27760;
        double r27762 = r27752 / r27761;
        return r27762;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27763 = 1;
        float r27764 = -r27763;
        float r27765 = s;
        float r27766 = -r27765;
        float r27767 = exp(r27766);
        float r27768 = r27763 + r27767;
        float r27769 = r27764 / r27768;
        float r27770 = log1p(r27769);
        float r27771 = c_n;
        float r27772 = r27770 * r27771;
        float r27773 = t;
        float r27774 = -r27773;
        float r27775 = exp(r27774);
        float r27776 = r27775 + r27763;
        float r27777 = r27764 / r27776;
        float r27778 = log1p(r27777);
        float r27779 = c_p;
        float r27780 = log1p(r27767);
        float r27781 = log1p(r27775);
        float r27782 = r27780 - r27781;
        float r27783 = r27779 * r27782;
        float r27784 = fma(r27778, r27771, r27783);
        float r27785 = r27772 - r27784;
        float r27786 = exp(r27785);
        return r27786;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27787 = 1;
        double r27788 = -r27787;
        double r27789 = s;
        double r27790 = -r27789;
        double r27791 = exp(r27790);
        double r27792 = r27787 + r27791;
        double r27793 = r27788 / r27792;
        double r27794 = log1p(r27793);
        double r27795 = c_n;
        double r27796 = r27794 * r27795;
        double r27797 = t;
        double r27798 = -r27797;
        double r27799 = exp(r27798);
        double r27800 = r27799 + r27787;
        double r27801 = r27788 / r27800;
        double r27802 = log1p(r27801);
        double r27803 = c_p;
        double r27804 = log1p(r27791);
        double r27805 = log1p(r27799);
        double r27806 = r27804 - r27805;
        double r27807 = r27803 * r27806;
        double r27808 = fma(r27802, r27795, r27807);
        double r27809 = r27796 - r27808;
        double r27810 = exp(r27809);
        return r27810;
}

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 r27811, r27812, r27813, r27814, r27815, r27816, r27817, r27818, r27819, r27820, r27821, r27822, r27823, r27824, r27825, r27826, r27827, r27828, r27829, r27830, r27831, r27832;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27811, "1", 10, MPFR_RNDN);
        mpfr_init(r27812);
        mpfr_init(r27813);
        mpfr_init(r27814);
        mpfr_init(r27815);
        mpfr_init(r27816);
        mpfr_init(r27817);
        mpfr_init(r27818);
        mpfr_init(r27819);
        mpfr_init(r27820);
        mpfr_init(r27821);
        mpfr_init(r27822);
        mpfr_init(r27823);
        mpfr_init(r27824);
        mpfr_init(r27825);
        mpfr_init(r27826);
        mpfr_init(r27827);
        mpfr_init(r27828);
        mpfr_init(r27829);
        mpfr_init(r27830);
        mpfr_init(r27831);
        mpfr_init(r27832);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27812, s, MPFR_RNDN);
        mpfr_neg(r27813, r27812, MPFR_RNDN);
        mpfr_exp(r27814, r27813, MPFR_RNDN);
        mpfr_add(r27815, r27811, r27814, MPFR_RNDN);
        mpfr_div(r27816, r27811, r27815, MPFR_RNDN);
        mpfr_set_d(r27817, c_p, MPFR_RNDN);
        mpfr_pow(r27818, r27816, r27817, MPFR_RNDN);
        mpfr_sub(r27819, r27811, r27816, MPFR_RNDN);
        mpfr_set_d(r27820, c_n, MPFR_RNDN);
        mpfr_pow(r27821, r27819, r27820, MPFR_RNDN);
        mpfr_mul(r27822, r27818, r27821, MPFR_RNDN);
        mpfr_set_d(r27823, t, MPFR_RNDN);
        mpfr_neg(r27824, r27823, MPFR_RNDN);
        mpfr_exp(r27825, r27824, MPFR_RNDN);
        mpfr_add(r27826, r27811, r27825, MPFR_RNDN);
        mpfr_div(r27827, r27811, r27826, MPFR_RNDN);
        mpfr_pow(r27828, r27827, r27817, MPFR_RNDN);
        mpfr_sub(r27829, r27811, r27827, MPFR_RNDN);
        mpfr_pow(r27830, r27829, r27820, MPFR_RNDN);
        mpfr_mul(r27831, r27828, r27830, MPFR_RNDN);
        mpfr_div(r27832, r27822, r27831, MPFR_RNDN);
        return mpfr_get_d(r27832, MPFR_RNDN);
}

static mpfr_t r27833, r27834, r27835, r27836, r27837, r27838, r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847, r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27833, "1", 10, MPFR_RNDN);
        mpfr_init(r27834);
        mpfr_init(r27835);
        mpfr_init(r27836);
        mpfr_init(r27837);
        mpfr_init(r27838);
        mpfr_init(r27839);
        mpfr_init(r27840);
        mpfr_init(r27841);
        mpfr_init(r27842);
        mpfr_init(r27843);
        mpfr_init(r27844);
        mpfr_init(r27845);
        mpfr_init(r27846);
        mpfr_init(r27847);
        mpfr_init(r27848);
        mpfr_init(r27849);
        mpfr_init(r27850);
        mpfr_init(r27851);
        mpfr_init(r27852);
        mpfr_init(r27853);
        mpfr_init(r27854);
        mpfr_init(r27855);
        mpfr_init(r27856);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_neg(r27834, r27833, MPFR_RNDN);
        mpfr_set_d(r27835, s, MPFR_RNDN);
        mpfr_neg(r27836, r27835, MPFR_RNDN);
        mpfr_exp(r27837, r27836, MPFR_RNDN);
        mpfr_add(r27838, r27833, r27837, MPFR_RNDN);
        mpfr_div(r27839, r27834, r27838, MPFR_RNDN);
        mpfr_log1p(r27840, r27839, MPFR_RNDN);
        mpfr_set_d(r27841, c_n, MPFR_RNDN);
        mpfr_mul(r27842, r27840, r27841, MPFR_RNDN);
        mpfr_set_d(r27843, t, MPFR_RNDN);
        mpfr_neg(r27844, r27843, MPFR_RNDN);
        mpfr_exp(r27845, r27844, MPFR_RNDN);
        mpfr_add(r27846, r27845, r27833, MPFR_RNDN);
        mpfr_div(r27847, r27834, r27846, MPFR_RNDN);
        mpfr_log1p(r27848, r27847, MPFR_RNDN);
        mpfr_set_d(r27849, c_p, MPFR_RNDN);
        mpfr_log1p(r27850, r27837, MPFR_RNDN);
        mpfr_log1p(r27851, r27845, MPFR_RNDN);
        mpfr_sub(r27852, r27850, r27851, MPFR_RNDN);
        mpfr_mul(r27853, r27849, r27852, MPFR_RNDN);
        mpfr_fma(r27854, r27848, r27841, r27853, MPFR_RNDN);
        mpfr_sub(r27855, r27842, r27854, MPFR_RNDN);
        mpfr_exp(r27856, r27855, MPFR_RNDN);
        return mpfr_get_d(r27856, MPFR_RNDN);
}

static mpfr_t r27857, r27858, r27859, r27860, r27861, r27862, r27863, r27864, r27865, r27866, r27867, r27868, r27869, r27870, r27871, r27872, r27873, r27874, r27875, r27876, r27877, r27878, r27879, r27880;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r27857, "1", 10, MPFR_RNDN);
        mpfr_init(r27858);
        mpfr_init(r27859);
        mpfr_init(r27860);
        mpfr_init(r27861);
        mpfr_init(r27862);
        mpfr_init(r27863);
        mpfr_init(r27864);
        mpfr_init(r27865);
        mpfr_init(r27866);
        mpfr_init(r27867);
        mpfr_init(r27868);
        mpfr_init(r27869);
        mpfr_init(r27870);
        mpfr_init(r27871);
        mpfr_init(r27872);
        mpfr_init(r27873);
        mpfr_init(r27874);
        mpfr_init(r27875);
        mpfr_init(r27876);
        mpfr_init(r27877);
        mpfr_init(r27878);
        mpfr_init(r27879);
        mpfr_init(r27880);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_neg(r27858, r27857, MPFR_RNDN);
        mpfr_set_d(r27859, s, MPFR_RNDN);
        mpfr_neg(r27860, r27859, MPFR_RNDN);
        mpfr_exp(r27861, r27860, MPFR_RNDN);
        mpfr_add(r27862, r27857, r27861, MPFR_RNDN);
        mpfr_div(r27863, r27858, r27862, MPFR_RNDN);
        mpfr_log1p(r27864, r27863, MPFR_RNDN);
        mpfr_set_d(r27865, c_n, MPFR_RNDN);
        mpfr_mul(r27866, r27864, r27865, MPFR_RNDN);
        mpfr_set_d(r27867, t, MPFR_RNDN);
        mpfr_neg(r27868, r27867, MPFR_RNDN);
        mpfr_exp(r27869, r27868, MPFR_RNDN);
        mpfr_add(r27870, r27869, r27857, MPFR_RNDN);
        mpfr_div(r27871, r27858, r27870, MPFR_RNDN);
        mpfr_log1p(r27872, r27871, MPFR_RNDN);
        mpfr_set_d(r27873, c_p, MPFR_RNDN);
        mpfr_log1p(r27874, r27861, MPFR_RNDN);
        mpfr_log1p(r27875, r27869, MPFR_RNDN);
        mpfr_sub(r27876, r27874, r27875, MPFR_RNDN);
        mpfr_mul(r27877, r27873, r27876, MPFR_RNDN);
        mpfr_fma(r27878, r27872, r27865, r27877, MPFR_RNDN);
        mpfr_sub(r27879, r27866, r27878, MPFR_RNDN);
        mpfr_exp(r27880, r27879, MPFR_RNDN);
        return mpfr_get_d(r27880, MPFR_RNDN);
}

