#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 r48807 = 1;
        float r48808 = s;
        float r48809 = -r48808;
        float r48810 = exp(r48809);
        float r48811 = r48807 + r48810;
        float r48812 = r48807 / r48811;
        float r48813 = c_p;
        float r48814 = pow(r48812, r48813);
        float r48815 = r48807 - r48812;
        float r48816 = c_n;
        float r48817 = pow(r48815, r48816);
        float r48818 = r48814 * r48817;
        float r48819 = t;
        float r48820 = -r48819;
        float r48821 = exp(r48820);
        float r48822 = r48807 + r48821;
        float r48823 = r48807 / r48822;
        float r48824 = pow(r48823, r48813);
        float r48825 = r48807 - r48823;
        float r48826 = pow(r48825, r48816);
        float r48827 = r48824 * r48826;
        float r48828 = r48818 / r48827;
        return r48828;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r48829 = 1;
        double r48830 = s;
        double r48831 = -r48830;
        double r48832 = exp(r48831);
        double r48833 = r48829 + r48832;
        double r48834 = r48829 / r48833;
        double r48835 = c_p;
        double r48836 = pow(r48834, r48835);
        double r48837 = r48829 - r48834;
        double r48838 = c_n;
        double r48839 = pow(r48837, r48838);
        double r48840 = r48836 * r48839;
        double r48841 = t;
        double r48842 = -r48841;
        double r48843 = exp(r48842);
        double r48844 = r48829 + r48843;
        double r48845 = r48829 / r48844;
        double r48846 = pow(r48845, r48835);
        double r48847 = r48829 - r48845;
        double r48848 = pow(r48847, r48838);
        double r48849 = r48846 * r48848;
        double r48850 = r48840 / r48849;
        return r48850;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r48851 = t;
        float r48852 = -335.2389549592286;
        bool r48853 = r48851 <= r48852;
        float r48854 = 1;
        float r48855 = s;
        float r48856 = -r48855;
        float r48857 = exp(r48856);
        float r48858 = r48854 + r48857;
        float r48859 = r48854 / r48858;
        float r48860 = r48854 - r48859;
        float r48861 = -r48851;
        float r48862 = exp(r48861);
        float r48863 = r48854 + r48862;
        float r48864 = r48854 / r48863;
        float r48865 = r48854 - r48864;
        float r48866 = r48860 / r48865;
        float r48867 = c_n;
        float r48868 = pow(r48866, r48867);
        float r48869 = c_p;
        float r48870 = -r48869;
        float r48871 = r48851 - r48855;
        float r48872 = 1/2;
        float r48873 = r48871 * r48872;
        float r48874 = 1/8;
        float r48875 = r48855 * r48874;
        float r48876 = r48875 * r48855;
        float r48877 = r48873 + r48876;
        float r48878 = r48870 * r48877;
        float r48879 = exp(r48878);
        float r48880 = r48868 * r48879;
        float r48881 = log(r48858);
        float r48882 = r48862 + r48854;
        float r48883 = log(r48882);
        float r48884 = r48881 - r48883;
        float r48885 = r48884 * r48870;
        float r48886 = log(r48860);
        float r48887 = r48854 / r48882;
        float r48888 = r48854 - r48887;
        float r48889 = log(r48888);
        float r48890 = r48886 - r48889;
        float r48891 = r48890 * r48867;
        float r48892 = r48885 + r48891;
        float r48893 = exp(r48892);
        float r48894 = r48853 ? r48880 : r48893;
        return r48894;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48895 = t;
        double r48896 = -335.2389549592286;
        bool r48897 = r48895 <= r48896;
        double r48898 = 1;
        double r48899 = s;
        double r48900 = -r48899;
        double r48901 = exp(r48900);
        double r48902 = r48898 + r48901;
        double r48903 = r48898 / r48902;
        double r48904 = r48898 - r48903;
        double r48905 = -r48895;
        double r48906 = exp(r48905);
        double r48907 = r48898 + r48906;
        double r48908 = r48898 / r48907;
        double r48909 = r48898 - r48908;
        double r48910 = r48904 / r48909;
        double r48911 = c_n;
        double r48912 = pow(r48910, r48911);
        double r48913 = c_p;
        double r48914 = -r48913;
        double r48915 = r48895 - r48899;
        double r48916 = 1/2;
        double r48917 = r48915 * r48916;
        double r48918 = 1/8;
        double r48919 = r48899 * r48918;
        double r48920 = r48919 * r48899;
        double r48921 = r48917 + r48920;
        double r48922 = r48914 * r48921;
        double r48923 = exp(r48922);
        double r48924 = r48912 * r48923;
        double r48925 = log(r48902);
        double r48926 = r48906 + r48898;
        double r48927 = log(r48926);
        double r48928 = r48925 - r48927;
        double r48929 = r48928 * r48914;
        double r48930 = log(r48904);
        double r48931 = r48898 / r48926;
        double r48932 = r48898 - r48931;
        double r48933 = log(r48932);
        double r48934 = r48930 - r48933;
        double r48935 = r48934 * r48911;
        double r48936 = r48929 + r48935;
        double r48937 = exp(r48936);
        double r48938 = r48897 ? r48924 : r48937;
        return r48938;
}

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 r48939, r48940, r48941, r48942, r48943, r48944, r48945, r48946, r48947, r48948, r48949, r48950, r48951, r48952, r48953, r48954, r48955, r48956, r48957, r48958, r48959, r48960;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init_set_str(r48939, "1", 10, MPFR_RNDN);
        mpfr_init(r48940);
        mpfr_init(r48941);
        mpfr_init(r48942);
        mpfr_init(r48943);
        mpfr_init(r48944);
        mpfr_init(r48945);
        mpfr_init(r48946);
        mpfr_init(r48947);
        mpfr_init(r48948);
        mpfr_init(r48949);
        mpfr_init(r48950);
        mpfr_init(r48951);
        mpfr_init(r48952);
        mpfr_init(r48953);
        mpfr_init(r48954);
        mpfr_init(r48955);
        mpfr_init(r48956);
        mpfr_init(r48957);
        mpfr_init(r48958);
        mpfr_init(r48959);
        mpfr_init(r48960);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48940, s, MPFR_RNDN);
        mpfr_neg(r48941, r48940, MPFR_RNDN);
        mpfr_exp(r48942, r48941, MPFR_RNDN);
        mpfr_add(r48943, r48939, r48942, MPFR_RNDN);
        mpfr_div(r48944, r48939, r48943, MPFR_RNDN);
        mpfr_set_d(r48945, c_p, MPFR_RNDN);
        mpfr_pow(r48946, r48944, r48945, MPFR_RNDN);
        mpfr_sub(r48947, r48939, r48944, MPFR_RNDN);
        mpfr_set_d(r48948, c_n, MPFR_RNDN);
        mpfr_pow(r48949, r48947, r48948, MPFR_RNDN);
        mpfr_mul(r48950, r48946, r48949, MPFR_RNDN);
        mpfr_set_d(r48951, t, MPFR_RNDN);
        mpfr_neg(r48952, r48951, MPFR_RNDN);
        mpfr_exp(r48953, r48952, MPFR_RNDN);
        mpfr_add(r48954, r48939, r48953, MPFR_RNDN);
        mpfr_div(r48955, r48939, r48954, MPFR_RNDN);
        mpfr_pow(r48956, r48955, r48945, MPFR_RNDN);
        mpfr_sub(r48957, r48939, r48955, MPFR_RNDN);
        mpfr_pow(r48958, r48957, r48948, MPFR_RNDN);
        mpfr_mul(r48959, r48956, r48958, MPFR_RNDN);
        mpfr_div(r48960, r48950, r48959, MPFR_RNDN);
        return mpfr_get_d(r48960, MPFR_RNDN);
}

