#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Henrywood and Agarwal, Equation (13)";

double f_if(float c0, float w, float h, float D, float d, float M) {
        float r9888 = c0;
        float r9889 = 2.0f;
        float r9890 = w;
        float r9891 = r9889 * r9890;
        float r9892 = r9888 / r9891;
        float r9893 = d;
        float r9894 = r9893 * r9893;
        float r9895 = r9888 * r9894;
        float r9896 = h;
        float r9897 = r9890 * r9896;
        float r9898 = D;
        float r9899 = r9898 * r9898;
        float r9900 = r9897 * r9899;
        float r9901 = r9895 / r9900;
        float r9902 = r9901 * r9901;
        float r9903 = M;
        float r9904 = r9903 * r9903;
        float r9905 = r9902 - r9904;
        float r9906 = sqrt(r9905);
        float r9907 = r9901 + r9906;
        float r9908 = r9892 * r9907;
        return r9908;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r9909 = c0;
        double r9910 = 2.0;
        double r9911 = w;
        double r9912 = r9910 * r9911;
        double r9913 = r9909 / r9912;
        double r9914 = d;
        double r9915 = r9914 * r9914;
        double r9916 = r9909 * r9915;
        double r9917 = h;
        double r9918 = r9911 * r9917;
        double r9919 = D;
        double r9920 = r9919 * r9919;
        double r9921 = r9918 * r9920;
        double r9922 = r9916 / r9921;
        double r9923 = r9922 * r9922;
        double r9924 = M;
        double r9925 = r9924 * r9924;
        double r9926 = r9923 - r9925;
        double r9927 = sqrt(r9926);
        double r9928 = r9922 + r9927;
        double r9929 = r9913 * r9928;
        return r9929;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r9930 = c0;
        float r9931 = 2.0f;
        float r9932 = w;
        float r9933 = r9931 * r9932;
        float r9934 = r9930 / r9933;
        float r9935 = h;
        float r9936 = r9932 * r9935;
        float r9937 = r9930 / r9936;
        float r9938 = d;
        float r9939 = D;
        float r9940 = r9938 / r9939;
        float r9941 = r9940 * r9940;
        float r9942 = r9937 * r9941;
        float r9943 = M;
        float r9944 = -r9943;
        float r9945 = r9944 * r9943;
        float r9946 = fma(r9942, r9942, r9945);
        float r9947 = sqrt(r9946);
        float r9948 = log(r9937);
        float r9949 = log(r9941);
        float r9950 = r9948 + r9949;
        float r9951 = exp(r9950);
        float r9952 = r9951 * r9934;
        float r9953 = fma(r9934, r9947, r9952);
        float r9954 = 1.6989985471632755e+298f;
        bool r9955 = r9953 <= r9954;
        float r9956 = cbrt(r9946);
        float r9957 = 0.5f;
        float r9958 = pow(r9956, r9957);
        float r9959 = r9930 / r9932;
        float r9960 = r9959 / r9935;
        float r9961 = r9941 * r9960;
        float r9962 = fma(r9961, r9961, r9945);
        float r9963 = cbrt(r9962);
        float r9964 = fabs(r9963);
        float r9965 = r9958 * r9964;
        float r9966 = r9937 * r9940;
        float r9967 = r9940 * r9966;
        float r9968 = r9934 * r9967;
        float r9969 = fma(r9934, r9965, r9968);
        float r9970 = 0.0f;
        float r9971 = r9955 ? r9969 : r9970;
        return r9971;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r9972 = c0;
        double r9973 = 2.0;
        double r9974 = w;
        double r9975 = r9973 * r9974;
        double r9976 = r9972 / r9975;
        double r9977 = h;
        double r9978 = r9974 * r9977;
        double r9979 = r9972 / r9978;
        double r9980 = d;
        double r9981 = D;
        double r9982 = r9980 / r9981;
        double r9983 = r9982 * r9982;
        double r9984 = r9979 * r9983;
        double r9985 = M;
        double r9986 = -r9985;
        double r9987 = r9986 * r9985;
        double r9988 = fma(r9984, r9984, r9987);
        double r9989 = sqrt(r9988);
        double r9990 = log(r9979);
        double r9991 = log(r9983);
        double r9992 = r9990 + r9991;
        double r9993 = exp(r9992);
        double r9994 = r9993 * r9976;
        double r9995 = fma(r9976, r9989, r9994);
        double r9996 = 1.6989985471632755e+298;
        bool r9997 = r9995 <= r9996;
        double r9998 = cbrt(r9988);
        double r9999 = 0.5;
        double r10000 = pow(r9998, r9999);
        double r10001 = r9972 / r9974;
        double r10002 = r10001 / r9977;
        double r10003 = r9983 * r10002;
        double r10004 = fma(r10003, r10003, r9987);
        double r10005 = cbrt(r10004);
        double r10006 = fabs(r10005);
        double r10007 = r10000 * r10006;
        double r10008 = r9979 * r9982;
        double r10009 = r9982 * r10008;
        double r10010 = r9976 * r10009;
        double r10011 = fma(r9976, r10007, r10010);
        double r10012 = 0.0;
        double r10013 = r9997 ? r10011 : r10012;
        return r10013;
}

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 r10014, r10015, r10016, r10017, r10018, r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029, r10030, r10031, r10032, r10033, r10034;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10014);
        mpfr_init_set_str(r10015, "2", 10, MPFR_RNDN);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init(r10023);
        mpfr_init(r10024);
        mpfr_init(r10025);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init(r10032);
        mpfr_init(r10033);
        mpfr_init(r10034);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10014, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10016, w, MPFR_RNDN);
        mpfr_mul(r10017, r10015, r10016, MPFR_RNDN);
        mpfr_div(r10018, r10014, r10017, MPFR_RNDN);
        mpfr_set_d(r10019, d, MPFR_RNDN);
        mpfr_mul(r10020, r10019, r10019, MPFR_RNDN);
        mpfr_mul(r10021, r10014, r10020, MPFR_RNDN);
        mpfr_set_d(r10022, h, MPFR_RNDN);
        mpfr_mul(r10023, r10016, r10022, MPFR_RNDN);
        mpfr_set_d(r10024, D, MPFR_RNDN);
        mpfr_mul(r10025, r10024, r10024, MPFR_RNDN);
        mpfr_mul(r10026, r10023, r10025, MPFR_RNDN);
        mpfr_div(r10027, r10021, r10026, MPFR_RNDN);
        mpfr_mul(r10028, r10027, r10027, MPFR_RNDN);
        mpfr_set_d(r10029, M, MPFR_RNDN);
        mpfr_mul(r10030, r10029, r10029, MPFR_RNDN);
        mpfr_sub(r10031, r10028, r10030, MPFR_RNDN);
        mpfr_sqrt(r10032, r10031, MPFR_RNDN);
        mpfr_add(r10033, r10027, r10032, MPFR_RNDN);
        mpfr_mul(r10034, r10018, r10033, MPFR_RNDN);
        return mpfr_get_d(r10034, MPFR_RNDN);
}

