#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 r27913 = 1;
        float r27914 = s;
        float r27915 = -r27914;
        float r27916 = exp(r27915);
        float r27917 = r27913 + r27916;
        float r27918 = r27913 / r27917;
        float r27919 = c_p;
        float r27920 = pow(r27918, r27919);
        float r27921 = r27913 - r27918;
        float r27922 = c_n;
        float r27923 = pow(r27921, r27922);
        float r27924 = r27920 * r27923;
        float r27925 = t;
        float r27926 = -r27925;
        float r27927 = exp(r27926);
        float r27928 = r27913 + r27927;
        float r27929 = r27913 / r27928;
        float r27930 = pow(r27929, r27919);
        float r27931 = r27913 - r27929;
        float r27932 = pow(r27931, r27922);
        float r27933 = r27930 * r27932;
        float r27934 = r27924 / r27933;
        return r27934;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r27935 = 1;
        double r27936 = s;
        double r27937 = -r27936;
        double r27938 = exp(r27937);
        double r27939 = r27935 + r27938;
        double r27940 = r27935 / r27939;
        double r27941 = c_p;
        double r27942 = pow(r27940, r27941);
        double r27943 = r27935 - r27940;
        double r27944 = c_n;
        double r27945 = pow(r27943, r27944);
        double r27946 = r27942 * r27945;
        double r27947 = t;
        double r27948 = -r27947;
        double r27949 = exp(r27948);
        double r27950 = r27935 + r27949;
        double r27951 = r27935 / r27950;
        double r27952 = pow(r27951, r27941);
        double r27953 = r27935 - r27951;
        double r27954 = pow(r27953, r27944);
        double r27955 = r27952 * r27954;
        double r27956 = r27946 / r27955;
        return r27956;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r27957 = 1;
        float r27958 = -r27957;
        float r27959 = s;
        float r27960 = -r27959;
        float r27961 = exp(r27960);
        float r27962 = r27961 + r27957;
        float r27963 = r27958 / r27962;
        float r27964 = log1p(r27963);
        float r27965 = t;
        float r27966 = -r27965;
        float r27967 = exp(r27966);
        float r27968 = r27957 + r27967;
        float r27969 = r27958 / r27968;
        float r27970 = log1p(r27969);
        float r27971 = r27964 - r27970;
        float r27972 = exp(r27971);
        float r27973 = cbrt(r27972);
        float r27974 = log(r27973);
        float r27975 = r27974 + r27974;
        float r27976 = r27975 + r27974;
        float r27977 = c_n;
        float r27978 = c_p;
        float r27979 = log1p(r27967);
        float r27980 = r27978 * r27979;
        float r27981 = log1p(r27961);
        float r27982 = r27981 * r27978;
        float r27983 = r27980 - r27982;
        float r27984 = fma(r27976, r27977, r27983);
        float r27985 = exp(r27984);
        return r27985;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r27986 = 1;
        double r27987 = -r27986;
        double r27988 = s;
        double r27989 = -r27988;
        double r27990 = exp(r27989);
        double r27991 = r27990 + r27986;
        double r27992 = r27987 / r27991;
        double r27993 = log1p(r27992);
        double r27994 = t;
        double r27995 = -r27994;
        double r27996 = exp(r27995);
        double r27997 = r27986 + r27996;
        double r27998 = r27987 / r27997;
        double r27999 = log1p(r27998);
        double r28000 = r27993 - r27999;
        double r28001 = exp(r28000);
        double r28002 = cbrt(r28001);
        double r28003 = log(r28002);
        double r28004 = r28003 + r28003;
        double r28005 = r28004 + r28003;
        double r28006 = c_n;
        double r28007 = c_p;
        double r28008 = log1p(r27996);
        double r28009 = r28007 * r28008;
        double r28010 = log1p(r27990);
        double r28011 = r28010 * r28007;
        double r28012 = r28009 - r28011;
        double r28013 = fma(r28005, r28006, r28012);
        double r28014 = exp(r28013);
        return r28014;
}

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 r28015, r28016, r28017, r28018, r28019, r28020, r28021, r28022, r28023, r28024, r28025, r28026, r28027, r28028, r28029, r28030, r28031, r28032, r28033, r28034, r28035, r28036;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r28015, "1", 10, MPFR_RNDN);
        mpfr_init(r28016);
        mpfr_init(r28017);
        mpfr_init(r28018);
        mpfr_init(r28019);
        mpfr_init(r28020);
        mpfr_init(r28021);
        mpfr_init(r28022);
        mpfr_init(r28023);
        mpfr_init(r28024);
        mpfr_init(r28025);
        mpfr_init(r28026);
        mpfr_init(r28027);
        mpfr_init(r28028);
        mpfr_init(r28029);
        mpfr_init(r28030);
        mpfr_init(r28031);
        mpfr_init(r28032);
        mpfr_init(r28033);
        mpfr_init(r28034);
        mpfr_init(r28035);
        mpfr_init(r28036);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r28016, s, MPFR_RNDN);
        mpfr_neg(r28017, r28016, MPFR_RNDN);
        mpfr_exp(r28018, r28017, MPFR_RNDN);
        mpfr_add(r28019, r28015, r28018, MPFR_RNDN);
        mpfr_div(r28020, r28015, r28019, MPFR_RNDN);
        mpfr_set_d(r28021, c_p, MPFR_RNDN);
        mpfr_pow(r28022, r28020, r28021, MPFR_RNDN);
        mpfr_sub(r28023, r28015, r28020, MPFR_RNDN);
        mpfr_set_d(r28024, c_n, MPFR_RNDN);
        mpfr_pow(r28025, r28023, r28024, MPFR_RNDN);
        mpfr_mul(r28026, r28022, r28025, MPFR_RNDN);
        mpfr_set_d(r28027, t, MPFR_RNDN);
        mpfr_neg(r28028, r28027, MPFR_RNDN);
        mpfr_exp(r28029, r28028, MPFR_RNDN);
        mpfr_add(r28030, r28015, r28029, MPFR_RNDN);
        mpfr_div(r28031, r28015, r28030, MPFR_RNDN);
        mpfr_pow(r28032, r28031, r28021, MPFR_RNDN);
        mpfr_sub(r28033, r28015, r28031, MPFR_RNDN);
        mpfr_pow(r28034, r28033, r28024, MPFR_RNDN);
        mpfr_mul(r28035, r28032, r28034, MPFR_RNDN);
        mpfr_div(r28036, r28026, r28035, MPFR_RNDN);
        return mpfr_get_d(r28036, MPFR_RNDN);
}