static mpfr_t r48961, r48962, r48963, r48964, r48965, r48966, r48967, r48968, r48969, r48970, r48971, r48972, r48973, r48974, r48975, r48976, r48977, r48978, r48979, r48980, r48981, r48982, r48983, r48984, r48985, r48986, r48987, r48988, r48989, r48990, r48991, r48992, r48993, r48994, r48995, r48996, r48997, r48998, r48999, r49000, r49001, r49002, r49003, r49004;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r48961);
        mpfr_init_set_str(r48962, "-335.2389549592286", 10, MPFR_RNDN);
        mpfr_init(r48963);
        mpfr_init_set_str(r48964, "1", 10, MPFR_RNDN);
        mpfr_init(r48965);
        mpfr_init(r48966);
        mpfr_init(r48967);
        mpfr_init(r48968);
        mpfr_init(r48969);
        mpfr_init(r48970);
        mpfr_init(r48971);
        mpfr_init(r48972);
        mpfr_init(r48973);
        mpfr_init(r48974);
        mpfr_init(r48975);
        mpfr_init(r48976);
        mpfr_init(r48977);
        mpfr_init(r48978);
        mpfr_init(r48979);
        mpfr_init(r48980);
        mpfr_init(r48981);
        mpfr_init_set_str(r48982, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48983);
        mpfr_init_set_str(r48984, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48985);
        mpfr_init(r48986);
        mpfr_init(r48987);
        mpfr_init(r48988);
        mpfr_init(r48989);
        mpfr_init(r48990);
        mpfr_init(r48991);
        mpfr_init(r48992);
        mpfr_init(r48993);
        mpfr_init(r48994);
        mpfr_init(r48995);
        mpfr_init(r48996);
        mpfr_init(r48997);
        mpfr_init(r48998);
        mpfr_init(r48999);
        mpfr_init(r49000);
        mpfr_init(r49001);
        mpfr_init(r49002);
        mpfr_init(r49003);
        mpfr_init(r49004);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48961, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48963, mpfr_cmp(r48961, r48962) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48965, s, MPFR_RNDN);
        mpfr_neg(r48966, r48965, MPFR_RNDN);
        mpfr_exp(r48967, r48966, MPFR_RNDN);
        mpfr_add(r48968, r48964, r48967, MPFR_RNDN);
        mpfr_div(r48969, r48964, r48968, MPFR_RNDN);
        mpfr_sub(r48970, r48964, r48969, MPFR_RNDN);
        mpfr_neg(r48971, r48961, MPFR_RNDN);
        mpfr_exp(r48972, r48971, MPFR_RNDN);
        mpfr_add(r48973, r48964, r48972, MPFR_RNDN);
        mpfr_div(r48974, r48964, r48973, MPFR_RNDN);
        mpfr_sub(r48975, r48964, r48974, MPFR_RNDN);
        mpfr_div(r48976, r48970, r48975, MPFR_RNDN);
        mpfr_set_d(r48977, c_n, MPFR_RNDN);
        mpfr_pow(r48978, r48976, r48977, MPFR_RNDN);
        mpfr_set_d(r48979, c_p, MPFR_RNDN);
        mpfr_neg(r48980, r48979, MPFR_RNDN);
        mpfr_sub(r48981, r48961, r48965, MPFR_RNDN);
        ;
        mpfr_mul(r48983, r48981, r48982, MPFR_RNDN);
        ;
        mpfr_mul(r48985, r48965, r48984, MPFR_RNDN);
        mpfr_mul(r48986, r48985, r48965, MPFR_RNDN);
        mpfr_add(r48987, r48983, r48986, MPFR_RNDN);
        mpfr_mul(r48988, r48980, r48987, MPFR_RNDN);
        mpfr_exp(r48989, r48988, MPFR_RNDN);
        mpfr_mul(r48990, r48978, r48989, MPFR_RNDN);
        mpfr_log(r48991, r48968, MPFR_RNDN);
        mpfr_add(r48992, r48972, r48964, MPFR_RNDN);
        mpfr_log(r48993, r48992, MPFR_RNDN);
        mpfr_sub(r48994, r48991, r48993, MPFR_RNDN);
        mpfr_mul(r48995, r48994, r48980, MPFR_RNDN);
        mpfr_log(r48996, r48970, MPFR_RNDN);
        mpfr_div(r48997, r48964, r48992, MPFR_RNDN);
        mpfr_sub(r48998, r48964, r48997, MPFR_RNDN);
        mpfr_log(r48999, r48998, MPFR_RNDN);
        mpfr_sub(r49000, r48996, r48999, MPFR_RNDN);
        mpfr_mul(r49001, r49000, r48977, MPFR_RNDN);
        mpfr_add(r49002, r48995, r49001, MPFR_RNDN);
        mpfr_exp(r49003, r49002, MPFR_RNDN);
        if (mpfr_get_si(r48963, MPFR_RNDN)) { mpfr_set(r49004, r48990, MPFR_RNDN); } else { mpfr_set(r49004, r49003, MPFR_RNDN); };
        return mpfr_get_d(r49004, MPFR_RNDN);
}

