#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 r47933 = 1;
        float r47934 = s;
        float r47935 = -r47934;
        float r47936 = exp(r47935);
        float r47937 = r47933 + r47936;
        float r47938 = r47933 / r47937;
        float r47939 = c_p;
        float r47940 = pow(r47938, r47939);
        float r47941 = r47933 - r47938;
        float r47942 = c_n;
        float r47943 = pow(r47941, r47942);
        float r47944 = r47940 * r47943;
        float r47945 = t;
        float r47946 = -r47945;
        float r47947 = exp(r47946);
        float r47948 = r47933 + r47947;
        float r47949 = r47933 / r47948;
        float r47950 = pow(r47949, r47939);
        float r47951 = r47933 - r47949;
        float r47952 = pow(r47951, r47942);
        float r47953 = r47950 * r47952;
        float r47954 = r47944 / r47953;
        return r47954;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r47955 = 1;
        double r47956 = s;
        double r47957 = -r47956;
        double r47958 = exp(r47957);
        double r47959 = r47955 + r47958;
        double r47960 = r47955 / r47959;
        double r47961 = c_p;
        double r47962 = pow(r47960, r47961);
        double r47963 = r47955 - r47960;
        double r47964 = c_n;
        double r47965 = pow(r47963, r47964);
        double r47966 = r47962 * r47965;
        double r47967 = t;
        double r47968 = -r47967;
        double r47969 = exp(r47968);
        double r47970 = r47955 + r47969;
        double r47971 = r47955 / r47970;
        double r47972 = pow(r47971, r47961);
        double r47973 = r47955 - r47971;
        double r47974 = pow(r47973, r47964);
        double r47975 = r47972 * r47974;
        double r47976 = r47966 / r47975;
        return r47976;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r47977 = t;
        float r47978 = -734.3625061456353;
        bool r47979 = r47977 <= r47978;
        float r47980 = 1;
        float r47981 = s;
        float r47982 = -r47981;
        float r47983 = exp(r47982);
        float r47984 = r47980 + r47983;
        float r47985 = r47980 / r47984;
        float r47986 = r47980 - r47985;
        float r47987 = -r47977;
        float r47988 = exp(r47987);
        float r47989 = r47980 + r47988;
        float r47990 = r47980 / r47989;
        float r47991 = r47980 - r47990;
        float r47992 = r47986 / r47991;
        float r47993 = c_n;
        float r47994 = pow(r47992, r47993);
        float r47995 = c_p;
        float r47996 = -r47995;
        float r47997 = r47977 - r47981;
        float r47998 = 1/2;
        float r47999 = r47997 * r47998;
        float r48000 = 1/8;
        float r48001 = r47981 * r48000;
        float r48002 = r48001 * r47981;
        float r48003 = r47999 + r48002;
        float r48004 = r47996 * r48003;
        float r48005 = exp(r48004);
        float r48006 = r47994 * r48005;
        float r48007 = log(r47984);
        float r48008 = r47988 + r47980;
        float r48009 = log(r48008);
        float r48010 = r48007 - r48009;
        float r48011 = r48010 * r47996;
        float r48012 = log(r47986);
        float r48013 = r47980 / r48008;
        float r48014 = r47980 - r48013;
        float r48015 = log(r48014);
        float r48016 = r48012 - r48015;
        float r48017 = r48016 * r47993;
        float r48018 = r48011 + r48017;
        float r48019 = exp(r48018);
        float r48020 = r47979 ? r48006 : r48019;
        return r48020;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r48021 = t;
        double r48022 = -734.3625061456353;
        bool r48023 = r48021 <= r48022;
        double r48024 = 1;
        double r48025 = s;
        double r48026 = -r48025;
        double r48027 = exp(r48026);
        double r48028 = r48024 + r48027;
        double r48029 = r48024 / r48028;
        double r48030 = r48024 - r48029;
        double r48031 = -r48021;
        double r48032 = exp(r48031);
        double r48033 = r48024 + r48032;
        double r48034 = r48024 / r48033;
        double r48035 = r48024 - r48034;
        double r48036 = r48030 / r48035;
        double r48037 = c_n;
        double r48038 = pow(r48036, r48037);
        double r48039 = c_p;
        double r48040 = -r48039;
        double r48041 = r48021 - r48025;
        double r48042 = 1/2;
        double r48043 = r48041 * r48042;
        double r48044 = 1/8;
        double r48045 = r48025 * r48044;
        double r48046 = r48045 * r48025;
        double r48047 = r48043 + r48046;
        double r48048 = r48040 * r48047;
        double r48049 = exp(r48048);
        double r48050 = r48038 * r48049;
        double r48051 = log(r48028);
        double r48052 = r48032 + r48024;
        double r48053 = log(r48052);
        double r48054 = r48051 - r48053;
        double r48055 = r48054 * r48040;
        double r48056 = log(r48030);
        double r48057 = r48024 / r48052;
        double r48058 = r48024 - r48057;
        double r48059 = log(r48058);
        double r48060 = r48056 - r48059;
        double r48061 = r48060 * r48037;
        double r48062 = r48055 + r48061;
        double r48063 = exp(r48062);
        double r48064 = r48023 ? r48050 : r48063;
        return r48064;
}

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 r48065, r48066, r48067, r48068, r48069, r48070, r48071, r48072, r48073, r48074, r48075, r48076, r48077, r48078, r48079, r48080, r48081, r48082, r48083, r48084, r48085, r48086;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2192);
        mpfr_init_set_str(r48065, "1", 10, MPFR_RNDN);
        mpfr_init(r48066);
        mpfr_init(r48067);
        mpfr_init(r48068);
        mpfr_init(r48069);
        mpfr_init(r48070);
        mpfr_init(r48071);
        mpfr_init(r48072);
        mpfr_init(r48073);
        mpfr_init(r48074);
        mpfr_init(r48075);
        mpfr_init(r48076);
        mpfr_init(r48077);
        mpfr_init(r48078);
        mpfr_init(r48079);
        mpfr_init(r48080);
        mpfr_init(r48081);
        mpfr_init(r48082);
        mpfr_init(r48083);
        mpfr_init(r48084);
        mpfr_init(r48085);
        mpfr_init(r48086);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r48066, s, MPFR_RNDN);
        mpfr_neg(r48067, r48066, MPFR_RNDN);
        mpfr_exp(r48068, r48067, MPFR_RNDN);
        mpfr_add(r48069, r48065, r48068, MPFR_RNDN);
        mpfr_div(r48070, r48065, r48069, MPFR_RNDN);
        mpfr_set_d(r48071, c_p, MPFR_RNDN);
        mpfr_pow(r48072, r48070, r48071, MPFR_RNDN);
        mpfr_sub(r48073, r48065, r48070, MPFR_RNDN);
        mpfr_set_d(r48074, c_n, MPFR_RNDN);
        mpfr_pow(r48075, r48073, r48074, MPFR_RNDN);
        mpfr_mul(r48076, r48072, r48075, MPFR_RNDN);
        mpfr_set_d(r48077, t, MPFR_RNDN);
        mpfr_neg(r48078, r48077, MPFR_RNDN);
        mpfr_exp(r48079, r48078, MPFR_RNDN);
        mpfr_add(r48080, r48065, r48079, MPFR_RNDN);
        mpfr_div(r48081, r48065, r48080, MPFR_RNDN);
        mpfr_pow(r48082, r48081, r48071, MPFR_RNDN);
        mpfr_sub(r48083, r48065, r48081, MPFR_RNDN);
        mpfr_pow(r48084, r48083, r48074, MPFR_RNDN);
        mpfr_mul(r48085, r48082, r48084, MPFR_RNDN);
        mpfr_div(r48086, r48076, r48085, MPFR_RNDN);
        return mpfr_get_d(r48086, MPFR_RNDN);
}

