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

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


double f_of(float c_p, float c_n, float t, float s) {
        float r27762 = 1;
        float r27763 = t;
        float r27764 = -r27763;
        float r27765 = exp(r27764);
        float r27766 = r27762 + r27765;
        float r27767 = r27762 / r27766;
        float r27768 = 9.212525814332832e-88;
        bool r27769 = r27767 <= r27768;
        float r27770 = s;
        float r27771 = -r27770;
        float r27772 = exp(r27771);
        float r27773 = r27762 + r27772;
        float r27774 = r27762 / r27773;
        float r27775 = r27762 - r27774;
        float r27776 = c_n;
        float r27777 = pow(r27775, r27776);
        float r27778 = r27762 - r27767;
        float r27779 = pow(r27778, r27776);
        float r27780 = r27777 / r27779;
        float r27781 = c_p;
        float r27782 = pow(r27774, r27781);
        float r27783 = 1/2;
        float r27784 = log(r27783);
        float r27785 = r27763 * r27783;
        float r27786 = r27784 + r27785;
        float r27787 = r27781 * r27786;
        float r27788 = r27787 + r27762;
        float r27789 = r27782 / r27788;
        float r27790 = r27780 * r27789;
        float r27791 = log(r27775);
        float r27792 = r27765 + r27762;
        float r27793 = r27762 / r27792;
        float r27794 = r27762 - r27793;
        float r27795 = log(r27794);
        float r27796 = r27791 - r27795;
        float r27797 = r27796 * r27776;
        float r27798 = log(r27773);
        float r27799 = log(r27792);
        float r27800 = r27798 - r27799;
        float r27801 = r27800 * r27781;
        float r27802 = r27797 - r27801;
        float r27803 = exp(r27802);
        float r27804 = r27769 ? r27790 : r27803;
        return r27804;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27805 = 1;
        double r27806 = t;
        double r27807 = -r27806;
        double r27808 = exp(r27807);
        double r27809 = r27805 + r27808;
        double r27810 = r27805 / r27809;
        double r27811 = 9.212525814332832e-88;
        bool r27812 = r27810 <= r27811;
        double r27813 = s;
        double r27814 = -r27813;
        double r27815 = exp(r27814);
        double r27816 = r27805 + r27815;
        double r27817 = r27805 / r27816;
        double r27818 = r27805 - r27817;
        double r27819 = c_n;
        double r27820 = pow(r27818, r27819);
        double r27821 = r27805 - r27810;
        double r27822 = pow(r27821, r27819);
        double r27823 = r27820 / r27822;
        double r27824 = c_p;
        double r27825 = pow(r27817, r27824);
        double r27826 = 1/2;
        double r27827 = log(r27826);
        double r27828 = r27806 * r27826;
        double r27829 = r27827 + r27828;
        double r27830 = r27824 * r27829;
        double r27831 = r27830 + r27805;
        double r27832 = r27825 / r27831;
        double r27833 = r27823 * r27832;
        double r27834 = log(r27818);
        double r27835 = r27808 + r27805;
        double r27836 = r27805 / r27835;
        double r27837 = r27805 - r27836;
        double r27838 = log(r27837);
        double r27839 = r27834 - r27838;
        double r27840 = r27839 * r27819;
        double r27841 = log(r27816);
        double r27842 = log(r27835);
        double r27843 = r27841 - r27842;
        double r27844 = r27843 * r27824;
        double r27845 = r27840 - r27844;
        double r27846 = exp(r27845);
        double r27847 = r27812 ? r27833 : r27846;
        return r27847;
}

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 r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858, r27859, r27860, r27861, r27862, r27863, r27864, r27865, r27866, r27867, r27868, r27869;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27848, "1", 10, MPFR_RNDN);
        mpfr_init(r27849);
        mpfr_init(r27850);
        mpfr_init(r27851);
        mpfr_init(r27852);
        mpfr_init(r27853);
        mpfr_init(r27854);
        mpfr_init(r27855);
        mpfr_init(r27856);
        mpfr_init(r27857);
        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);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27849, s, MPFR_RNDN);
        mpfr_neg(r27850, r27849, MPFR_RNDN);
        mpfr_exp(r27851, r27850, MPFR_RNDN);
        mpfr_add(r27852, r27848, r27851, MPFR_RNDN);
        mpfr_div(r27853, r27848, r27852, MPFR_RNDN);
        mpfr_set_d(r27854, c_p, MPFR_RNDN);
        mpfr_pow(r27855, r27853, r27854, MPFR_RNDN);
        mpfr_sub(r27856, r27848, r27853, MPFR_RNDN);
        mpfr_set_d(r27857, c_n, MPFR_RNDN);
        mpfr_pow(r27858, r27856, r27857, MPFR_RNDN);
        mpfr_mul(r27859, r27855, r27858, MPFR_RNDN);
        mpfr_set_d(r27860, t, MPFR_RNDN);
        mpfr_neg(r27861, r27860, MPFR_RNDN);
        mpfr_exp(r27862, r27861, MPFR_RNDN);
        mpfr_add(r27863, r27848, r27862, MPFR_RNDN);
        mpfr_div(r27864, r27848, r27863, MPFR_RNDN);
        mpfr_pow(r27865, r27864, r27854, MPFR_RNDN);
        mpfr_sub(r27866, r27848, r27864, MPFR_RNDN);
        mpfr_pow(r27867, r27866, r27857, MPFR_RNDN);
        mpfr_mul(r27868, r27865, r27867, MPFR_RNDN);
        mpfr_div(r27869, r27859, r27868, MPFR_RNDN);
        return mpfr_get_d(r27869, MPFR_RNDN);
}