static mpfr_t r28037, r28038, r28039, r28040, r28041, r28042, r28043, r28044, r28045, r28046, r28047, r28048, r28049, r28050, r28051, r28052, r28053, r28054, r28055, r28056, r28057, r28058, r28059, r28060, r28061, r28062, r28063, r28064, r28065;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r28037, "1", 10, MPFR_RNDN);
        mpfr_init(r28038);
        mpfr_init(r28039);
        mpfr_init(r28040);
        mpfr_init(r28041);
        mpfr_init(r28042);
        mpfr_init(r28043);
        mpfr_init(r28044);
        mpfr_init(r28045);
        mpfr_init(r28046);
        mpfr_init(r28047);
        mpfr_init(r28048);
        mpfr_init(r28049);
        mpfr_init(r28050);
        mpfr_init(r28051);
        mpfr_init(r28052);
        mpfr_init(r28053);
        mpfr_init(r28054);
        mpfr_init(r28055);
        mpfr_init(r28056);
        mpfr_init(r28057);
        mpfr_init(r28058);
        mpfr_init(r28059);
        mpfr_init(r28060);
        mpfr_init(r28061);
        mpfr_init(r28062);
        mpfr_init(r28063);
        mpfr_init(r28064);
        mpfr_init(r28065);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_neg(r28038, r28037, MPFR_RNDN);
        mpfr_set_d(r28039, s, MPFR_RNDN);
        mpfr_neg(r28040, r28039, MPFR_RNDN);
        mpfr_exp(r28041, r28040, MPFR_RNDN);
        mpfr_add(r28042, r28041, r28037, MPFR_RNDN);
        mpfr_div(r28043, r28038, r28042, MPFR_RNDN);
        mpfr_log1p(r28044, r28043, MPFR_RNDN);
        mpfr_set_d(r28045, t, MPFR_RNDN);
        mpfr_neg(r28046, r28045, MPFR_RNDN);
        mpfr_exp(r28047, r28046, MPFR_RNDN);
        mpfr_add(r28048, r28037, r28047, MPFR_RNDN);
        mpfr_div(r28049, r28038, r28048, MPFR_RNDN);
        mpfr_log1p(r28050, r28049, MPFR_RNDN);
        mpfr_sub(r28051, r28044, r28050, MPFR_RNDN);
        mpfr_exp(r28052, r28051, MPFR_RNDN);
        mpfr_cbrt(r28053, r28052, MPFR_RNDN);
        mpfr_log(r28054, r28053, MPFR_RNDN);
        mpfr_add(r28055, r28054, r28054, MPFR_RNDN);
        mpfr_add(r28056, r28055, r28054, MPFR_RNDN);
        mpfr_set_d(r28057, c_n, MPFR_RNDN);
        mpfr_set_d(r28058, c_p, MPFR_RNDN);
        mpfr_log1p(r28059, r28047, MPFR_RNDN);
        mpfr_mul(r28060, r28058, r28059, MPFR_RNDN);
        mpfr_log1p(r28061, r28041, MPFR_RNDN);
        mpfr_mul(r28062, r28061, r28058, MPFR_RNDN);
        mpfr_sub(r28063, r28060, r28062, MPFR_RNDN);
        mpfr_fma(r28064, r28056, r28057, r28063, MPFR_RNDN);
        mpfr_exp(r28065, r28064, MPFR_RNDN);
        return mpfr_get_d(r28065, MPFR_RNDN);
}

