#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 r48675 = 1;
        float r48676 = s;
        float r48677 = -r48676;
        float r48678 = exp(r48677);
        float r48679 = r48675 + r48678;
        float r48680 = r48675 / r48679;
        float r48681 = c_p;
        float r48682 = pow(r48680, r48681);
        float r48683 = r48675 - r48680;
        float r48684 = c_n;
        float r48685 = pow(r48683, r48684);
        float r48686 = r48682 * r48685;
        float r48687 = t;
        float r48688 = -r48687;
        float r48689 = exp(r48688);
        float r48690 = r48675 + r48689;
        float r48691 = r48675 / r48690;
        float r48692 = pow(r48691, r48681);
        float r48693 = r48675 - r48691;
        float r48694 = pow(r48693, r48684);
        float r48695 = r48692 * r48694;
        float r48696 = r48686 / r48695;
        return r48696;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48697 = 1;
        double r48698 = s;
        double r48699 = -r48698;
        double r48700 = exp(r48699);
        double r48701 = r48697 + r48700;
        double r48702 = r48697 / r48701;
        double r48703 = c_p;
        double r48704 = pow(r48702, r48703);
        double r48705 = r48697 - r48702;
        double r48706 = c_n;
        double r48707 = pow(r48705, r48706);
        double r48708 = r48704 * r48707;
        double r48709 = t;
        double r48710 = -r48709;
        double r48711 = exp(r48710);
        double r48712 = r48697 + r48711;
        double r48713 = r48697 / r48712;
        double r48714 = pow(r48713, r48703);
        double r48715 = r48697 - r48713;
        double r48716 = pow(r48715, r48706);
        double r48717 = r48714 * r48716;
        double r48718 = r48708 / r48717;
        return r48718;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48719 = t;
        float r48720 = -734.3625061456353;
        bool r48721 = r48719 <= r48720;
        float r48722 = 1;
        float r48723 = s;
        float r48724 = -r48723;
        float r48725 = exp(r48724);
        float r48726 = r48722 + r48725;
        float r48727 = r48722 / r48726;
        float r48728 = r48722 - r48727;
        float r48729 = -r48719;
        float r48730 = exp(r48729);
        float r48731 = r48722 + r48730;
        float r48732 = r48722 / r48731;
        float r48733 = r48722 - r48732;
        float r48734 = r48728 / r48733;
        float r48735 = c_n;
        float r48736 = pow(r48734, r48735);
        float r48737 = c_p;
        float r48738 = -r48737;
        float r48739 = r48719 - r48723;
        float r48740 = 1/2;
        float r48741 = r48739 * r48740;
        float r48742 = 1/8;
        float r48743 = r48723 * r48742;
        float r48744 = r48743 * r48723;
        float r48745 = r48741 + r48744;
        float r48746 = r48738 * r48745;
        float r48747 = exp(r48746);
        float r48748 = r48736 * r48747;
        float r48749 = log(r48726);
        float r48750 = r48730 + r48722;
        float r48751 = log(r48750);
        float r48752 = r48749 - r48751;
        float r48753 = r48752 * r48738;
        float r48754 = log(r48728);
        float r48755 = r48722 / r48750;
        float r48756 = r48722 - r48755;
        float r48757 = log(r48756);
        float r48758 = r48754 - r48757;
        float r48759 = r48758 * r48735;
        float r48760 = r48753 + r48759;
        float r48761 = exp(r48760);
        float r48762 = r48721 ? r48748 : r48761;
        return r48762;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48763 = t;
        double r48764 = -734.3625061456353;
        bool r48765 = r48763 <= r48764;
        double r48766 = 1;
        double r48767 = s;
        double r48768 = -r48767;
        double r48769 = exp(r48768);
        double r48770 = r48766 + r48769;
        double r48771 = r48766 / r48770;
        double r48772 = r48766 - r48771;
        double r48773 = -r48763;
        double r48774 = exp(r48773);
        double r48775 = r48766 + r48774;
        double r48776 = r48766 / r48775;
        double r48777 = r48766 - r48776;
        double r48778 = r48772 / r48777;
        double r48779 = c_n;
        double r48780 = pow(r48778, r48779);
        double r48781 = c_p;
        double r48782 = -r48781;
        double r48783 = r48763 - r48767;
        double r48784 = 1/2;
        double r48785 = r48783 * r48784;
        double r48786 = 1/8;
        double r48787 = r48767 * r48786;
        double r48788 = r48787 * r48767;
        double r48789 = r48785 + r48788;
        double r48790 = r48782 * r48789;
        double r48791 = exp(r48790);
        double r48792 = r48780 * r48791;
        double r48793 = log(r48770);
        double r48794 = r48774 + r48766;
        double r48795 = log(r48794);
        double r48796 = r48793 - r48795;
        double r48797 = r48796 * r48782;
        double r48798 = log(r48772);
        double r48799 = r48766 / r48794;
        double r48800 = r48766 - r48799;
        double r48801 = log(r48800);
        double r48802 = r48798 - r48801;
        double r48803 = r48802 * r48779;
        double r48804 = r48797 + r48803;
        double r48805 = exp(r48804);
        double r48806 = r48765 ? r48792 : r48805;
        return r48806;
}

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 r48807, r48808, r48809, r48810, r48811, r48812, r48813, r48814, r48815, r48816, r48817, r48818, r48819, r48820, r48821, r48822, r48823, r48824, r48825, r48826, r48827, r48828;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2192);
        mpfr_init_set_str(r48807, "1", 10, MPFR_RNDN);
        mpfr_init(r48808);
        mpfr_init(r48809);
        mpfr_init(r48810);
        mpfr_init(r48811);
        mpfr_init(r48812);
        mpfr_init(r48813);
        mpfr_init(r48814);
        mpfr_init(r48815);
        mpfr_init(r48816);
        mpfr_init(r48817);
        mpfr_init(r48818);
        mpfr_init(r48819);
        mpfr_init(r48820);
        mpfr_init(r48821);
        mpfr_init(r48822);
        mpfr_init(r48823);
        mpfr_init(r48824);
        mpfr_init(r48825);
        mpfr_init(r48826);
        mpfr_init(r48827);
        mpfr_init(r48828);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48808, s, MPFR_RNDN);
        mpfr_neg(r48809, r48808, MPFR_RNDN);
        mpfr_exp(r48810, r48809, MPFR_RNDN);
        mpfr_add(r48811, r48807, r48810, MPFR_RNDN);
        mpfr_div(r48812, r48807, r48811, MPFR_RNDN);
        mpfr_set_d(r48813, c_p, MPFR_RNDN);
        mpfr_pow(r48814, r48812, r48813, MPFR_RNDN);
        mpfr_sub(r48815, r48807, r48812, MPFR_RNDN);
        mpfr_set_d(r48816, c_n, MPFR_RNDN);
        mpfr_pow(r48817, r48815, r48816, MPFR_RNDN);
        mpfr_mul(r48818, r48814, r48817, MPFR_RNDN);
        mpfr_set_d(r48819, t, MPFR_RNDN);
        mpfr_neg(r48820, r48819, MPFR_RNDN);
        mpfr_exp(r48821, r48820, MPFR_RNDN);
        mpfr_add(r48822, r48807, r48821, MPFR_RNDN);
        mpfr_div(r48823, r48807, r48822, MPFR_RNDN);
        mpfr_pow(r48824, r48823, r48813, MPFR_RNDN);
        mpfr_sub(r48825, r48807, r48823, MPFR_RNDN);
        mpfr_pow(r48826, r48825, r48816, MPFR_RNDN);
        mpfr_mul(r48827, r48824, r48826, MPFR_RNDN);
        mpfr_div(r48828, r48818, r48827, MPFR_RNDN);
        return mpfr_get_d(r48828, MPFR_RNDN);
}