static mpfr_t r48087, r48088, r48089, r48090, r48091, r48092, r48093, r48094, r48095, r48096, r48097, r48098, r48099, r48100, r48101, r48102, r48103, r48104, r48105, r48106, r48107, r48108, r48109, r48110, r48111, r48112, r48113, r48114, r48115, r48116, r48117, r48118, r48119, r48120, r48121, r48122, r48123, r48124, r48125, r48126, r48127, r48128, r48129, r48130;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r48087);
        mpfr_init_set_str(r48088, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48089);
        mpfr_init_set_str(r48090, "1", 10, MPFR_RNDN);
        mpfr_init(r48091);
        mpfr_init(r48092);
        mpfr_init(r48093);
        mpfr_init(r48094);
        mpfr_init(r48095);
        mpfr_init(r48096);
        mpfr_init(r48097);
        mpfr_init(r48098);
        mpfr_init(r48099);
        mpfr_init(r48100);
        mpfr_init(r48101);
        mpfr_init(r48102);
        mpfr_init(r48103);
        mpfr_init(r48104);
        mpfr_init(r48105);
        mpfr_init(r48106);
        mpfr_init(r48107);
        mpfr_init_set_str(r48108, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48109);
        mpfr_init_set_str(r48110, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48111);
        mpfr_init(r48112);
        mpfr_init(r48113);
        mpfr_init(r48114);
        mpfr_init(r48115);
        mpfr_init(r48116);
        mpfr_init(r48117);
        mpfr_init(r48118);
        mpfr_init(r48119);
        mpfr_init(r48120);
        mpfr_init(r48121);
        mpfr_init(r48122);
        mpfr_init(r48123);
        mpfr_init(r48124);
        mpfr_init(r48125);
        mpfr_init(r48126);
        mpfr_init(r48127);
        mpfr_init(r48128);
        mpfr_init(r48129);
        mpfr_init(r48130);
}