static mpfr_t r49005, r49006, r49007, r49008, r49009, r49010, r49011, r49012, r49013, r49014, r49015, r49016, r49017, r49018, r49019, r49020, r49021, r49022, r49023, r49024, r49025, r49026, r49027, r49028, r49029, r49030, r49031, r49032, r49033, r49034, r49035, r49036, r49037, r49038, r49039, r49040, r49041, r49042, r49043, r49044, r49045, r49046, r49047, r49048;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r49005);
        mpfr_init_set_str(r49006, "-335.2389549592286", 10, MPFR_RNDN);
        mpfr_init(r49007);
        mpfr_init_set_str(r49008, "1", 10, MPFR_RNDN);
        mpfr_init(r49009);
        mpfr_init(r49010);
        mpfr_init(r49011);
        mpfr_init(r49012);
        mpfr_init(r49013);
        mpfr_init(r49014);
        mpfr_init(r49015);
        mpfr_init(r49016);
        mpfr_init(r49017);
        mpfr_init(r49018);
        mpfr_init(r49019);
        mpfr_init(r49020);
        mpfr_init(r49021);
        mpfr_init(r49022);
        mpfr_init(r49023);
        mpfr_init(r49024);
        mpfr_init(r49025);
        mpfr_init_set_str(r49026, "1/2", 10, MPFR_RNDN);
        mpfr_init(r49027);
        mpfr_init_set_str(r49028, "1/8", 10, MPFR_RNDN);
        mpfr_init(r49029);
        mpfr_init(r49030);
        mpfr_init(r49031);
        mpfr_init(r49032);
        mpfr_init(r49033);
        mpfr_init(r49034);
        mpfr_init(r49035);
        mpfr_init(r49036);
        mpfr_init(r49037);
        mpfr_init(r49038);
        mpfr_init(r49039);
        mpfr_init(r49040);
        mpfr_init(r49041);
        mpfr_init(r49042);
        mpfr_init(r49043);
        mpfr_init(r49044);
        mpfr_init(r49045);
        mpfr_init(r49046);
        mpfr_init(r49047);
        mpfr_init(r49048);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r49005, t, MPFR_RNDN);
        ;
        mpfr_set_si(r49007, mpfr_cmp(r49005, r49006) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r49009, s, MPFR_RNDN);
        mpfr_neg(r49010, r49009, MPFR_RNDN);
        mpfr_exp(r49011, r49010, MPFR_RNDN);
        mpfr_add(r49012, r49008, r49011, MPFR_RNDN);
        mpfr_div(r49013, r49008, r49012, MPFR_RNDN);
        mpfr_sub(r49014, r49008, r49013, MPFR_RNDN);
        mpfr_neg(r49015, r49005, MPFR_RNDN);
        mpfr_exp(r49016, r49015, MPFR_RNDN);
        mpfr_add(r49017, r49008, r49016, MPFR_RNDN);
        mpfr_div(r49018, r49008, r49017, MPFR_RNDN);
        mpfr_sub(r49019, r49008, r49018, MPFR_RNDN);
        mpfr_div(r49020, r49014, r49019, MPFR_RNDN);
        mpfr_set_d(r49021, c_n, MPFR_RNDN);
        mpfr_pow(r49022, r49020, r49021, MPFR_RNDN);
        mpfr_set_d(r49023, c_p, MPFR_RNDN);
        mpfr_neg(r49024, r49023, MPFR_RNDN);
        mpfr_sub(r49025, r49005, r49009, MPFR_RNDN);
        ;
        mpfr_mul(r49027, r49025, r49026, MPFR_RNDN);
        ;
        mpfr_mul(r49029, r49009, r49028, MPFR_RNDN);
        mpfr_mul(r49030, r49029, r49009, MPFR_RNDN);
        mpfr_add(r49031, r49027, r49030, MPFR_RNDN);
        mpfr_mul(r49032, r49024, r49031, MPFR_RNDN);
        mpfr_exp(r49033, r49032, MPFR_RNDN);
        mpfr_mul(r49034, r49022, r49033, MPFR_RNDN);
        mpfr_log(r49035, r49012, MPFR_RNDN);
        mpfr_add(r49036, r49016, r49008, MPFR_RNDN);
        mpfr_log(r49037, r49036, MPFR_RNDN);
        mpfr_sub(r49038, r49035, r49037, MPFR_RNDN);
        mpfr_mul(r49039, r49038, r49024, MPFR_RNDN);
        mpfr_log(r49040, r49014, MPFR_RNDN);
        mpfr_div(r49041, r49008, r49036, MPFR_RNDN);
        mpfr_sub(r49042, r49008, r49041, MPFR_RNDN);
        mpfr_log(r49043, r49042, MPFR_RNDN);
        mpfr_sub(r49044, r49040, r49043, MPFR_RNDN);
        mpfr_mul(r49045, r49044, r49021, MPFR_RNDN);
        mpfr_add(r49046, r49039, r49045, MPFR_RNDN);
        mpfr_exp(r49047, r49046, MPFR_RNDN);
        if (mpfr_get_si(r49007, MPFR_RNDN)) { mpfr_set(r49048, r49034, MPFR_RNDN); } else { mpfr_set(r49048, r49047, MPFR_RNDN); };
        return mpfr_get_d(r49048, MPFR_RNDN);
}