static mpfr_t r48829, r48830, r48831, r48832, r48833, r48834, r48835, r48836, r48837, r48838, r48839, r48840, r48841, r48842, r48843, r48844, r48845, r48846, r48847, r48848, r48849, r48850, r48851, r48852, r48853, r48854, r48855, r48856, r48857, r48858, r48859, r48860, r48861, r48862, r48863, r48864, r48865, r48866, r48867, r48868, r48869, r48870, r48871, r48872;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r48829);
        mpfr_init_set_str(r48830, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48831);
        mpfr_init_set_str(r48832, "1", 10, MPFR_RNDN);
        mpfr_init(r48833);
        mpfr_init(r48834);
        mpfr_init(r48835);
        mpfr_init(r48836);
        mpfr_init(r48837);
        mpfr_init(r48838);
        mpfr_init(r48839);
        mpfr_init(r48840);
        mpfr_init(r48841);
        mpfr_init(r48842);
        mpfr_init(r48843);
        mpfr_init(r48844);
        mpfr_init(r48845);
        mpfr_init(r48846);
        mpfr_init(r48847);
        mpfr_init(r48848);
        mpfr_init(r48849);
        mpfr_init_set_str(r48850, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48851);
        mpfr_init_set_str(r48852, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48853);
        mpfr_init(r48854);
        mpfr_init(r48855);
        mpfr_init(r48856);
        mpfr_init(r48857);
        mpfr_init(r48858);
        mpfr_init(r48859);
        mpfr_init(r48860);
        mpfr_init(r48861);
        mpfr_init(r48862);
        mpfr_init(r48863);
        mpfr_init(r48864);
        mpfr_init(r48865);
        mpfr_init(r48866);
        mpfr_init(r48867);
        mpfr_init(r48868);
        mpfr_init(r48869);
        mpfr_init(r48870);
        mpfr_init(r48871);
        mpfr_init(r48872);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48829, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48831, mpfr_cmp(r48829, r48830) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48833, s, MPFR_RNDN);
        mpfr_neg(r48834, r48833, MPFR_RNDN);
        mpfr_exp(r48835, r48834, MPFR_RNDN);
        mpfr_add(r48836, r48832, r48835, MPFR_RNDN);
        mpfr_div(r48837, r48832, r48836, MPFR_RNDN);
        mpfr_sub(r48838, r48832, r48837, MPFR_RNDN);
        mpfr_neg(r48839, r48829, MPFR_RNDN);
        mpfr_exp(r48840, r48839, MPFR_RNDN);
        mpfr_add(r48841, r48832, r48840, MPFR_RNDN);
        mpfr_div(r48842, r48832, r48841, MPFR_RNDN);
        mpfr_sub(r48843, r48832, r48842, MPFR_RNDN);
        mpfr_div(r48844, r48838, r48843, MPFR_RNDN);
        mpfr_set_d(r48845, c_n, MPFR_RNDN);
        mpfr_pow(r48846, r48844, r48845, MPFR_RNDN);
        mpfr_set_d(r48847, c_p, MPFR_RNDN);
        mpfr_neg(r48848, r48847, MPFR_RNDN);
        mpfr_sub(r48849, r48829, r48833, MPFR_RNDN);
        ;
        mpfr_mul(r48851, r48849, r48850, MPFR_RNDN);
        ;
        mpfr_mul(r48853, r48833, r48852, MPFR_RNDN);
        mpfr_mul(r48854, r48853, r48833, MPFR_RNDN);
        mpfr_add(r48855, r48851, r48854, MPFR_RNDN);
        mpfr_mul(r48856, r48848, r48855, MPFR_RNDN);
        mpfr_exp(r48857, r48856, MPFR_RNDN);
        mpfr_mul(r48858, r48846, r48857, MPFR_RNDN);
        mpfr_log(r48859, r48836, MPFR_RNDN);
        mpfr_add(r48860, r48840, r48832, MPFR_RNDN);
        mpfr_log(r48861, r48860, MPFR_RNDN);
        mpfr_sub(r48862, r48859, r48861, MPFR_RNDN);
        mpfr_mul(r48863, r48862, r48848, MPFR_RNDN);
        mpfr_log(r48864, r48838, MPFR_RNDN);
        mpfr_div(r48865, r48832, r48860, MPFR_RNDN);
        mpfr_sub(r48866, r48832, r48865, MPFR_RNDN);
        mpfr_log(r48867, r48866, MPFR_RNDN);
        mpfr_sub(r48868, r48864, r48867, MPFR_RNDN);
        mpfr_mul(r48869, r48868, r48845, MPFR_RNDN);
        mpfr_add(r48870, r48863, r48869, MPFR_RNDN);
        mpfr_exp(r48871, r48870, MPFR_RNDN);
        if (mpfr_get_si(r48831, MPFR_RNDN)) { mpfr_set(r48872, r48858, MPFR_RNDN); } else { mpfr_set(r48872, r48871, MPFR_RNDN); };
        return mpfr_get_d(r48872, MPFR_RNDN);
}