static mpfr_t r27870, r27871, r27872, r27873, r27874, r27875, r27876, r27877, r27878, r27879, r27880, r27881, r27882, r27883, r27884, r27885, r27886, r27887, r27888, r27889, r27890, r27891, r27892, r27893, r27894, r27895, r27896, r27897, r27898, r27899, r27900, r27901, r27902, r27903, r27904, r27905, r27906, r27907, r27908, r27909, r27910, r27911, r27912;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27870, "1", 10, MPFR_RNDN);
        mpfr_init(r27871);
        mpfr_init(r27872);
        mpfr_init(r27873);
        mpfr_init(r27874);
        mpfr_init(r27875);
        mpfr_init_set_str(r27876, "9.212525814332832e-88", 10, MPFR_RNDN);
        mpfr_init(r27877);
        mpfr_init(r27878);
        mpfr_init(r27879);
        mpfr_init(r27880);
        mpfr_init(r27881);
        mpfr_init(r27882);
        mpfr_init(r27883);
        mpfr_init(r27884);
        mpfr_init(r27885);
        mpfr_init(r27886);
        mpfr_init(r27887);
        mpfr_init(r27888);
        mpfr_init(r27889);
        mpfr_init(r27890);
        mpfr_init_set_str(r27891, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27892);
        mpfr_init(r27893);
        mpfr_init(r27894);
        mpfr_init(r27895);
        mpfr_init(r27896);
        mpfr_init(r27897);
        mpfr_init(r27898);
        mpfr_init(r27899);
        mpfr_init(r27900);
        mpfr_init(r27901);
        mpfr_init(r27902);
        mpfr_init(r27903);
        mpfr_init(r27904);
        mpfr_init(r27905);
        mpfr_init(r27906);
        mpfr_init(r27907);
        mpfr_init(r27908);
        mpfr_init(r27909);
        mpfr_init(r27910);
        mpfr_init(r27911);
        mpfr_init(r27912);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27871, t, MPFR_RNDN);
        mpfr_neg(r27872, r27871, MPFR_RNDN);
        mpfr_exp(r27873, r27872, MPFR_RNDN);
        mpfr_add(r27874, r27870, r27873, MPFR_RNDN);
        mpfr_div(r27875, r27870, r27874, MPFR_RNDN);
        ;
        mpfr_set_si(r27877, mpfr_cmp(r27875, r27876) <= 0, MPFR_RNDN);
        mpfr_set_d(r27878, s, MPFR_RNDN);
        mpfr_neg(r27879, r27878, MPFR_RNDN);
        mpfr_exp(r27880, r27879, MPFR_RNDN);
        mpfr_add(r27881, r27870, r27880, MPFR_RNDN);
        mpfr_div(r27882, r27870, r27881, MPFR_RNDN);
        mpfr_sub(r27883, r27870, r27882, MPFR_RNDN);
        mpfr_set_d(r27884, c_n, MPFR_RNDN);
        mpfr_pow(r27885, r27883, r27884, MPFR_RNDN);
        mpfr_sub(r27886, r27870, r27875, MPFR_RNDN);
        mpfr_pow(r27887, r27886, r27884, MPFR_RNDN);
        mpfr_div(r27888, r27885, r27887, MPFR_RNDN);
        mpfr_set_d(r27889, c_p, MPFR_RNDN);
        mpfr_pow(r27890, r27882, r27889, MPFR_RNDN);
        ;
        mpfr_log(r27892, r27891, MPFR_RNDN);
        mpfr_mul(r27893, r27871, r27891, MPFR_RNDN);
        mpfr_add(r27894, r27892, r27893, MPFR_RNDN);
        mpfr_mul(r27895, r27889, r27894, MPFR_RNDN);
        mpfr_add(r27896, r27895, r27870, MPFR_RNDN);
        mpfr_div(r27897, r27890, r27896, MPFR_RNDN);
        mpfr_mul(r27898, r27888, r27897, MPFR_RNDN);
        mpfr_log(r27899, r27883, MPFR_RNDN);
        mpfr_add(r27900, r27873, r27870, MPFR_RNDN);
        mpfr_div(r27901, r27870, r27900, MPFR_RNDN);
        mpfr_sub(r27902, r27870, r27901, MPFR_RNDN);
        mpfr_log(r27903, r27902, MPFR_RNDN);
        mpfr_sub(r27904, r27899, r27903, MPFR_RNDN);
        mpfr_mul(r27905, r27904, r27884, MPFR_RNDN);
        mpfr_log(r27906, r27881, MPFR_RNDN);
        mpfr_log(r27907, r27900, MPFR_RNDN);
        mpfr_sub(r27908, r27906, r27907, MPFR_RNDN);
        mpfr_mul(r27909, r27908, r27889, MPFR_RNDN);
        mpfr_sub(r27910, r27905, r27909, MPFR_RNDN);
        mpfr_exp(r27911, r27910, MPFR_RNDN);
        if (mpfr_get_si(r27877, MPFR_RNDN)) { mpfr_set(r27912, r27898, MPFR_RNDN); } else { mpfr_set(r27912, r27911, MPFR_RNDN); };
        return mpfr_get_d(r27912, MPFR_RNDN);
}