static mpfr_t r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048, r10049, r10050, r10051, r10052, r10053, r10054, r10055, r10056, r10057, r10058, r10059, r10060, r10061, r10062, r10063, r10064, r10065, r10066, r10067, r10068, r10069, r10070, r10071, r10072, r10073, r10074, r10075, r10076;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10035);
        mpfr_init_set_str(r10036, "2", 10, MPFR_RNDN);
        mpfr_init(r10037);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
        mpfr_init(r10048);
        mpfr_init(r10049);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init(r10054);
        mpfr_init(r10055);
        mpfr_init(r10056);
        mpfr_init(r10057);
        mpfr_init(r10058);
        mpfr_init_set_str(r10059, "1.6989985471632755e+298", 10, MPFR_RNDN);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init_set_str(r10062, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10063);
        mpfr_init(r10064);
        mpfr_init(r10065);
        mpfr_init(r10066);
        mpfr_init(r10067);
        mpfr_init(r10068);
        mpfr_init(r10069);
        mpfr_init(r10070);
        mpfr_init(r10071);
        mpfr_init(r10072);
        mpfr_init(r10073);
        mpfr_init(r10074);
        mpfr_init_set_str(r10075, "0", 10, MPFR_RNDN);
        mpfr_init(r10076);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10035, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10037, w, MPFR_RNDN);
        mpfr_mul(r10038, r10036, r10037, MPFR_RNDN);
        mpfr_div(r10039, r10035, r10038, MPFR_RNDN);
        mpfr_set_d(r10040, h, MPFR_RNDN);
        mpfr_mul(r10041, r10037, r10040, MPFR_RNDN);
        mpfr_div(r10042, r10035, r10041, MPFR_RNDN);
        mpfr_set_d(r10043, d, MPFR_RNDN);
        mpfr_set_d(r10044, D, MPFR_RNDN);
        mpfr_div(r10045, r10043, r10044, MPFR_RNDN);
        mpfr_mul(r10046, r10045, r10045, MPFR_RNDN);
        mpfr_mul(r10047, r10042, r10046, MPFR_RNDN);
        mpfr_set_d(r10048, M, MPFR_RNDN);
        mpfr_neg(r10049, r10048, MPFR_RNDN);
        mpfr_mul(r10050, r10049, r10048, MPFR_RNDN);
        mpfr_fma(r10051, r10047, r10047, r10050, MPFR_RNDN);
        mpfr_sqrt(r10052, r10051, MPFR_RNDN);
        mpfr_log(r10053, r10042, MPFR_RNDN);
        mpfr_log(r10054, r10046, MPFR_RNDN);
        mpfr_add(r10055, r10053, r10054, MPFR_RNDN);
        mpfr_exp(r10056, r10055, MPFR_RNDN);
        mpfr_mul(r10057, r10056, r10039, MPFR_RNDN);
        mpfr_fma(r10058, r10039, r10052, r10057, MPFR_RNDN);
        ;
        mpfr_set_si(r10060, mpfr_cmp(r10058, r10059) <= 0, MPFR_RNDN);
        mpfr_cbrt(r10061, r10051, MPFR_RNDN);
        ;
        mpfr_pow(r10063, r10061, r10062, MPFR_RNDN);
        mpfr_div(r10064, r10035, r10037, MPFR_RNDN);
        mpfr_div(r10065, r10064, r10040, MPFR_RNDN);
        mpfr_mul(r10066, r10046, r10065, MPFR_RNDN);
        mpfr_fma(r10067, r10066, r10066, r10050, MPFR_RNDN);
        mpfr_cbrt(r10068, r10067, MPFR_RNDN);
        mpfr_abs(r10069, r10068, MPFR_RNDN);
        mpfr_mul(r10070, r10063, r10069, MPFR_RNDN);
        mpfr_mul(r10071, r10042, r10045, MPFR_RNDN);
        mpfr_mul(r10072, r10045, r10071, MPFR_RNDN);
        mpfr_mul(r10073, r10039, r10072, MPFR_RNDN);
        mpfr_fma(r10074, r10039, r10070, r10073, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10060, MPFR_RNDN)) { mpfr_set(r10076, r10074, MPFR_RNDN); } else { mpfr_set(r10076, r10075, MPFR_RNDN); };
        return mpfr_get_d(r10076, MPFR_RNDN);
}