static mpfr_t r28066, r28067, r28068, r28069, r28070, r28071, r28072, r28073, r28074, r28075, r28076, r28077, r28078, r28079, r28080, r28081, r28082, r28083, r28084, r28085, r28086, r28087, r28088, r28089, r28090, r28091, r28092, r28093, r28094;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1616);
        mpfr_init_set_str(r28066, "1", 10, MPFR_RNDN);
        mpfr_init(r28067);
        mpfr_init(r28068);
        mpfr_init(r28069);
        mpfr_init(r28070);
        mpfr_init(r28071);
        mpfr_init(r28072);
        mpfr_init(r28073);
        mpfr_init(r28074);
        mpfr_init(r28075);
        mpfr_init(r28076);
        mpfr_init(r28077);
        mpfr_init(r28078);
        mpfr_init(r28079);
        mpfr_init(r28080);
        mpfr_init(r28081);
        mpfr_init(r28082);
        mpfr_init(r28083);
        mpfr_init(r28084);
        mpfr_init(r28085);
        mpfr_init(r28086);
        mpfr_init(r28087);
        mpfr_init(r28088);
        mpfr_init(r28089);
        mpfr_init(r28090);
        mpfr_init(r28091);
        mpfr_init(r28092);
        mpfr_init(r28093);
        mpfr_init(r28094);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_neg(r28067, r28066, MPFR_RNDN);
        mpfr_set_d(r28068, s, MPFR_RNDN);
        mpfr_neg(r28069, r28068, MPFR_RNDN);
        mpfr_exp(r28070, r28069, MPFR_RNDN);
        mpfr_add(r28071, r28070, r28066, MPFR_RNDN);
        mpfr_div(r28072, r28067, r28071, MPFR_RNDN);
        mpfr_log1p(r28073, r28072, MPFR_RNDN);
        mpfr_set_d(r28074, t, MPFR_RNDN);
        mpfr_neg(r28075, r28074, MPFR_RNDN);
        mpfr_exp(r28076, r28075, MPFR_RNDN);
        mpfr_add(r28077, r28066, r28076, MPFR_RNDN);
        mpfr_div(r28078, r28067, r28077, MPFR_RNDN);
        mpfr_log1p(r28079, r28078, MPFR_RNDN);
        mpfr_sub(r28080, r28073, r28079, MPFR_RNDN);
        mpfr_exp(r28081, r28080, MPFR_RNDN);
        mpfr_cbrt(r28082, r28081, MPFR_RNDN);
        mpfr_log(r28083, r28082, MPFR_RNDN);
        mpfr_add(r28084, r28083, r28083, MPFR_RNDN);
        mpfr_add(r28085, r28084, r28083, MPFR_RNDN);
        mpfr_set_d(r28086, c_n, MPFR_RNDN);
        mpfr_set_d(r28087, c_p, MPFR_RNDN);
        mpfr_log1p(r28088, r28076, MPFR_RNDN);
        mpfr_mul(r28089, r28087, r28088, MPFR_RNDN);
        mpfr_log1p(r28090, r28070, MPFR_RNDN);
        mpfr_mul(r28091, r28090, r28087, MPFR_RNDN);
        mpfr_sub(r28092, r28089, r28091, MPFR_RNDN);
        mpfr_fma(r28093, r28085, r28086, r28092, MPFR_RNDN);
        mpfr_exp(r28094, r28093, MPFR_RNDN);
        return mpfr_get_d(r28094, MPFR_RNDN);
}