static mpfr_t r48873, r48874, r48875, r48876, r48877, r48878, r48879, r48880, r48881, r48882, r48883, r48884, r48885, r48886, r48887, r48888, r48889, r48890, r48891, r48892, r48893, r48894, r48895, r48896, r48897, r48898, r48899, r48900, r48901, r48902, r48903, r48904, r48905, r48906, r48907, r48908, r48909, r48910, r48911, r48912, r48913, r48914, r48915, r48916;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r48873);
        mpfr_init_set_str(r48874, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48875);
        mpfr_init_set_str(r48876, "1", 10, MPFR_RNDN);
        mpfr_init(r48877);
        mpfr_init(r48878);
        mpfr_init(r48879);
        mpfr_init(r48880);
        mpfr_init(r48881);
        mpfr_init(r48882);
        mpfr_init(r48883);
        mpfr_init(r48884);
        mpfr_init(r48885);
        mpfr_init(r48886);
        mpfr_init(r48887);
        mpfr_init(r48888);
        mpfr_init(r48889);
        mpfr_init(r48890);
        mpfr_init(r48891);
        mpfr_init(r48892);
        mpfr_init(r48893);
        mpfr_init_set_str(r48894, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48895);
        mpfr_init_set_str(r48896, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48897);
        mpfr_init(r48898);
        mpfr_init(r48899);
        mpfr_init(r48900);
        mpfr_init(r48901);
        mpfr_init(r48902);
        mpfr_init(r48903);
        mpfr_init(r48904);
        mpfr_init(r48905);
        mpfr_init(r48906);
        mpfr_init(r48907);
        mpfr_init(r48908);
        mpfr_init(r48909);
        mpfr_init(r48910);
        mpfr_init(r48911);
        mpfr_init(r48912);
        mpfr_init(r48913);
        mpfr_init(r48914);
        mpfr_init(r48915);
        mpfr_init(r48916);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48873, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48875, mpfr_cmp(r48873, r48874) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48877, s, MPFR_RNDN);
        mpfr_neg(r48878, r48877, MPFR_RNDN);
        mpfr_exp(r48879, r48878, MPFR_RNDN);
        mpfr_add(r48880, r48876, r48879, MPFR_RNDN);
        mpfr_div(r48881, r48876, r48880, MPFR_RNDN);
        mpfr_sub(r48882, r48876, r48881, MPFR_RNDN);
        mpfr_neg(r48883, r48873, MPFR_RNDN);
        mpfr_exp(r48884, r48883, MPFR_RNDN);
        mpfr_add(r48885, r48876, r48884, MPFR_RNDN);
        mpfr_div(r48886, r48876, r48885, MPFR_RNDN);
        mpfr_sub(r48887, r48876, r48886, MPFR_RNDN);
        mpfr_div(r48888, r48882, r48887, MPFR_RNDN);
        mpfr_set_d(r48889, c_n, MPFR_RNDN);
        mpfr_pow(r48890, r48888, r48889, MPFR_RNDN);
        mpfr_set_d(r48891, c_p, MPFR_RNDN);
        mpfr_neg(r48892, r48891, MPFR_RNDN);
        mpfr_sub(r48893, r48873, r48877, MPFR_RNDN);
        ;
        mpfr_mul(r48895, r48893, r48894, MPFR_RNDN);
        ;
        mpfr_mul(r48897, r48877, r48896, MPFR_RNDN);
        mpfr_mul(r48898, r48897, r48877, MPFR_RNDN);
        mpfr_add(r48899, r48895, r48898, MPFR_RNDN);
        mpfr_mul(r48900, r48892, r48899, MPFR_RNDN);
        mpfr_exp(r48901, r48900, MPFR_RNDN);
        mpfr_mul(r48902, r48890, r48901, MPFR_RNDN);
        mpfr_log(r48903, r48880, MPFR_RNDN);
        mpfr_add(r48904, r48884, r48876, MPFR_RNDN);
        mpfr_log(r48905, r48904, MPFR_RNDN);
        mpfr_sub(r48906, r48903, r48905, MPFR_RNDN);
        mpfr_mul(r48907, r48906, r48892, MPFR_RNDN);
        mpfr_log(r48908, r48882, MPFR_RNDN);
        mpfr_div(r48909, r48876, r48904, MPFR_RNDN);
        mpfr_sub(r48910, r48876, r48909, MPFR_RNDN);
        mpfr_log(r48911, r48910, MPFR_RNDN);
        mpfr_sub(r48912, r48908, r48911, MPFR_RNDN);
        mpfr_mul(r48913, r48912, r48889, MPFR_RNDN);
        mpfr_add(r48914, r48907, r48913, MPFR_RNDN);
        mpfr_exp(r48915, r48914, MPFR_RNDN);
        if (mpfr_get_si(r48875, MPFR_RNDN)) { mpfr_set(r48916, r48902, MPFR_RNDN); } else { mpfr_set(r48916, r48915, MPFR_RNDN); };
        return mpfr_get_d(r48916, MPFR_RNDN);
}