double f_fm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48087, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48089, mpfr_cmp(r48087, r48088) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48091, s, MPFR_RNDN);
        mpfr_neg(r48092, r48091, MPFR_RNDN);
        mpfr_exp(r48093, r48092, MPFR_RNDN);
        mpfr_add(r48094, r48090, r48093, MPFR_RNDN);
        mpfr_div(r48095, r48090, r48094, MPFR_RNDN);
        mpfr_sub(r48096, r48090, r48095, MPFR_RNDN);
        mpfr_neg(r48097, r48087, MPFR_RNDN);
        mpfr_exp(r48098, r48097, MPFR_RNDN);
        mpfr_add(r48099, r48090, r48098, MPFR_RNDN);
        mpfr_div(r48100, r48090, r48099, MPFR_RNDN);
        mpfr_sub(r48101, r48090, r48100, MPFR_RNDN);
        mpfr_div(r48102, r48096, r48101, MPFR_RNDN);
        mpfr_set_d(r48103, c_n, MPFR_RNDN);
        mpfr_pow(r48104, r48102, r48103, MPFR_RNDN);
        mpfr_set_d(r48105, c_p, MPFR_RNDN);
        mpfr_neg(r48106, r48105, MPFR_RNDN);
        mpfr_sub(r48107, r48087, r48091, MPFR_RNDN);
        ;
        mpfr_mul(r48109, r48107, r48108, MPFR_RNDN);
        ;
        mpfr_mul(r48111, r48091, r48110, MPFR_RNDN);
        mpfr_mul(r48112, r48111, r48091, MPFR_RNDN);
        mpfr_add(r48113, r48109, r48112, MPFR_RNDN);
        mpfr_mul(r48114, r48106, r48113, MPFR_RNDN);
        mpfr_exp(r48115, r48114, MPFR_RNDN);
        mpfr_mul(r48116, r48104, r48115, MPFR_RNDN);
        mpfr_log(r48117, r48094, MPFR_RNDN);
        mpfr_add(r48118, r48098, r48090, MPFR_RNDN);
        mpfr_log(r48119, r48118, MPFR_RNDN);
        mpfr_sub(r48120, r48117, r48119, MPFR_RNDN);
        mpfr_mul(r48121, r48120, r48106, MPFR_RNDN);
        mpfr_log(r48122, r48096, MPFR_RNDN);
        mpfr_div(r48123, r48090, r48118, MPFR_RNDN);
        mpfr_sub(r48124, r48090, r48123, MPFR_RNDN);
        mpfr_log(r48125, r48124, MPFR_RNDN);
        mpfr_sub(r48126, r48122, r48125, MPFR_RNDN);
        mpfr_mul(r48127, r48126, r48103, MPFR_RNDN);
        mpfr_add(r48128, r48121, r48127, MPFR_RNDN);
        mpfr_exp(r48129, r48128, MPFR_RNDN);
        if (mpfr_get_si(r48089, MPFR_RNDN)) { mpfr_set(r48130, r48116, MPFR_RNDN); } else { mpfr_set(r48130, r48129, MPFR_RNDN); };
        return mpfr_get_d(r48130, MPFR_RNDN);
}

