#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 r9983 = c0;
        float r9984 = 2;
        float r9985 = w;
        float r9986 = r9984 * r9985;
        float r9987 = r9983 / r9986;
        float r9988 = d;
        float r9989 = r9988 * r9988;
        float r9990 = r9983 * r9989;
        float r9991 = h;
        float r9992 = r9985 * r9991;
        float r9993 = D;
        float r9994 = r9993 * r9993;
        float r9995 = r9992 * r9994;
        float r9996 = r9990 / r9995;
        float r9997 = r9996 * r9996;
        float r9998 = M;
        float r9999 = r9998 * r9998;
        float r10000 = r9997 - r9999;
        float r10001 = sqrt(r10000);
        float r10002 = r9996 + r10001;
        float r10003 = r9987 * r10002;
        return r10003;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10004 = c0;
        double r10005 = 2;
        double r10006 = w;
        double r10007 = r10005 * r10006;
        double r10008 = r10004 / r10007;
        double r10009 = d;
        double r10010 = r10009 * r10009;
        double r10011 = r10004 * r10010;
        double r10012 = h;
        double r10013 = r10006 * r10012;
        double r10014 = D;
        double r10015 = r10014 * r10014;
        double r10016 = r10013 * r10015;
        double r10017 = r10011 / r10016;
        double r10018 = r10017 * r10017;
        double r10019 = M;
        double r10020 = r10019 * r10019;
        double r10021 = r10018 - r10020;
        double r10022 = sqrt(r10021);
        double r10023 = r10017 + r10022;
        double r10024 = r10008 * r10023;
        return r10024;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10025 = c0;
        float r10026 = 2;
        float r10027 = w;
        float r10028 = r10026 * r10027;
        float r10029 = r10025 / r10028;
        float r10030 = r10025 / r10027;
        float r10031 = h;
        float r10032 = r10030 / r10031;
        float r10033 = d;
        float r10034 = D;
        float r10035 = r10033 / r10034;
        float r10036 = r10035 * r10035;
        float r10037 = r10032 * r10036;
        float r10038 = M;
        float r10039 = r10038 + r10037;
        float r10040 = r10037 - r10038;
        float r10041 = r10039 * r10040;
        float r10042 = sqrt(r10041);
        float r10043 = r10037 + r10042;
        float r10044 = 3;
        float r10045 = pow(r10043, r10044);
        float r10046 = cbrt(r10045);
        float r10047 = r10029 * r10046;
        float r10048 = -2.4395159806034355e-254;
        bool r10049 = r10047 <= r10048;
        float r10050 = 1.7448376482148038e-174;
        bool r10051 = r10047 <= r10050;
        float r10052 = r10025 * r10038;
        float r10053 = r10027 * r10026;
        float r10054 = r10052 / r10053;
        float r10055 = r10038 * r10054;
        float r10056 = r10025 / r10031;
        float r10057 = r10056 / r10027;
        float r10058 = r10057 * r10035;
        float r10059 = r10058 * r10035;
        float r10060 = r10057 * r10036;
        float r10061 = r10060 * r10060;
        float r10062 = r10038 * r10038;
        float r10063 = r10061 - r10062;
        float r10064 = sqrt(r10063);
        float r10065 = r10059 - r10064;
        float r10066 = r10055 / r10065;
        float r10067 = 2.763585598570706e+282;
        bool r10068 = r10047 <= r10067;
        float r10069 = 0;
        float r10070 = r10068 ? r10047 : r10069;
        float r10071 = r10051 ? r10066 : r10070;
        float r10072 = r10049 ? r10047 : r10071;
        return r10072;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10073 = c0;
        double r10074 = 2;
        double r10075 = w;
        double r10076 = r10074 * r10075;
        double r10077 = r10073 / r10076;
        double r10078 = r10073 / r10075;
        double r10079 = h;
        double r10080 = r10078 / r10079;
        double r10081 = d;
        double r10082 = D;
        double r10083 = r10081 / r10082;
        double r10084 = r10083 * r10083;
        double r10085 = r10080 * r10084;
        double r10086 = M;
        double r10087 = r10086 + r10085;
        double r10088 = r10085 - r10086;
        double r10089 = r10087 * r10088;
        double r10090 = sqrt(r10089);
        double r10091 = r10085 + r10090;
        double r10092 = 3;
        double r10093 = pow(r10091, r10092);
        double r10094 = cbrt(r10093);
        double r10095 = r10077 * r10094;
        double r10096 = -2.4395159806034355e-254;
        bool r10097 = r10095 <= r10096;
        double r10098 = 1.7448376482148038e-174;
        bool r10099 = r10095 <= r10098;
        double r10100 = r10073 * r10086;
        double r10101 = r10075 * r10074;
        double r10102 = r10100 / r10101;
        double r10103 = r10086 * r10102;
        double r10104 = r10073 / r10079;
        double r10105 = r10104 / r10075;
        double r10106 = r10105 * r10083;
        double r10107 = r10106 * r10083;
        double r10108 = r10105 * r10084;
        double r10109 = r10108 * r10108;
        double r10110 = r10086 * r10086;
        double r10111 = r10109 - r10110;
        double r10112 = sqrt(r10111);
        double r10113 = r10107 - r10112;
        double r10114 = r10103 / r10113;
        double r10115 = 2.763585598570706e+282;
        bool r10116 = r10095 <= r10115;
        double r10117 = 0;
        double r10118 = r10116 ? r10095 : r10117;
        double r10119 = r10099 ? r10114 : r10118;
        double r10120 = r10097 ? r10095 : r10119;
        return r10120;
}

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 r10121, r10122, r10123, r10124, r10125, r10126, r10127, r10128, r10129, r10130, r10131, r10132, r10133, r10134, r10135, r10136, r10137, r10138, r10139, r10140, r10141;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10121);
        mpfr_init_set_str(r10122, "2", 10, MPFR_RNDN);
        mpfr_init(r10123);
        mpfr_init(r10124);
        mpfr_init(r10125);
        mpfr_init(r10126);
        mpfr_init(r10127);
        mpfr_init(r10128);
        mpfr_init(r10129);
        mpfr_init(r10130);
        mpfr_init(r10131);
        mpfr_init(r10132);
        mpfr_init(r10133);
        mpfr_init(r10134);
        mpfr_init(r10135);
        mpfr_init(r10136);
        mpfr_init(r10137);
        mpfr_init(r10138);
        mpfr_init(r10139);
        mpfr_init(r10140);
        mpfr_init(r10141);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10121, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10123, w, MPFR_RNDN);
        mpfr_mul(r10124, r10122, r10123, MPFR_RNDN);
        mpfr_div(r10125, r10121, r10124, MPFR_RNDN);
        mpfr_set_d(r10126, d, MPFR_RNDN);
        mpfr_mul(r10127, r10126, r10126, MPFR_RNDN);
        mpfr_mul(r10128, r10121, r10127, MPFR_RNDN);
        mpfr_set_d(r10129, h, MPFR_RNDN);
        mpfr_mul(r10130, r10123, r10129, MPFR_RNDN);
        mpfr_set_d(r10131, D, MPFR_RNDN);
        mpfr_mul(r10132, r10131, r10131, MPFR_RNDN);
        mpfr_mul(r10133, r10130, r10132, MPFR_RNDN);
        mpfr_div(r10134, r10128, r10133, MPFR_RNDN);
        mpfr_mul(r10135, r10134, r10134, MPFR_RNDN);
        mpfr_set_d(r10136, M, MPFR_RNDN);
        mpfr_mul(r10137, r10136, r10136, MPFR_RNDN);
        mpfr_sub(r10138, r10135, r10137, MPFR_RNDN);
        mpfr_sqrt(r10139, r10138, MPFR_RNDN);
        mpfr_add(r10140, r10134, r10139, MPFR_RNDN);
        mpfr_mul(r10141, r10125, r10140, MPFR_RNDN);
        return mpfr_get_d(r10141, MPFR_RNDN);
}

