#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 r19855 = 1.0f;
        float r19856 = s;
        float r19857 = -r19856;
        float r19858 = exp(r19857);
        float r19859 = r19855 + r19858;
        float r19860 = 1.0/r19859;
        float r19861 = c_p;
        float r19862 = pow(r19860, r19861);
        float r19863 = r19855 - r19860;
        float r19864 = c_n;
        float r19865 = pow(r19863, r19864);
        float r19866 = r19862 * r19865;
        float r19867 = t;
        float r19868 = -r19867;
        float r19869 = exp(r19868);
        float r19870 = r19855 + r19869;
        float r19871 = 1.0/r19870;
        float r19872 = pow(r19871, r19861);
        float r19873 = r19855 - r19871;
        float r19874 = pow(r19873, r19864);
        float r19875 = r19872 * r19874;
        float r19876 = r19866 / r19875;
        return r19876;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r19877 = 1.0;
        double r19878 = s;
        double r19879 = -r19878;
        double r19880 = exp(r19879);
        double r19881 = r19877 + r19880;
        double r19882 = 1.0/r19881;
        double r19883 = c_p;
        double r19884 = pow(r19882, r19883);
        double r19885 = r19877 - r19882;
        double r19886 = c_n;
        double r19887 = pow(r19885, r19886);
        double r19888 = r19884 * r19887;
        double r19889 = t;
        double r19890 = -r19889;
        double r19891 = exp(r19890);
        double r19892 = r19877 + r19891;
        double r19893 = 1.0/r19892;
        double r19894 = pow(r19893, r19883);
        double r19895 = r19877 - r19893;
        double r19896 = pow(r19895, r19886);
        double r19897 = r19894 * r19896;
        double r19898 = r19888 / r19897;
        return r19898;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r19899 = s;
        float r19900 = -2.7743962440478614e-65f;
        bool r19901 = r19899 <= r19900;
        float r19902 = 1.0f;
        float r19903 = -r19899;
        float r19904 = exp(r19903);
        float r19905 = r19902 + r19904;
        float r19906 = 1.0/r19905;
        float r19907 = r19902 - r19906;
        float r19908 = c_n;
        float r19909 = pow(r19907, r19908);
        float r19910 = t;
        float r19911 = -r19910;
        float r19912 = exp(r19911);
        float r19913 = r19902 + r19912;
        float r19914 = 1.0/r19913;
        float r19915 = r19902 - r19914;
        float r19916 = pow(r19915, r19908);
        float r19917 = r19909 / r19916;
        float r19918 = c_p;
        float r19919 = pow(r19906, r19918);
        float r19920 = 0.5f;
        float r19921 = log(r19920);
        float r19922 = r19910 * r19920;
        float r19923 = r19921 + r19922;
        float r19924 = r19923 * r19918;
        float r19925 = r19924 + r19902;
        float r19926 = r19919 / r19925;
        float r19927 = r19917 * r19926;
        float r19928 = 5.274109478826914e-10f;
        bool r19929 = r19899 <= r19928;
        float r19930 = r19899 * r19920;
        float r19931 = r19918 - r19908;
        float r19932 = r19930 * r19931;
        float r19933 = r19902 + r19932;
        float r19934 = r19929 ? r19933 : r19927;
        float r19935 = r19901 ? r19927 : r19934;
        return r19935;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r19936 = s;
        double r19937 = -2.7743962440478614e-65;
        bool r19938 = r19936 <= r19937;
        double r19939 = 1.0;
        double r19940 = -r19936;
        double r19941 = exp(r19940);
        double r19942 = r19939 + r19941;
        double r19943 = 1.0/r19942;
        double r19944 = r19939 - r19943;
        double r19945 = c_n;
        double r19946 = pow(r19944, r19945);
        double r19947 = t;
        double r19948 = -r19947;
        double r19949 = exp(r19948);
        double r19950 = r19939 + r19949;
        double r19951 = 1.0/r19950;
        double r19952 = r19939 - r19951;
        double r19953 = pow(r19952, r19945);
        double r19954 = r19946 / r19953;
        double r19955 = c_p;
        double r19956 = pow(r19943, r19955);
        double r19957 = 0.5;
        double r19958 = log(r19957);
        double r19959 = r19947 * r19957;
        double r19960 = r19958 + r19959;
        double r19961 = r19960 * r19955;
        double r19962 = r19961 + r19939;
        double r19963 = r19956 / r19962;
        double r19964 = r19954 * r19963;
        double r19965 = 5.274109478826914e-10;
        bool r19966 = r19936 <= r19965;
        double r19967 = r19936 * r19957;
        double r19968 = r19955 - r19945;
        double r19969 = r19967 * r19968;
        double r19970 = r19939 + r19969;
        double r19971 = r19966 ? r19970 : r19964;
        double r19972 = r19938 ? r19964 : r19971;
        return r19972;
}

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 r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990, r19991, r19992, r19993, r19994;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r19973, "1", 10, MPFR_RNDN);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init(r19992);
        mpfr_init(r19993);
        mpfr_init(r19994);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r19974, s, MPFR_RNDN);
        mpfr_neg(r19975, r19974, MPFR_RNDN);
        mpfr_exp(r19976, r19975, MPFR_RNDN);
        mpfr_add(r19977, r19973, r19976, MPFR_RNDN);
        mpfr_ui_div(r19978, 1, r19977, MPFR_RNDN);
        mpfr_set_d(r19979, c_p, MPFR_RNDN);
        mpfr_pow(r19980, r19978, r19979, MPFR_RNDN);
        mpfr_sub(r19981, r19973, r19978, MPFR_RNDN);
        mpfr_set_d(r19982, c_n, MPFR_RNDN);
        mpfr_pow(r19983, r19981, r19982, MPFR_RNDN);
        mpfr_mul(r19984, r19980, r19983, MPFR_RNDN);
        mpfr_set_d(r19985, t, MPFR_RNDN);
        mpfr_neg(r19986, r19985, MPFR_RNDN);
        mpfr_exp(r19987, r19986, MPFR_RNDN);
        mpfr_add(r19988, r19973, r19987, MPFR_RNDN);
        mpfr_ui_div(r19989, 1, r19988, MPFR_RNDN);
        mpfr_pow(r19990, r19989, r19979, MPFR_RNDN);
        mpfr_sub(r19991, r19973, r19989, MPFR_RNDN);
        mpfr_pow(r19992, r19991, r19982, MPFR_RNDN);
        mpfr_mul(r19993, r19990, r19992, MPFR_RNDN);
        mpfr_div(r19994, r19984, r19993, MPFR_RNDN);
        return mpfr_get_d(r19994, MPFR_RNDN);
}

