#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 r9897 = c0;
        float r9898 = 2.0f;
        float r9899 = w;
        float r9900 = r9898 * r9899;
        float r9901 = r9897 / r9900;
        float r9902 = d;
        float r9903 = r9902 * r9902;
        float r9904 = r9897 * r9903;
        float r9905 = h;
        float r9906 = r9899 * r9905;
        float r9907 = D;
        float r9908 = r9907 * r9907;
        float r9909 = r9906 * r9908;
        float r9910 = r9904 / r9909;
        float r9911 = r9910 * r9910;
        float r9912 = M;
        float r9913 = r9912 * r9912;
        float r9914 = r9911 - r9913;
        float r9915 = sqrt(r9914);
        float r9916 = r9910 + r9915;
        float r9917 = r9901 * r9916;
        return r9917;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r9918 = c0;
        double r9919 = 2.0;
        double r9920 = w;
        double r9921 = r9919 * r9920;
        double r9922 = r9918 / r9921;
        double r9923 = d;
        double r9924 = r9923 * r9923;
        double r9925 = r9918 * r9924;
        double r9926 = h;
        double r9927 = r9920 * r9926;
        double r9928 = D;
        double r9929 = r9928 * r9928;
        double r9930 = r9927 * r9929;
        double r9931 = r9925 / r9930;
        double r9932 = r9931 * r9931;
        double r9933 = M;
        double r9934 = r9933 * r9933;
        double r9935 = r9932 - r9934;
        double r9936 = sqrt(r9935);
        double r9937 = r9931 + r9936;
        double r9938 = r9922 * r9937;
        return r9938;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r9939 = c0;
        float r9940 = 2.0f;
        float r9941 = w;
        float r9942 = r9940 * r9941;
        float r9943 = r9939 / r9942;
        float r9944 = h;
        float r9945 = r9941 * r9944;
        float r9946 = r9939 / r9945;
        float r9947 = d;
        float r9948 = D;
        float r9949 = r9947 / r9948;
        float r9950 = r9949 * r9949;
        float r9951 = r9946 * r9950;
        float r9952 = M;
        float r9953 = -r9952;
        float r9954 = r9953 * r9952;
        float r9955 = fma(r9951, r9951, r9954);
        float r9956 = sqrt(r9955);
        float r9957 = r9943 * r9951;
        float r9958 = fma(r9943, r9956, r9957);
        float r9959 = cbrt(r9958);
        float r9960 = r9959 * r9959;
        float r9961 = r9959 * r9960;
        float r9962 = 9.221866769331852e+291f;
        bool r9963 = r9961 <= r9962;
        float r9964 = r9943 * r9956;
        float r9965 = r9957 + r9964;
        float r9966 = 0.0f;
        float r9967 = r9963 ? r9965 : r9966;
        return r9967;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r9968 = c0;
        double r9969 = 2.0;
        double r9970 = w;
        double r9971 = r9969 * r9970;
        double r9972 = r9968 / r9971;
        double r9973 = h;
        double r9974 = r9970 * r9973;
        double r9975 = r9968 / r9974;
        double r9976 = d;
        double r9977 = D;
        double r9978 = r9976 / r9977;
        double r9979 = r9978 * r9978;
        double r9980 = r9975 * r9979;
        double r9981 = M;
        double r9982 = -r9981;
        double r9983 = r9982 * r9981;
        double r9984 = fma(r9980, r9980, r9983);
        double r9985 = sqrt(r9984);
        double r9986 = r9972 * r9980;
        double r9987 = fma(r9972, r9985, r9986);
        double r9988 = cbrt(r9987);
        double r9989 = r9988 * r9988;
        double r9990 = r9988 * r9989;
        double r9991 = 9.221866769331852e+291;
        bool r9992 = r9990 <= r9991;
        double r9993 = r9972 * r9985;
        double r9994 = r9986 + r9993;
        double r9995 = 0.0;
        double r9996 = r9992 ? r9994 : r9995;
        return r9996;
}

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 r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011, r10012, r10013, r10014, r10015, r10016, r10017;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6992);
        mpfr_init(r9997);
        mpfr_init_set_str(r9998, "2", 10, MPFR_RNDN);
        mpfr_init(r9999);
        mpfr_init(r10000);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
        mpfr_init(r10010);
        mpfr_init(r10011);
        mpfr_init(r10012);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
        mpfr_init(r10017);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r9997, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r9999, w, MPFR_RNDN);
        mpfr_mul(r10000, r9998, r9999, MPFR_RNDN);
        mpfr_div(r10001, r9997, r10000, MPFR_RNDN);
        mpfr_set_d(r10002, d, MPFR_RNDN);
        mpfr_mul(r10003, r10002, r10002, MPFR_RNDN);
        mpfr_mul(r10004, r9997, r10003, MPFR_RNDN);
        mpfr_set_d(r10005, h, MPFR_RNDN);
        mpfr_mul(r10006, r9999, r10005, MPFR_RNDN);
        mpfr_set_d(r10007, D, MPFR_RNDN);
        mpfr_mul(r10008, r10007, r10007, MPFR_RNDN);
        mpfr_mul(r10009, r10006, r10008, MPFR_RNDN);
        mpfr_div(r10010, r10004, r10009, MPFR_RNDN);
        mpfr_mul(r10011, r10010, r10010, MPFR_RNDN);
        mpfr_set_d(r10012, M, MPFR_RNDN);
        mpfr_mul(r10013, r10012, r10012, MPFR_RNDN);
        mpfr_sub(r10014, r10011, r10013, MPFR_RNDN);
        mpfr_sqrt(r10015, r10014, MPFR_RNDN);
        mpfr_add(r10016, r10010, r10015, MPFR_RNDN);
        mpfr_mul(r10017, r10001, r10016, MPFR_RNDN);
        return mpfr_get_d(r10017, MPFR_RNDN);
}