static mpfr_t r10077, r10078, r10079, r10080, r10081, r10082, r10083, r10084, r10085, r10086, r10087, r10088, r10089, r10090, r10091, r10092, r10093, r10094, r10095, r10096, r10097, r10098, r10099, r10100, r10101, r10102, r10103, r10104, r10105, r10106, r10107, r10108, r10109, r10110, r10111, r10112, r10113, r10114, r10115, r10116, r10117, r10118;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10077);
        mpfr_init_set_str(r10078, "2", 10, MPFR_RNDN);
        mpfr_init(r10079);
        mpfr_init(r10080);
        mpfr_init(r10081);
        mpfr_init(r10082);
        mpfr_init(r10083);
        mpfr_init(r10084);
        mpfr_init(r10085);
        mpfr_init(r10086);
        mpfr_init(r10087);
        mpfr_init(r10088);
        mpfr_init(r10089);
        mpfr_init(r10090);
        mpfr_init(r10091);
        mpfr_init(r10092);
        mpfr_init(r10093);
        mpfr_init(r10094);
        mpfr_init(r10095);
        mpfr_init(r10096);
        mpfr_init(r10097);
        mpfr_init(r10098);
        mpfr_init(r10099);
        mpfr_init(r10100);
        mpfr_init_set_str(r10101, "1.6989985471632755e+298", 10, MPFR_RNDN);
        mpfr_init(r10102);
        mpfr_init(r10103);
        mpfr_init_set_str(r10104, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10105);
        mpfr_init(r10106);
        mpfr_init(r10107);
        mpfr_init(r10108);
        mpfr_init(r10109);
        mpfr_init(r10110);
        mpfr_init(r10111);
        mpfr_init(r10112);
        mpfr_init(r10113);
        mpfr_init(r10114);
        mpfr_init(r10115);
        mpfr_init(r10116);
        mpfr_init_set_str(r10117, "0", 10, MPFR_RNDN);
        mpfr_init(r10118);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10077, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10079, w, MPFR_RNDN);
        mpfr_mul(r10080, r10078, r10079, MPFR_RNDN);
        mpfr_div(r10081, r10077, r10080, MPFR_RNDN);
        mpfr_set_d(r10082, h, MPFR_RNDN);
        mpfr_mul(r10083, r10079, r10082, MPFR_RNDN);
        mpfr_div(r10084, r10077, r10083, MPFR_RNDN);
        mpfr_set_d(r10085, d, MPFR_RNDN);
        mpfr_set_d(r10086, D, MPFR_RNDN);
        mpfr_div(r10087, r10085, r10086, MPFR_RNDN);
        mpfr_mul(r10088, r10087, r10087, MPFR_RNDN);
        mpfr_mul(r10089, r10084, r10088, MPFR_RNDN);
        mpfr_set_d(r10090, M, MPFR_RNDN);
        mpfr_neg(r10091, r10090, MPFR_RNDN);
        mpfr_mul(r10092, r10091, r10090, MPFR_RNDN);
        mpfr_fma(r10093, r10089, r10089, r10092, MPFR_RNDN);
        mpfr_sqrt(r10094, r10093, MPFR_RNDN);
        mpfr_log(r10095, r10084, MPFR_RNDN);
        mpfr_log(r10096, r10088, MPFR_RNDN);
        mpfr_add(r10097, r10095, r10096, MPFR_RNDN);
        mpfr_exp(r10098, r10097, MPFR_RNDN);
        mpfr_mul(r10099, r10098, r10081, MPFR_RNDN);
        mpfr_fma(r10100, r10081, r10094, r10099, MPFR_RNDN);
        ;
        mpfr_set_si(r10102, mpfr_cmp(r10100, r10101) <= 0, MPFR_RNDN);
        mpfr_cbrt(r10103, r10093, MPFR_RNDN);
        ;
        mpfr_pow(r10105, r10103, r10104, MPFR_RNDN);
        mpfr_div(r10106, r10077, r10079, MPFR_RNDN);
        mpfr_div(r10107, r10106, r10082, MPFR_RNDN);
        mpfr_mul(r10108, r10088, r10107, MPFR_RNDN);
        mpfr_fma(r10109, r10108, r10108, r10092, MPFR_RNDN);
        mpfr_cbrt(r10110, r10109, MPFR_RNDN);
        mpfr_abs(r10111, r10110, MPFR_RNDN);
        mpfr_mul(r10112, r10105, r10111, MPFR_RNDN);
        mpfr_mul(r10113, r10084, r10087, MPFR_RNDN);
        mpfr_mul(r10114, r10087, r10113, MPFR_RNDN);
        mpfr_mul(r10115, r10081, r10114, MPFR_RNDN);
        mpfr_fma(r10116, r10081, r10112, r10115, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10102, MPFR_RNDN)) { mpfr_set(r10118, r10116, MPFR_RNDN); } else { mpfr_set(r10118, r10117, MPFR_RNDN); };
        return mpfr_get_d(r10118, MPFR_RNDN);
}