static mpfr_t r19995, r19996, r19997, r19998, r19999, r20000, r20001, r20002, r20003, r20004, r20005, r20006, r20007, r20008, r20009, r20010, r20011, r20012, r20013, r20014, r20015, r20016, r20017, r20018, r20019, r20020, r20021, r20022, r20023, r20024, r20025, r20026, r20027, r20028, r20029, r20030, r20031;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r19995);
        mpfr_init_set_str(r19996, "-2.7743962440478614e-65", 10, MPFR_RNDN);
        mpfr_init(r19997);
        mpfr_init_set_str(r19998, "1", 10, MPFR_RNDN);
        mpfr_init(r19999);
        mpfr_init(r20000);
        mpfr_init(r20001);
        mpfr_init(r20002);
        mpfr_init(r20003);
        mpfr_init(r20004);
        mpfr_init(r20005);
        mpfr_init(r20006);
        mpfr_init(r20007);
        mpfr_init(r20008);
        mpfr_init(r20009);
        mpfr_init(r20010);
        mpfr_init(r20011);
        mpfr_init(r20012);
        mpfr_init(r20013);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init_set_str(r20016, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20017);
        mpfr_init(r20018);
        mpfr_init(r20019);
        mpfr_init(r20020);
        mpfr_init(r20021);
        mpfr_init(r20022);
        mpfr_init(r20023);
        mpfr_init_set_str(r20024, "5.274109478826914e-10", 10, MPFR_RNDN);
        mpfr_init(r20025);
        mpfr_init(r20026);
        mpfr_init(r20027);
        mpfr_init(r20028);
        mpfr_init(r20029);
        mpfr_init(r20030);
        mpfr_init(r20031);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r19995, s, MPFR_RNDN);
        ;
        mpfr_set_si(r19997, mpfr_cmp(r19995, r19996) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r19999, r19995, MPFR_RNDN);
        mpfr_exp(r20000, r19999, MPFR_RNDN);
        mpfr_add(r20001, r19998, r20000, MPFR_RNDN);
        mpfr_ui_div(r20002, 1, r20001, MPFR_RNDN);
        mpfr_sub(r20003, r19998, r20002, MPFR_RNDN);
        mpfr_set_d(r20004, c_n, MPFR_RNDN);
        mpfr_pow(r20005, r20003, r20004, MPFR_RNDN);
        mpfr_set_d(r20006, t, MPFR_RNDN);
        mpfr_neg(r20007, r20006, MPFR_RNDN);
        mpfr_exp(r20008, r20007, MPFR_RNDN);
        mpfr_add(r20009, r19998, r20008, MPFR_RNDN);
        mpfr_ui_div(r20010, 1, r20009, MPFR_RNDN);
        mpfr_sub(r20011, r19998, r20010, MPFR_RNDN);
        mpfr_pow(r20012, r20011, r20004, MPFR_RNDN);
        mpfr_div(r20013, r20005, r20012, MPFR_RNDN);
        mpfr_set_d(r20014, c_p, MPFR_RNDN);
        mpfr_pow(r20015, r20002, r20014, MPFR_RNDN);
        ;
        mpfr_log(r20017, r20016, MPFR_RNDN);
        mpfr_mul(r20018, r20006, r20016, MPFR_RNDN);
        mpfr_add(r20019, r20017, r20018, MPFR_RNDN);
        mpfr_mul(r20020, r20019, r20014, MPFR_RNDN);
        mpfr_add(r20021, r20020, r19998, MPFR_RNDN);
        mpfr_div(r20022, r20015, r20021, MPFR_RNDN);
        mpfr_mul(r20023, r20013, r20022, MPFR_RNDN);
        ;
        mpfr_set_si(r20025, mpfr_cmp(r19995, r20024) <= 0, MPFR_RNDN);
        mpfr_mul(r20026, r19995, r20016, MPFR_RNDN);
        mpfr_sub(r20027, r20014, r20004, MPFR_RNDN);
        mpfr_mul(r20028, r20026, r20027, MPFR_RNDN);
        mpfr_add(r20029, r19998, r20028, MPFR_RNDN);
        if (mpfr_get_si(r20025, MPFR_RNDN)) { mpfr_set(r20030, r20029, MPFR_RNDN); } else { mpfr_set(r20030, r20023, MPFR_RNDN); };
        if (mpfr_get_si(r19997, MPFR_RNDN)) { mpfr_set(r20031, r20023, MPFR_RNDN); } else { mpfr_set(r20031, r20030, MPFR_RNDN); };
        return mpfr_get_d(r20031, MPFR_RNDN);
}