static mpfr_t r10142, r10143, r10144, r10145, r10146, r10147, r10148, r10149, r10150, r10151, r10152, r10153, r10154, r10155, r10156, r10157, r10158, r10159, r10160, r10161, r10162, r10163, r10164, r10165, r10166, r10167, r10168, r10169, r10170, r10171, r10172, r10173, r10174, r10175, r10176, r10177, r10178, r10179, r10180, r10181, r10182, r10183, r10184, r10185, r10186, r10187, r10188, r10189;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10142);
        mpfr_init_set_str(r10143, "2", 10, MPFR_RNDN);
        mpfr_init(r10144);
        mpfr_init(r10145);
        mpfr_init(r10146);
        mpfr_init(r10147);
        mpfr_init(r10148);
        mpfr_init(r10149);
        mpfr_init(r10150);
        mpfr_init(r10151);
        mpfr_init(r10152);
        mpfr_init(r10153);
        mpfr_init(r10154);
        mpfr_init(r10155);
        mpfr_init(r10156);
        mpfr_init(r10157);
        mpfr_init(r10158);
        mpfr_init(r10159);
        mpfr_init(r10160);
        mpfr_init_set_str(r10161, "3", 10, MPFR_RNDN);
        mpfr_init(r10162);
        mpfr_init(r10163);
        mpfr_init(r10164);
        mpfr_init_set_str(r10165, "-2.4395159806034355e-254", 10, MPFR_RNDN);
        mpfr_init(r10166);
        mpfr_init_set_str(r10167, "1.7448376482148038e-174", 10, MPFR_RNDN);
        mpfr_init(r10168);
        mpfr_init(r10169);
        mpfr_init(r10170);
        mpfr_init(r10171);
        mpfr_init(r10172);
        mpfr_init(r10173);
        mpfr_init(r10174);
        mpfr_init(r10175);
        mpfr_init(r10176);
        mpfr_init(r10177);
        mpfr_init(r10178);
        mpfr_init(r10179);
        mpfr_init(r10180);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init(r10183);
        mpfr_init_set_str(r10184, "2.763585598570706e+282", 10, MPFR_RNDN);
        mpfr_init(r10185);
        mpfr_init_set_str(r10186, "0", 10, MPFR_RNDN);
        mpfr_init(r10187);
        mpfr_init(r10188);
        mpfr_init(r10189);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10142, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10144, w, MPFR_RNDN);
        mpfr_mul(r10145, r10143, r10144, MPFR_RNDN);
        mpfr_div(r10146, r10142, r10145, MPFR_RNDN);
        mpfr_div(r10147, r10142, r10144, MPFR_RNDN);
        mpfr_set_d(r10148, h, MPFR_RNDN);
        mpfr_div(r10149, r10147, r10148, MPFR_RNDN);
        mpfr_set_d(r10150, d, MPFR_RNDN);
        mpfr_set_d(r10151, D, MPFR_RNDN);
        mpfr_div(r10152, r10150, r10151, MPFR_RNDN);
        mpfr_mul(r10153, r10152, r10152, MPFR_RNDN);
        mpfr_mul(r10154, r10149, r10153, MPFR_RNDN);
        mpfr_set_d(r10155, M, MPFR_RNDN);
        mpfr_add(r10156, r10155, r10154, MPFR_RNDN);
        mpfr_sub(r10157, r10154, r10155, MPFR_RNDN);
        mpfr_mul(r10158, r10156, r10157, MPFR_RNDN);
        mpfr_sqrt(r10159, r10158, MPFR_RNDN);
        mpfr_add(r10160, r10154, r10159, MPFR_RNDN);
        ;
        mpfr_pow(r10162, r10160, r10161, MPFR_RNDN);
        mpfr_cbrt(r10163, r10162, MPFR_RNDN);
        mpfr_mul(r10164, r10146, r10163, MPFR_RNDN);
        ;
        mpfr_set_si(r10166, mpfr_cmp(r10164, r10165) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10168, mpfr_cmp(r10164, r10167) <= 0, MPFR_RNDN);
        mpfr_mul(r10169, r10142, r10155, MPFR_RNDN);
        mpfr_mul(r10170, r10144, r10143, MPFR_RNDN);
        mpfr_div(r10171, r10169, r10170, MPFR_RNDN);
        mpfr_mul(r10172, r10155, r10171, MPFR_RNDN);
        mpfr_div(r10173, r10142, r10148, MPFR_RNDN);
        mpfr_div(r10174, r10173, r10144, MPFR_RNDN);
        mpfr_mul(r10175, r10174, r10152, MPFR_RNDN);
        mpfr_mul(r10176, r10175, r10152, MPFR_RNDN);
        mpfr_mul(r10177, r10174, r10153, MPFR_RNDN);
        mpfr_mul(r10178, r10177, r10177, MPFR_RNDN);
        mpfr_mul(r10179, r10155, r10155, MPFR_RNDN);
        mpfr_sub(r10180, r10178, r10179, MPFR_RNDN);
        mpfr_sqrt(r10181, r10180, MPFR_RNDN);
        mpfr_sub(r10182, r10176, r10181, MPFR_RNDN);
        mpfr_div(r10183, r10172, r10182, MPFR_RNDN);
        ;
        mpfr_set_si(r10185, mpfr_cmp(r10164, r10184) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10185, MPFR_RNDN)) { mpfr_set(r10187, r10164, MPFR_RNDN); } else { mpfr_set(r10187, r10186, MPFR_RNDN); };
        if (mpfr_get_si(r10168, MPFR_RNDN)) { mpfr_set(r10188, r10183, MPFR_RNDN); } else { mpfr_set(r10188, r10187, MPFR_RNDN); };
        if (mpfr_get_si(r10166, MPFR_RNDN)) { mpfr_set(r10189, r10164, MPFR_RNDN); } else { mpfr_set(r10189, r10188, MPFR_RNDN); };
        return mpfr_get_d(r10189, MPFR_RNDN);
}

