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

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


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

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

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r27814, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r27833);
        mpfr_init(r27834);
        mpfr_init(r27835);
}

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

static mpfr_t r27836, r27837, r27838, r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847, r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858, r27859, r27860, r27861, r27862;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r27836, "1", 10, MPFR_RNDN);
        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_set_str(r27855, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27856);
        mpfr_init(r27857);
        mpfr_init(r27858);
        mpfr_init(r27859);
        mpfr_init(r27860);
        mpfr_init(r27861);
        mpfr_init(r27862);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27837, s, MPFR_RNDN);
        mpfr_neg(r27838, r27837, MPFR_RNDN);
        mpfr_exp(r27839, r27838, MPFR_RNDN);
        mpfr_add(r27840, r27836, r27839, MPFR_RNDN);
        mpfr_div(r27841, r27836, r27840, MPFR_RNDN);
        mpfr_sub(r27842, r27836, r27841, MPFR_RNDN);
        mpfr_set_d(r27843, c_n, MPFR_RNDN);
        mpfr_pow(r27844, r27842, r27843, MPFR_RNDN);
        mpfr_set_d(r27845, t, MPFR_RNDN);
        mpfr_neg(r27846, r27845, MPFR_RNDN);
        mpfr_exp(r27847, r27846, MPFR_RNDN);
        mpfr_add(r27848, r27836, r27847, MPFR_RNDN);
        mpfr_div(r27849, r27836, r27848, MPFR_RNDN);
        mpfr_sub(r27850, r27836, r27849, MPFR_RNDN);
        mpfr_pow(r27851, r27850, r27843, MPFR_RNDN);
        mpfr_div(r27852, r27844, r27851, MPFR_RNDN);
        mpfr_set_d(r27853, c_p, MPFR_RNDN);
        mpfr_pow(r27854, r27841, r27853, MPFR_RNDN);
        ;
        mpfr_log(r27856, r27855, MPFR_RNDN);
        mpfr_mul(r27857, r27845, r27855, MPFR_RNDN);
        mpfr_add(r27858, r27856, r27857, MPFR_RNDN);
        mpfr_mul(r27859, r27853, r27858, MPFR_RNDN);
        mpfr_add(r27860, r27859, r27836, MPFR_RNDN);
        mpfr_div(r27861, r27854, r27860, MPFR_RNDN);
        mpfr_mul(r27862, r27852, r27861, MPFR_RNDN);
        return mpfr_get_d(r27862, MPFR_RNDN);
}

static mpfr_t r27863, r27864, r27865, r27866, r27867, r27868, r27869, r27870, r27871, r27872, r27873, r27874, r27875, r27876, r27877, r27878, r27879, r27880, r27881, r27882, r27883, r27884, r27885, r27886, r27887, r27888, r27889;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r27863, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r27881);
        mpfr_init_set_str(r27882, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27883);
        mpfr_init(r27884);
        mpfr_init(r27885);
        mpfr_init(r27886);
        mpfr_init(r27887);
        mpfr_init(r27888);
        mpfr_init(r27889);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27864, s, MPFR_RNDN);
        mpfr_neg(r27865, r27864, MPFR_RNDN);
        mpfr_exp(r27866, r27865, MPFR_RNDN);
        mpfr_add(r27867, r27863, r27866, MPFR_RNDN);
        mpfr_div(r27868, r27863, r27867, MPFR_RNDN);
        mpfr_sub(r27869, r27863, r27868, MPFR_RNDN);
        mpfr_set_d(r27870, c_n, MPFR_RNDN);
        mpfr_pow(r27871, r27869, r27870, MPFR_RNDN);
        mpfr_set_d(r27872, t, MPFR_RNDN);
        mpfr_neg(r27873, r27872, MPFR_RNDN);
        mpfr_exp(r27874, r27873, MPFR_RNDN);
        mpfr_add(r27875, r27863, r27874, MPFR_RNDN);
        mpfr_div(r27876, r27863, r27875, MPFR_RNDN);
        mpfr_sub(r27877, r27863, r27876, MPFR_RNDN);
        mpfr_pow(r27878, r27877, r27870, MPFR_RNDN);
        mpfr_div(r27879, r27871, r27878, MPFR_RNDN);
        mpfr_set_d(r27880, c_p, MPFR_RNDN);
        mpfr_pow(r27881, r27868, r27880, MPFR_RNDN);
        ;
        mpfr_log(r27883, r27882, MPFR_RNDN);
        mpfr_mul(r27884, r27872, r27882, MPFR_RNDN);
        mpfr_add(r27885, r27883, r27884, MPFR_RNDN);
        mpfr_mul(r27886, r27880, r27885, MPFR_RNDN);
        mpfr_add(r27887, r27886, r27863, MPFR_RNDN);
        mpfr_div(r27888, r27881, r27887, MPFR_RNDN);
        mpfr_mul(r27889, r27879, r27888, MPFR_RNDN);
        return mpfr_get_d(r27889, MPFR_RNDN);
}