static mpfr_t r20032, r20033, r20034, r20035, r20036, r20037, r20038, r20039, r20040, r20041, r20042, r20043, r20044, r20045, r20046, r20047, r20048, r20049, r20050, r20051, r20052, r20053, r20054, r20055, r20056, r20057, r20058, r20059, r20060, r20061, r20062, r20063, r20064, r20065, r20066, r20067, r20068;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r20032);
        mpfr_init_set_str(r20033, "-2.7743962440478614e-65", 10, MPFR_RNDN);
        mpfr_init(r20034);
        mpfr_init_set_str(r20035, "1", 10, MPFR_RNDN);
        mpfr_init(r20036);
        mpfr_init(r20037);
        mpfr_init(r20038);
        mpfr_init(r20039);
        mpfr_init(r20040);
        mpfr_init(r20041);
        mpfr_init(r20042);
        mpfr_init(r20043);
        mpfr_init(r20044);
        mpfr_init(r20045);
        mpfr_init(r20046);
        mpfr_init(r20047);
        mpfr_init(r20048);
        mpfr_init(r20049);
        mpfr_init(r20050);
        mpfr_init(r20051);
        mpfr_init(r20052);
        mpfr_init_set_str(r20053, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20054);
        mpfr_init(r20055);
        mpfr_init(r20056);
        mpfr_init(r20057);
        mpfr_init(r20058);
        mpfr_init(r20059);
        mpfr_init(r20060);
        mpfr_init_set_str(r20061, "5.274109478826914e-10", 10, MPFR_RNDN);
        mpfr_init(r20062);
        mpfr_init(r20063);
        mpfr_init(r20064);
        mpfr_init(r20065);
        mpfr_init(r20066);
        mpfr_init(r20067);
        mpfr_init(r20068);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r20032, s, MPFR_RNDN);
        ;
        mpfr_set_si(r20034, mpfr_cmp(r20032, r20033) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r20036, r20032, MPFR_RNDN);
        mpfr_exp(r20037, r20036, MPFR_RNDN);
        mpfr_add(r20038, r20035, r20037, MPFR_RNDN);
        mpfr_ui_div(r20039, 1, r20038, MPFR_RNDN);
        mpfr_sub(r20040, r20035, r20039, MPFR_RNDN);
        mpfr_set_d(r20041, c_n, MPFR_RNDN);
        mpfr_pow(r20042, r20040, r20041, MPFR_RNDN);
        mpfr_set_d(r20043, t, MPFR_RNDN);
        mpfr_neg(r20044, r20043, MPFR_RNDN);
        mpfr_exp(r20045, r20044, MPFR_RNDN);
        mpfr_add(r20046, r20035, r20045, MPFR_RNDN);
        mpfr_ui_div(r20047, 1, r20046, MPFR_RNDN);
        mpfr_sub(r20048, r20035, r20047, MPFR_RNDN);
        mpfr_pow(r20049, r20048, r20041, MPFR_RNDN);
        mpfr_div(r20050, r20042, r20049, MPFR_RNDN);
        mpfr_set_d(r20051, c_p, MPFR_RNDN);
        mpfr_pow(r20052, r20039, r20051, MPFR_RNDN);
        ;
        mpfr_log(r20054, r20053, MPFR_RNDN);
        mpfr_mul(r20055, r20043, r20053, MPFR_RNDN);
        mpfr_add(r20056, r20054, r20055, MPFR_RNDN);
        mpfr_mul(r20057, r20056, r20051, MPFR_RNDN);
        mpfr_add(r20058, r20057, r20035, MPFR_RNDN);
        mpfr_div(r20059, r20052, r20058, MPFR_RNDN);
        mpfr_mul(r20060, r20050, r20059, MPFR_RNDN);
        ;
        mpfr_set_si(r20062, mpfr_cmp(r20032, r20061) <= 0, MPFR_RNDN);
        mpfr_mul(r20063, r20032, r20053, MPFR_RNDN);
        mpfr_sub(r20064, r20051, r20041, MPFR_RNDN);
        mpfr_mul(r20065, r20063, r20064, MPFR_RNDN);
        mpfr_add(r20066, r20035, r20065, MPFR_RNDN);
        if (mpfr_get_si(r20062, MPFR_RNDN)) { mpfr_set(r20067, r20066, MPFR_RNDN); } else { mpfr_set(r20067, r20060, MPFR_RNDN); };
        if (mpfr_get_si(r20034, MPFR_RNDN)) { mpfr_set(r20068, r20060, MPFR_RNDN); } else { mpfr_set(r20068, r20067, MPFR_RNDN); };
        return mpfr_get_d(r20068, MPFR_RNDN);
}