static mpfr_t r48131, r48132, r48133, r48134, r48135, r48136, r48137, r48138, r48139, r48140, r48141, r48142, r48143, r48144, r48145, r48146, r48147, r48148, r48149, r48150, r48151, r48152, r48153, r48154, r48155, r48156, r48157, r48158, r48159, r48160, r48161, r48162, r48163, r48164, r48165, r48166, r48167, r48168, r48169, r48170, r48171, r48172, r48173, r48174;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r48131);
        mpfr_init_set_str(r48132, "-734.3625061456353", 10, MPFR_RNDN);
        mpfr_init(r48133);
        mpfr_init_set_str(r48134, "1", 10, MPFR_RNDN);
        mpfr_init(r48135);
        mpfr_init(r48136);
        mpfr_init(r48137);
        mpfr_init(r48138);
        mpfr_init(r48139);
        mpfr_init(r48140);
        mpfr_init(r48141);
        mpfr_init(r48142);
        mpfr_init(r48143);
        mpfr_init(r48144);
        mpfr_init(r48145);
        mpfr_init(r48146);
        mpfr_init(r48147);
        mpfr_init(r48148);
        mpfr_init(r48149);
        mpfr_init(r48150);
        mpfr_init(r48151);
        mpfr_init_set_str(r48152, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48153);
        mpfr_init_set_str(r48154, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48155);
        mpfr_init(r48156);
        mpfr_init(r48157);
        mpfr_init(r48158);
        mpfr_init(r48159);
        mpfr_init(r48160);
        mpfr_init(r48161);
        mpfr_init(r48162);
        mpfr_init(r48163);
        mpfr_init(r48164);
        mpfr_init(r48165);
        mpfr_init(r48166);
        mpfr_init(r48167);
        mpfr_init(r48168);
        mpfr_init(r48169);
        mpfr_init(r48170);
        mpfr_init(r48171);
        mpfr_init(r48172);
        mpfr_init(r48173);
        mpfr_init(r48174);
}

double f_dm(double c_p, double c_n, double t, double s) {
        mpfr_set_d(r48131, t, MPFR_RNDN);
        ;
        mpfr_set_si(r48133, mpfr_cmp(r48131, r48132) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r48135, s, MPFR_RNDN);
        mpfr_neg(r48136, r48135, MPFR_RNDN);
        mpfr_exp(r48137, r48136, MPFR_RNDN);
        mpfr_add(r48138, r48134, r48137, MPFR_RNDN);
        mpfr_div(r48139, r48134, r48138, MPFR_RNDN);
        mpfr_sub(r48140, r48134, r48139, MPFR_RNDN);
        mpfr_neg(r48141, r48131, MPFR_RNDN);
        mpfr_exp(r48142, r48141, MPFR_RNDN);
        mpfr_add(r48143, r48134, r48142, MPFR_RNDN);
        mpfr_div(r48144, r48134, r48143, MPFR_RNDN);
        mpfr_sub(r48145, r48134, r48144, MPFR_RNDN);
        mpfr_div(r48146, r48140, r48145, MPFR_RNDN);
        mpfr_set_d(r48147, c_n, MPFR_RNDN);
        mpfr_pow(r48148, r48146, r48147, MPFR_RNDN);
        mpfr_set_d(r48149, c_p, MPFR_RNDN);
        mpfr_neg(r48150, r48149, MPFR_RNDN);
        mpfr_sub(r48151, r48131, r48135, MPFR_RNDN);
        ;
        mpfr_mul(r48153, r48151, r48152, MPFR_RNDN);
        ;
        mpfr_mul(r48155, r48135, r48154, MPFR_RNDN);
        mpfr_mul(r48156, r48155, r48135, MPFR_RNDN);
        mpfr_add(r48157, r48153, r48156, MPFR_RNDN);
        mpfr_mul(r48158, r48150, r48157, MPFR_RNDN);
        mpfr_exp(r48159, r48158, MPFR_RNDN);
        mpfr_mul(r48160, r48148, r48159, MPFR_RNDN);
        mpfr_log(r48161, r48138, MPFR_RNDN);
        mpfr_add(r48162, r48142, r48134, MPFR_RNDN);
        mpfr_log(r48163, r48162, MPFR_RNDN);
        mpfr_sub(r48164, r48161, r48163, MPFR_RNDN);
        mpfr_mul(r48165, r48164, r48150, MPFR_RNDN);
        mpfr_log(r48166, r48140, MPFR_RNDN);
        mpfr_div(r48167, r48134, r48162, MPFR_RNDN);
        mpfr_sub(r48168, r48134, r48167, MPFR_RNDN);
        mpfr_log(r48169, r48168, MPFR_RNDN);
        mpfr_sub(r48170, r48166, r48169, MPFR_RNDN);
        mpfr_mul(r48171, r48170, r48147, MPFR_RNDN);
        mpfr_add(r48172, r48165, r48171, MPFR_RNDN);
        mpfr_exp(r48173, r48172, MPFR_RNDN);
        if (mpfr_get_si(r48133, MPFR_RNDN)) { mpfr_set(r48174, r48160, MPFR_RNDN); } else { mpfr_set(r48174, r48173, MPFR_RNDN); };
        return mpfr_get_d(r48174, MPFR_RNDN);
}