static mpfr_t r10018, r10019, r10020, r10021, r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029, r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10018);
        mpfr_init_set_str(r10019, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r10035);
        mpfr_init(r10036);
        mpfr_init(r10037);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init_set_str(r10041, "9.221866769331852e+291", 10, MPFR_RNDN);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init_set_str(r10045, "0", 10, MPFR_RNDN);
        mpfr_init(r10046);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10018, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10020, w, MPFR_RNDN);
        mpfr_mul(r10021, r10019, r10020, MPFR_RNDN);
        mpfr_div(r10022, r10018, r10021, MPFR_RNDN);
        mpfr_set_d(r10023, h, MPFR_RNDN);
        mpfr_mul(r10024, r10020, r10023, MPFR_RNDN);
        mpfr_div(r10025, r10018, r10024, MPFR_RNDN);
        mpfr_set_d(r10026, d, MPFR_RNDN);
        mpfr_set_d(r10027, D, MPFR_RNDN);
        mpfr_div(r10028, r10026, r10027, MPFR_RNDN);
        mpfr_mul(r10029, r10028, r10028, MPFR_RNDN);
        mpfr_mul(r10030, r10025, r10029, MPFR_RNDN);
        mpfr_set_d(r10031, M, MPFR_RNDN);
        mpfr_neg(r10032, r10031, MPFR_RNDN);
        mpfr_mul(r10033, r10032, r10031, MPFR_RNDN);
        mpfr_fma(r10034, r10030, r10030, r10033, MPFR_RNDN);
        mpfr_sqrt(r10035, r10034, MPFR_RNDN);
        mpfr_mul(r10036, r10022, r10030, MPFR_RNDN);
        mpfr_fma(r10037, r10022, r10035, r10036, MPFR_RNDN);
        mpfr_cbrt(r10038, r10037, MPFR_RNDN);
        mpfr_mul(r10039, r10038, r10038, MPFR_RNDN);
        mpfr_mul(r10040, r10038, r10039, MPFR_RNDN);
        ;
        mpfr_set_si(r10042, mpfr_cmp(r10040, r10041) <= 0, MPFR_RNDN);
        mpfr_mul(r10043, r10022, r10035, MPFR_RNDN);
        mpfr_add(r10044, r10036, r10043, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10042, MPFR_RNDN)) { mpfr_set(r10046, r10044, MPFR_RNDN); } else { mpfr_set(r10046, r10045, MPFR_RNDN); };
        return mpfr_get_d(r10046, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10047);
        mpfr_init_set_str(r10048, "2", 10, MPFR_RNDN);
        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(r10059);
        mpfr_init(r10060);
        mpfr_init(r10061);
        mpfr_init(r10062);
        mpfr_init(r10063);
        mpfr_init(r10064);
        mpfr_init(r10065);
        mpfr_init(r10066);
        mpfr_init(r10067);
        mpfr_init(r10068);
        mpfr_init(r10069);
        mpfr_init_set_str(r10070, "9.221866769331852e+291", 10, MPFR_RNDN);
        mpfr_init(r10071);
        mpfr_init(r10072);
        mpfr_init(r10073);
        mpfr_init_set_str(r10074, "0", 10, MPFR_RNDN);
        mpfr_init(r10075);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10047, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10049, w, MPFR_RNDN);
        mpfr_mul(r10050, r10048, r10049, MPFR_RNDN);
        mpfr_div(r10051, r10047, r10050, MPFR_RNDN);
        mpfr_set_d(r10052, h, MPFR_RNDN);
        mpfr_mul(r10053, r10049, r10052, MPFR_RNDN);
        mpfr_div(r10054, r10047, r10053, MPFR_RNDN);
        mpfr_set_d(r10055, d, MPFR_RNDN);
        mpfr_set_d(r10056, D, MPFR_RNDN);
        mpfr_div(r10057, r10055, r10056, MPFR_RNDN);
        mpfr_mul(r10058, r10057, r10057, MPFR_RNDN);
        mpfr_mul(r10059, r10054, r10058, MPFR_RNDN);
        mpfr_set_d(r10060, M, MPFR_RNDN);
        mpfr_neg(r10061, r10060, MPFR_RNDN);
        mpfr_mul(r10062, r10061, r10060, MPFR_RNDN);
        mpfr_fma(r10063, r10059, r10059, r10062, MPFR_RNDN);
        mpfr_sqrt(r10064, r10063, MPFR_RNDN);
        mpfr_mul(r10065, r10051, r10059, MPFR_RNDN);
        mpfr_fma(r10066, r10051, r10064, r10065, MPFR_RNDN);
        mpfr_cbrt(r10067, r10066, MPFR_RNDN);
        mpfr_mul(r10068, r10067, r10067, MPFR_RNDN);
        mpfr_mul(r10069, r10067, r10068, MPFR_RNDN);
        ;
        mpfr_set_si(r10071, mpfr_cmp(r10069, r10070) <= 0, MPFR_RNDN);
        mpfr_mul(r10072, r10051, r10064, MPFR_RNDN);
        mpfr_add(r10073, r10065, r10072, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10071, MPFR_RNDN)) { mpfr_set(r10075, r10073, MPFR_RNDN); } else { mpfr_set(r10075, r10074, MPFR_RNDN); };
        return mpfr_get_d(r10075, MPFR_RNDN);
}

