#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 r9928 = c0;
        float r9929 = 2.0f;
        float r9930 = w;
        float r9931 = r9929 * r9930;
        float r9932 = r9928 / r9931;
        float r9933 = d;
        float r9934 = r9933 * r9933;
        float r9935 = r9928 * r9934;
        float r9936 = h;
        float r9937 = r9930 * r9936;
        float r9938 = D;
        float r9939 = r9938 * r9938;
        float r9940 = r9937 * r9939;
        float r9941 = r9935 / r9940;
        float r9942 = r9941 * r9941;
        float r9943 = M;
        float r9944 = r9943 * r9943;
        float r9945 = r9942 - r9944;
        float r9946 = sqrt(r9945);
        float r9947 = r9941 + r9946;
        float r9948 = r9932 * r9947;
        return r9948;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r9949 = c0;
        double r9950 = 2.0;
        double r9951 = w;
        double r9952 = r9950 * r9951;
        double r9953 = r9949 / r9952;
        double r9954 = d;
        double r9955 = r9954 * r9954;
        double r9956 = r9949 * r9955;
        double r9957 = h;
        double r9958 = r9951 * r9957;
        double r9959 = D;
        double r9960 = r9959 * r9959;
        double r9961 = r9958 * r9960;
        double r9962 = r9956 / r9961;
        double r9963 = r9962 * r9962;
        double r9964 = M;
        double r9965 = r9964 * r9964;
        double r9966 = r9963 - r9965;
        double r9967 = sqrt(r9966);
        double r9968 = r9962 + r9967;
        double r9969 = r9953 * r9968;
        return r9969;
}


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

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r9999 = c0;
        double r10000 = 2.0;
        double r10001 = w;
        double r10002 = r10000 * r10001;
        double r10003 = r9999 / r10002;
        double r10004 = h;
        double r10005 = r10001 * r10004;
        double r10006 = r9999 / r10005;
        double r10007 = d;
        double r10008 = D;
        double r10009 = r10007 / r10008;
        double r10010 = r10009 * r10009;
        double r10011 = r10006 * r10010;
        double r10012 = M;
        double r10013 = -r10012;
        double r10014 = r10013 * r10012;
        double r10015 = fma(r10011, r10011, r10014);
        double r10016 = sqrt(r10015);
        double r10017 = r10003 * r10011;
        double r10018 = fma(r10003, r10016, r10017);
        double r10019 = cbrt(r10018);
        double r10020 = r10019 * r10019;
        double r10021 = r10019 * r10020;
        double r10022 = 9.221866769331852e+291;
        bool r10023 = r10021 <= r10022;
        double r10024 = r10003 * r10016;
        double r10025 = r10017 + r10024;
        double r10026 = 0.0;
        double r10027 = r10023 ? r10025 : r10026;
        return r10027;
}

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 r10028, r10029, r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047, r10048;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10028);
        mpfr_init_set_str(r10029, "2", 10, MPFR_RNDN);
        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(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
        mpfr_init(r10048);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10028, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10030, w, MPFR_RNDN);
        mpfr_mul(r10031, r10029, r10030, MPFR_RNDN);
        mpfr_div(r10032, r10028, r10031, MPFR_RNDN);
        mpfr_set_d(r10033, d, MPFR_RNDN);
        mpfr_mul(r10034, r10033, r10033, MPFR_RNDN);
        mpfr_mul(r10035, r10028, r10034, MPFR_RNDN);
        mpfr_set_d(r10036, h, MPFR_RNDN);
        mpfr_mul(r10037, r10030, r10036, MPFR_RNDN);
        mpfr_set_d(r10038, D, MPFR_RNDN);
        mpfr_mul(r10039, r10038, r10038, MPFR_RNDN);
        mpfr_mul(r10040, r10037, r10039, MPFR_RNDN);
        mpfr_div(r10041, r10035, r10040, MPFR_RNDN);
        mpfr_mul(r10042, r10041, r10041, MPFR_RNDN);
        mpfr_set_d(r10043, M, MPFR_RNDN);
        mpfr_mul(r10044, r10043, r10043, MPFR_RNDN);
        mpfr_sub(r10045, r10042, r10044, MPFR_RNDN);
        mpfr_sqrt(r10046, r10045, MPFR_RNDN);
        mpfr_add(r10047, r10041, r10046, MPFR_RNDN);
        mpfr_mul(r10048, r10032, r10047, MPFR_RNDN);
        return mpfr_get_d(r10048, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10049);
        mpfr_init_set_str(r10050, "2", 10, MPFR_RNDN);
        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(r10070);
        mpfr_init(r10071);
        mpfr_init_set_str(r10072, "9.221866769331852e+291", 10, MPFR_RNDN);
        mpfr_init(r10073);
        mpfr_init(r10074);
        mpfr_init(r10075);
        mpfr_init_set_str(r10076, "0", 10, MPFR_RNDN);
        mpfr_init(r10077);
}

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

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10078);
        mpfr_init_set_str(r10079, "2", 10, MPFR_RNDN);
        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, "9.221866769331852e+291", 10, MPFR_RNDN);
        mpfr_init(r10102);
        mpfr_init(r10103);
        mpfr_init(r10104);
        mpfr_init_set_str(r10105, "0", 10, MPFR_RNDN);
        mpfr_init(r10106);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10078, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10080, w, MPFR_RNDN);
        mpfr_mul(r10081, r10079, r10080, MPFR_RNDN);
        mpfr_div(r10082, r10078, r10081, MPFR_RNDN);
        mpfr_set_d(r10083, h, MPFR_RNDN);
        mpfr_mul(r10084, r10080, r10083, MPFR_RNDN);
        mpfr_div(r10085, r10078, r10084, MPFR_RNDN);
        mpfr_set_d(r10086, d, MPFR_RNDN);
        mpfr_set_d(r10087, D, MPFR_RNDN);
        mpfr_div(r10088, r10086, r10087, MPFR_RNDN);
        mpfr_mul(r10089, r10088, r10088, MPFR_RNDN);
        mpfr_mul(r10090, r10085, r10089, MPFR_RNDN);
        mpfr_set_d(r10091, M, MPFR_RNDN);
        mpfr_neg(r10092, r10091, MPFR_RNDN);
        mpfr_mul(r10093, r10092, r10091, MPFR_RNDN);
        mpfr_fma(r10094, r10090, r10090, r10093, MPFR_RNDN);
        mpfr_sqrt(r10095, r10094, MPFR_RNDN);
        mpfr_mul(r10096, r10082, r10090, MPFR_RNDN);
        mpfr_fma(r10097, r10082, r10095, r10096, MPFR_RNDN);
        mpfr_cbrt(r10098, r10097, MPFR_RNDN);
        mpfr_mul(r10099, r10098, r10098, MPFR_RNDN);
        mpfr_mul(r10100, r10098, r10099, MPFR_RNDN);
        ;
        mpfr_set_si(r10102, mpfr_cmp(r10100, r10101) <= 0, MPFR_RNDN);
        mpfr_mul(r10103, r10082, r10095, MPFR_RNDN);
        mpfr_add(r10104, r10096, r10103, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10102, MPFR_RNDN)) { mpfr_set(r10106, r10104, MPFR_RNDN); } else { mpfr_set(r10106, r10105, MPFR_RNDN); };
        return mpfr_get_d(r10106, MPFR_RNDN);
}