static mpfr_t r27913, r27914, r27915, r27916, r27917, r27918, r27919, r27920, r27921, r27922, r27923, r27924, r27925, r27926, r27927, r27928, r27929, r27930, r27931, r27932, r27933, r27934, r27935, r27936, r27937, r27938, r27939, r27940, r27941, r27942, r27943, r27944, r27945, r27946, r27947, r27948, r27949, r27950, r27951, r27952, r27953, r27954, r27955;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r27913, "1", 10, MPFR_RNDN);
        mpfr_init(r27914);
        mpfr_init(r27915);
        mpfr_init(r27916);
        mpfr_init(r27917);
        mpfr_init(r27918);
        mpfr_init_set_str(r27919, "9.212525814332832e-88", 10, MPFR_RNDN);
        mpfr_init(r27920);
        mpfr_init(r27921);
        mpfr_init(r27922);
        mpfr_init(r27923);
        mpfr_init(r27924);
        mpfr_init(r27925);
        mpfr_init(r27926);
        mpfr_init(r27927);
        mpfr_init(r27928);
        mpfr_init(r27929);
        mpfr_init(r27930);
        mpfr_init(r27931);
        mpfr_init(r27932);
        mpfr_init(r27933);
        mpfr_init_set_str(r27934, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27935);
        mpfr_init(r27936);
        mpfr_init(r27937);
        mpfr_init(r27938);
        mpfr_init(r27939);
        mpfr_init(r27940);
        mpfr_init(r27941);
        mpfr_init(r27942);
        mpfr_init(r27943);
        mpfr_init(r27944);
        mpfr_init(r27945);
        mpfr_init(r27946);
        mpfr_init(r27947);
        mpfr_init(r27948);
        mpfr_init(r27949);
        mpfr_init(r27950);
        mpfr_init(r27951);
        mpfr_init(r27952);
        mpfr_init(r27953);
        mpfr_init(r27954);
        mpfr_init(r27955);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r27914, t, MPFR_RNDN);
        mpfr_neg(r27915, r27914, MPFR_RNDN);
        mpfr_exp(r27916, r27915, MPFR_RNDN);
        mpfr_add(r27917, r27913, r27916, MPFR_RNDN);
        mpfr_div(r27918, r27913, r27917, MPFR_RNDN);
        ;
        mpfr_set_si(r27920, mpfr_cmp(r27918, r27919) <= 0, MPFR_RNDN);
        mpfr_set_d(r27921, s, MPFR_RNDN);
        mpfr_neg(r27922, r27921, MPFR_RNDN);
        mpfr_exp(r27923, r27922, MPFR_RNDN);
        mpfr_add(r27924, r27913, r27923, MPFR_RNDN);
        mpfr_div(r27925, r27913, r27924, MPFR_RNDN);
        mpfr_sub(r27926, r27913, r27925, MPFR_RNDN);
        mpfr_set_d(r27927, c_n, MPFR_RNDN);
        mpfr_pow(r27928, r27926, r27927, MPFR_RNDN);
        mpfr_sub(r27929, r27913, r27918, MPFR_RNDN);
        mpfr_pow(r27930, r27929, r27927, MPFR_RNDN);
        mpfr_div(r27931, r27928, r27930, MPFR_RNDN);
        mpfr_set_d(r27932, c_p, MPFR_RNDN);
        mpfr_pow(r27933, r27925, r27932, MPFR_RNDN);
        ;
        mpfr_log(r27935, r27934, MPFR_RNDN);
        mpfr_mul(r27936, r27914, r27934, MPFR_RNDN);
        mpfr_add(r27937, r27935, r27936, MPFR_RNDN);
        mpfr_mul(r27938, r27932, r27937, MPFR_RNDN);
        mpfr_add(r27939, r27938, r27913, MPFR_RNDN);
        mpfr_div(r27940, r27933, r27939, MPFR_RNDN);
        mpfr_mul(r27941, r27931, r27940, MPFR_RNDN);
        mpfr_log(r27942, r27926, MPFR_RNDN);
        mpfr_add(r27943, r27916, r27913, MPFR_RNDN);
        mpfr_div(r27944, r27913, r27943, MPFR_RNDN);
        mpfr_sub(r27945, r27913, r27944, MPFR_RNDN);
        mpfr_log(r27946, r27945, MPFR_RNDN);
        mpfr_sub(r27947, r27942, r27946, MPFR_RNDN);
        mpfr_mul(r27948, r27947, r27927, MPFR_RNDN);
        mpfr_log(r27949, r27924, MPFR_RNDN);
        mpfr_log(r27950, r27943, MPFR_RNDN);
        mpfr_sub(r27951, r27949, r27950, MPFR_RNDN);
        mpfr_mul(r27952, r27951, r27932, MPFR_RNDN);
        mpfr_sub(r27953, r27948, r27952, MPFR_RNDN);
        mpfr_exp(r27954, r27953, MPFR_RNDN);
        if (mpfr_get_si(r27920, MPFR_RNDN)) { mpfr_set(r27955, r27941, MPFR_RNDN); } else { mpfr_set(r27955, r27954, MPFR_RNDN); };
        return mpfr_get_d(r27955, MPFR_RNDN);
}