static mpfr_t r10190, r10191, r10192, r10193, r10194, r10195, r10196, r10197, r10198, r10199, r10200, r10201, r10202, r10203, r10204, r10205, r10206, r10207, r10208, r10209, r10210, r10211, r10212, r10213, r10214, r10215, r10216, r10217, r10218, r10219, r10220, r10221, r10222, r10223, r10224, r10225, r10226, r10227, r10228, r10229, r10230, r10231, r10232, r10233, r10234, r10235, r10236, r10237;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10190);
        mpfr_init_set_str(r10191, "2", 10, MPFR_RNDN);
        mpfr_init(r10192);
        mpfr_init(r10193);
        mpfr_init(r10194);
        mpfr_init(r10195);
        mpfr_init(r10196);
        mpfr_init(r10197);
        mpfr_init(r10198);
        mpfr_init(r10199);
        mpfr_init(r10200);
        mpfr_init(r10201);
        mpfr_init(r10202);
        mpfr_init(r10203);
        mpfr_init(r10204);
        mpfr_init(r10205);
        mpfr_init(r10206);
        mpfr_init(r10207);
        mpfr_init(r10208);
        mpfr_init_set_str(r10209, "3", 10, MPFR_RNDN);
        mpfr_init(r10210);
        mpfr_init(r10211);
        mpfr_init(r10212);
        mpfr_init_set_str(r10213, "-2.4395159806034355e-254", 10, MPFR_RNDN);
        mpfr_init(r10214);
        mpfr_init_set_str(r10215, "1.7448376482148038e-174", 10, MPFR_RNDN);
        mpfr_init(r10216);
        mpfr_init(r10217);
        mpfr_init(r10218);
        mpfr_init(r10219);
        mpfr_init(r10220);
        mpfr_init(r10221);
        mpfr_init(r10222);
        mpfr_init(r10223);
        mpfr_init(r10224);
        mpfr_init(r10225);
        mpfr_init(r10226);
        mpfr_init(r10227);
        mpfr_init(r10228);
        mpfr_init(r10229);
        mpfr_init(r10230);
        mpfr_init(r10231);
        mpfr_init_set_str(r10232, "2.763585598570706e+282", 10, MPFR_RNDN);
        mpfr_init(r10233);
        mpfr_init_set_str(r10234, "0", 10, MPFR_RNDN);
        mpfr_init(r10235);
        mpfr_init(r10236);
        mpfr_init(r10237);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10190, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10192, w, MPFR_RNDN);
        mpfr_mul(r10193, r10191, r10192, MPFR_RNDN);
        mpfr_div(r10194, r10190, r10193, MPFR_RNDN);
        mpfr_div(r10195, r10190, r10192, MPFR_RNDN);
        mpfr_set_d(r10196, h, MPFR_RNDN);
        mpfr_div(r10197, r10195, r10196, MPFR_RNDN);
        mpfr_set_d(r10198, d, MPFR_RNDN);
        mpfr_set_d(r10199, D, MPFR_RNDN);
        mpfr_div(r10200, r10198, r10199, MPFR_RNDN);
        mpfr_mul(r10201, r10200, r10200, MPFR_RNDN);
        mpfr_mul(r10202, r10197, r10201, MPFR_RNDN);
        mpfr_set_d(r10203, M, MPFR_RNDN);
        mpfr_add(r10204, r10203, r10202, MPFR_RNDN);
        mpfr_sub(r10205, r10202, r10203, MPFR_RNDN);
        mpfr_mul(r10206, r10204, r10205, MPFR_RNDN);
        mpfr_sqrt(r10207, r10206, MPFR_RNDN);
        mpfr_add(r10208, r10202, r10207, MPFR_RNDN);
        ;
        mpfr_pow(r10210, r10208, r10209, MPFR_RNDN);
        mpfr_cbrt(r10211, r10210, MPFR_RNDN);
        mpfr_mul(r10212, r10194, r10211, MPFR_RNDN);
        ;
        mpfr_set_si(r10214, mpfr_cmp(r10212, r10213) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10216, mpfr_cmp(r10212, r10215) <= 0, MPFR_RNDN);
        mpfr_mul(r10217, r10190, r10203, MPFR_RNDN);
        mpfr_mul(r10218, r10192, r10191, MPFR_RNDN);
        mpfr_div(r10219, r10217, r10218, MPFR_RNDN);
        mpfr_mul(r10220, r10203, r10219, MPFR_RNDN);
        mpfr_div(r10221, r10190, r10196, MPFR_RNDN);
        mpfr_div(r10222, r10221, r10192, MPFR_RNDN);
        mpfr_mul(r10223, r10222, r10200, MPFR_RNDN);
        mpfr_mul(r10224, r10223, r10200, MPFR_RNDN);
        mpfr_mul(r10225, r10222, r10201, MPFR_RNDN);
        mpfr_mul(r10226, r10225, r10225, MPFR_RNDN);
        mpfr_mul(r10227, r10203, r10203, MPFR_RNDN);
        mpfr_sub(r10228, r10226, r10227, MPFR_RNDN);
        mpfr_sqrt(r10229, r10228, MPFR_RNDN);
        mpfr_sub(r10230, r10224, r10229, MPFR_RNDN);
        mpfr_div(r10231, r10220, r10230, MPFR_RNDN);
        ;
        mpfr_set_si(r10233, mpfr_cmp(r10212, r10232) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10233, MPFR_RNDN)) { mpfr_set(r10235, r10212, MPFR_RNDN); } else { mpfr_set(r10235, r10234, MPFR_RNDN); };
        if (mpfr_get_si(r10216, MPFR_RNDN)) { mpfr_set(r10236, r10231, MPFR_RNDN); } else { mpfr_set(r10236, r10235, MPFR_RNDN); };
        if (mpfr_get_si(r10214, MPFR_RNDN)) { mpfr_set(r10237, r10212, MPFR_RNDN); } else { mpfr_set(r10237, r10236, MPFR_RNDN); };
        return mpfr_get_d(r10237, MPFR_RNDN);
}

