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

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

double f_if(float d, float h, float l, float M, float D) {
        float r20918 = d;
        float r20919 = h;
        float r20920 = r20918 / r20919;
        float r20921 = 1.0f;
        float r20922 = 2.0f;
        float r20923 = r20921 / r20922;
        float r20924 = pow(r20920, r20923);
        float r20925 = l;
        float r20926 = r20918 / r20925;
        float r20927 = pow(r20926, r20923);
        float r20928 = r20924 * r20927;
        float r20929 = M;
        float r20930 = D;
        float r20931 = r20929 * r20930;
        float r20932 = r20922 * r20918;
        float r20933 = r20931 / r20932;
        float r20934 = r20933 * r20933;
        float r20935 = r20923 * r20934;
        float r20936 = r20919 / r20925;
        float r20937 = r20935 * r20936;
        float r20938 = r20921 - r20937;
        float r20939 = r20928 * r20938;
        return r20939;
}

double f_id(double d, double h, double l, double M, double D) {
        double r20940 = d;
        double r20941 = h;
        double r20942 = r20940 / r20941;
        double r20943 = 1.0;
        double r20944 = 2.0;
        double r20945 = r20943 / r20944;
        double r20946 = pow(r20942, r20945);
        double r20947 = l;
        double r20948 = r20940 / r20947;
        double r20949 = pow(r20948, r20945);
        double r20950 = r20946 * r20949;
        double r20951 = M;
        double r20952 = D;
        double r20953 = r20951 * r20952;
        double r20954 = r20944 * r20940;
        double r20955 = r20953 / r20954;
        double r20956 = r20955 * r20955;
        double r20957 = r20945 * r20956;
        double r20958 = r20941 / r20947;
        double r20959 = r20957 * r20958;
        double r20960 = r20943 - r20959;
        double r20961 = r20950 * r20960;
        return r20961;
}


double f_of(float d, float h, float l, float M, float D) {
        float r20962 = d;
        float r20963 = 1.0686035838302045e-288f;
        bool r20964 = r20962 <= r20963;
        float r20965 = h;
        float r20966 = r20962 / r20965;
        float r20967 = 1.0f;
        float r20968 = 2.0f;
        float r20969 = r20967 / r20968;
        float r20970 = pow(r20966, r20969);
        float r20971 = l;
        float r20972 = r20962 / r20971;
        float r20973 = pow(r20972, r20969);
        float r20974 = r20970 * r20973;
        float r20975 = sqrt(r20969);
        float r20976 = M;
        float r20977 = D;
        float r20978 = r20976 * r20977;
        float r20979 = r20968 * r20962;
        float r20980 = r20978 / r20979;
        float r20981 = r20975 * r20980;
        float r20982 = r20965 / r20971;
        float r20983 = sqrt(r20982);
        float r20984 = r20981 * r20983;
        float r20985 = r20984 * r20984;
        float r20986 = r20967 - r20985;
        float r20987 = r20974 * r20986;
        float r20988 = 2.155516528760191e-24f;
        bool r20989 = r20962 <= r20988;
        float r20990 = pow(r20962, r20969);
        float r20991 = r20967 / r20971;
        float r20992 = pow(r20991, r20969);
        float r20993 = r20990 * r20992;
        float r20994 = r20970 * r20993;
        float r20995 = r20994 * r20986;
        float r20996 = 4.1646698243649156e+57f;
        bool r20997 = r20962 <= r20996;
        float r20998 = sqrt(r20970);
        float r20999 = r20998 * r20998;
        float r21000 = r20999 * r20973;
        float r21001 = sqrt(r20965);
        float r21002 = sqrt(r20971);
        float r21003 = r21001 / r21002;
        float r21004 = r20981 * r21003;
        float r21005 = r21004 * r21004;
        float r21006 = r20967 - r21005;
        float r21007 = r21000 * r21006;
        float r21008 = r20967 / r20965;
        float r21009 = pow(r21008, r20969);
        float r21010 = r20990 * r21009;
        float r21011 = r21010 * r20973;
        float r21012 = r20980 * r20980;
        float r21013 = r20969 * r21012;
        float r21014 = r21013 * r20982;
        float r21015 = r20967 - r21014;
        float r21016 = r21011 * r21015;
        float r21017 = r20997 ? r21007 : r21016;
        float r21018 = r20989 ? r20995 : r21017;
        float r21019 = r20964 ? r20987 : r21018;
        return r21019;
}

double f_od(double d, double h, double l, double M, double D) {
        double r21020 = d;
        double r21021 = 1.0686035838302045e-288;
        bool r21022 = r21020 <= r21021;
        double r21023 = h;
        double r21024 = r21020 / r21023;
        double r21025 = 1.0;
        double r21026 = 2.0;
        double r21027 = r21025 / r21026;
        double r21028 = pow(r21024, r21027);
        double r21029 = l;
        double r21030 = r21020 / r21029;
        double r21031 = pow(r21030, r21027);
        double r21032 = r21028 * r21031;
        double r21033 = sqrt(r21027);
        double r21034 = M;
        double r21035 = D;
        double r21036 = r21034 * r21035;
        double r21037 = r21026 * r21020;
        double r21038 = r21036 / r21037;
        double r21039 = r21033 * r21038;
        double r21040 = r21023 / r21029;
        double r21041 = sqrt(r21040);
        double r21042 = r21039 * r21041;
        double r21043 = r21042 * r21042;
        double r21044 = r21025 - r21043;
        double r21045 = r21032 * r21044;
        double r21046 = 2.155516528760191e-24;
        bool r21047 = r21020 <= r21046;
        double r21048 = pow(r21020, r21027);
        double r21049 = r21025 / r21029;
        double r21050 = pow(r21049, r21027);
        double r21051 = r21048 * r21050;
        double r21052 = r21028 * r21051;
        double r21053 = r21052 * r21044;
        double r21054 = 4.1646698243649156e+57;
        bool r21055 = r21020 <= r21054;
        double r21056 = sqrt(r21028);
        double r21057 = r21056 * r21056;
        double r21058 = r21057 * r21031;
        double r21059 = sqrt(r21023);
        double r21060 = sqrt(r21029);
        double r21061 = r21059 / r21060;
        double r21062 = r21039 * r21061;
        double r21063 = r21062 * r21062;
        double r21064 = r21025 - r21063;
        double r21065 = r21058 * r21064;
        double r21066 = r21025 / r21023;
        double r21067 = pow(r21066, r21027);
        double r21068 = r21048 * r21067;
        double r21069 = r21068 * r21031;
        double r21070 = r21038 * r21038;
        double r21071 = r21027 * r21070;
        double r21072 = r21071 * r21040;
        double r21073 = r21025 - r21072;
        double r21074 = r21069 * r21073;
        double r21075 = r21055 ? r21065 : r21074;
        double r21076 = r21047 ? r21053 : r21075;
        double r21077 = r21022 ? r21045 : r21076;
        return r21077;
}

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 r21078, r21079, r21080, r21081, r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089, r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21078);
        mpfr_init(r21079);
        mpfr_init(r21080);
        mpfr_init_set_str(r21081, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21082, "2", 10, MPFR_RNDN);
        mpfr_init(r21083);
        mpfr_init(r21084);
        mpfr_init(r21085);
        mpfr_init(r21086);
        mpfr_init(r21087);
        mpfr_init(r21088);
        mpfr_init(r21089);
        mpfr_init(r21090);
        mpfr_init(r21091);
        mpfr_init(r21092);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init(r21095);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init(r21098);
        mpfr_init(r21099);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21078, d, MPFR_RNDN);
        mpfr_set_d(r21079, h, MPFR_RNDN);
        mpfr_div(r21080, r21078, r21079, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21083, r21081, r21082, MPFR_RNDN);
        mpfr_pow(r21084, r21080, r21083, MPFR_RNDN);
        mpfr_set_d(r21085, l, MPFR_RNDN);
        mpfr_div(r21086, r21078, r21085, MPFR_RNDN);
        mpfr_pow(r21087, r21086, r21083, MPFR_RNDN);
        mpfr_mul(r21088, r21084, r21087, MPFR_RNDN);
        mpfr_set_d(r21089, M, MPFR_RNDN);
        mpfr_set_d(r21090, D, MPFR_RNDN);
        mpfr_mul(r21091, r21089, r21090, MPFR_RNDN);
        mpfr_mul(r21092, r21082, r21078, MPFR_RNDN);
        mpfr_div(r21093, r21091, r21092, MPFR_RNDN);
        mpfr_sqr(r21094, r21093, MPFR_RNDN);
        mpfr_mul(r21095, r21083, r21094, MPFR_RNDN);
        mpfr_div(r21096, r21079, r21085, MPFR_RNDN);
        mpfr_mul(r21097, r21095, r21096, MPFR_RNDN);
        mpfr_sub(r21098, r21081, r21097, MPFR_RNDN);
        mpfr_mul(r21099, r21088, r21098, MPFR_RNDN);
        return mpfr_get_d(r21099, MPFR_RNDN);
}

static mpfr_t r21100, r21101, r21102, r21103, r21104, r21105, r21106, r21107, r21108, r21109, r21110, r21111, r21112, r21113, r21114, r21115, r21116, r21117, r21118, r21119, r21120, r21121, r21122, r21123, r21124, r21125, r21126, r21127, r21128, r21129, r21130, r21131, r21132, r21133, r21134, r21135, r21136, r21137, r21138, r21139, r21140, r21141, r21142, r21143, r21144, r21145, r21146, r21147, r21148, r21149, r21150, r21151, r21152, r21153, r21154, r21155, r21156, r21157;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21100);
        mpfr_init_set_str(r21101, "1.0686035838302045e-288", 10, MPFR_RNDN);
        mpfr_init(r21102);
        mpfr_init(r21103);
        mpfr_init(r21104);
        mpfr_init_set_str(r21105, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21106, "2", 10, MPFR_RNDN);
        mpfr_init(r21107);
        mpfr_init(r21108);
        mpfr_init(r21109);
        mpfr_init(r21110);
        mpfr_init(r21111);
        mpfr_init(r21112);
        mpfr_init(r21113);
        mpfr_init(r21114);
        mpfr_init(r21115);
        mpfr_init(r21116);
        mpfr_init(r21117);
        mpfr_init(r21118);
        mpfr_init(r21119);
        mpfr_init(r21120);
        mpfr_init(r21121);
        mpfr_init(r21122);
        mpfr_init(r21123);
        mpfr_init(r21124);
        mpfr_init(r21125);
        mpfr_init_set_str(r21126, "2.155516528760191e-24", 10, MPFR_RNDN);
        mpfr_init(r21127);
        mpfr_init(r21128);
        mpfr_init(r21129);
        mpfr_init(r21130);
        mpfr_init(r21131);
        mpfr_init(r21132);
        mpfr_init(r21133);
        mpfr_init_set_str(r21134, "4.1646698243649156e+57", 10, MPFR_RNDN);
        mpfr_init(r21135);
        mpfr_init(r21136);
        mpfr_init(r21137);
        mpfr_init(r21138);
        mpfr_init(r21139);
        mpfr_init(r21140);
        mpfr_init(r21141);
        mpfr_init(r21142);
        mpfr_init(r21143);
        mpfr_init(r21144);
        mpfr_init(r21145);
        mpfr_init(r21146);
        mpfr_init(r21147);
        mpfr_init(r21148);
        mpfr_init(r21149);
        mpfr_init(r21150);
        mpfr_init(r21151);
        mpfr_init(r21152);
        mpfr_init(r21153);
        mpfr_init(r21154);
        mpfr_init(r21155);
        mpfr_init(r21156);
        mpfr_init(r21157);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21100, d, MPFR_RNDN);
        ;
        mpfr_set_si(r21102, mpfr_cmp(r21100, r21101) <= 0, MPFR_RNDN);
        mpfr_set_d(r21103, h, MPFR_RNDN);
        mpfr_div(r21104, r21100, r21103, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21107, r21105, r21106, MPFR_RNDN);
        mpfr_pow(r21108, r21104, r21107, MPFR_RNDN);
        mpfr_set_d(r21109, l, MPFR_RNDN);
        mpfr_div(r21110, r21100, r21109, MPFR_RNDN);
        mpfr_pow(r21111, r21110, r21107, MPFR_RNDN);
        mpfr_mul(r21112, r21108, r21111, MPFR_RNDN);
        mpfr_sqrt(r21113, r21107, MPFR_RNDN);
        mpfr_set_d(r21114, M, MPFR_RNDN);
        mpfr_set_d(r21115, D, MPFR_RNDN);
        mpfr_mul(r21116, r21114, r21115, MPFR_RNDN);
        mpfr_mul(r21117, r21106, r21100, MPFR_RNDN);
        mpfr_div(r21118, r21116, r21117, MPFR_RNDN);
        mpfr_mul(r21119, r21113, r21118, MPFR_RNDN);
        mpfr_div(r21120, r21103, r21109, MPFR_RNDN);
        mpfr_sqrt(r21121, r21120, MPFR_RNDN);
        mpfr_mul(r21122, r21119, r21121, MPFR_RNDN);
        mpfr_sqr(r21123, r21122, MPFR_RNDN);
        mpfr_sub(r21124, r21105, r21123, MPFR_RNDN);
        mpfr_mul(r21125, r21112, r21124, MPFR_RNDN);
        ;
        mpfr_set_si(r21127, mpfr_cmp(r21100, r21126) <= 0, MPFR_RNDN);
        mpfr_pow(r21128, r21100, r21107, MPFR_RNDN);
        mpfr_div(r21129, r21105, r21109, MPFR_RNDN);
        mpfr_pow(r21130, r21129, r21107, MPFR_RNDN);
        mpfr_mul(r21131, r21128, r21130, MPFR_RNDN);
        mpfr_mul(r21132, r21108, r21131, MPFR_RNDN);
        mpfr_mul(r21133, r21132, r21124, MPFR_RNDN);
        ;
        mpfr_set_si(r21135, mpfr_cmp(r21100, r21134) <= 0, MPFR_RNDN);
        mpfr_sqrt(r21136, r21108, MPFR_RNDN);
        mpfr_sqr(r21137, r21136, MPFR_RNDN);
        mpfr_mul(r21138, r21137, r21111, MPFR_RNDN);
        mpfr_sqrt(r21139, r21103, MPFR_RNDN);
        mpfr_sqrt(r21140, r21109, MPFR_RNDN);
        mpfr_div(r21141, r21139, r21140, MPFR_RNDN);
        mpfr_mul(r21142, r21119, r21141, MPFR_RNDN);
        mpfr_sqr(r21143, r21142, MPFR_RNDN);
        mpfr_sub(r21144, r21105, r21143, MPFR_RNDN);
        mpfr_mul(r21145, r21138, r21144, MPFR_RNDN);
        mpfr_div(r21146, r21105, r21103, MPFR_RNDN);
        mpfr_pow(r21147, r21146, r21107, MPFR_RNDN);
        mpfr_mul(r21148, r21128, r21147, MPFR_RNDN);
        mpfr_mul(r21149, r21148, r21111, MPFR_RNDN);
        mpfr_sqr(r21150, r21118, MPFR_RNDN);
        mpfr_mul(r21151, r21107, r21150, MPFR_RNDN);
        mpfr_mul(r21152, r21151, r21120, MPFR_RNDN);
        mpfr_sub(r21153, r21105, r21152, MPFR_RNDN);
        mpfr_mul(r21154, r21149, r21153, MPFR_RNDN);
        if (mpfr_get_si(r21135, MPFR_RNDN)) { mpfr_set(r21155, r21145, MPFR_RNDN); } else { mpfr_set(r21155, r21154, MPFR_RNDN); };
        if (mpfr_get_si(r21127, MPFR_RNDN)) { mpfr_set(r21156, r21133, MPFR_RNDN); } else { mpfr_set(r21156, r21155, MPFR_RNDN); };
        if (mpfr_get_si(r21102, MPFR_RNDN)) { mpfr_set(r21157, r21125, MPFR_RNDN); } else { mpfr_set(r21157, r21156, MPFR_RNDN); };
        return mpfr_get_d(r21157, MPFR_RNDN);
}

static mpfr_t r21158, r21159, r21160, r21161, r21162, r21163, r21164, r21165, r21166, r21167, r21168, r21169, r21170, r21171, r21172, r21173, r21174, r21175, r21176, r21177, r21178, r21179, r21180, r21181, r21182, r21183, r21184, r21185, r21186, r21187, r21188, r21189, r21190, r21191, r21192, r21193, r21194, r21195, r21196, r21197, r21198, r21199, r21200, r21201, r21202, r21203, r21204, r21205, r21206, r21207, r21208, r21209, r21210, r21211, r21212, r21213, r21214, r21215;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21158);
        mpfr_init_set_str(r21159, "1.0686035838302045e-288", 10, MPFR_RNDN);
        mpfr_init(r21160);
        mpfr_init(r21161);
        mpfr_init(r21162);
        mpfr_init_set_str(r21163, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21164, "2", 10, MPFR_RNDN);
        mpfr_init(r21165);
        mpfr_init(r21166);
        mpfr_init(r21167);
        mpfr_init(r21168);
        mpfr_init(r21169);
        mpfr_init(r21170);
        mpfr_init(r21171);
        mpfr_init(r21172);
        mpfr_init(r21173);
        mpfr_init(r21174);
        mpfr_init(r21175);
        mpfr_init(r21176);
        mpfr_init(r21177);
        mpfr_init(r21178);
        mpfr_init(r21179);
        mpfr_init(r21180);
        mpfr_init(r21181);
        mpfr_init(r21182);
        mpfr_init(r21183);
        mpfr_init_set_str(r21184, "2.155516528760191e-24", 10, MPFR_RNDN);
        mpfr_init(r21185);
        mpfr_init(r21186);
        mpfr_init(r21187);
        mpfr_init(r21188);
        mpfr_init(r21189);
        mpfr_init(r21190);
        mpfr_init(r21191);
        mpfr_init_set_str(r21192, "4.1646698243649156e+57", 10, MPFR_RNDN);
        mpfr_init(r21193);
        mpfr_init(r21194);
        mpfr_init(r21195);
        mpfr_init(r21196);
        mpfr_init(r21197);
        mpfr_init(r21198);
        mpfr_init(r21199);
        mpfr_init(r21200);
        mpfr_init(r21201);
        mpfr_init(r21202);
        mpfr_init(r21203);
        mpfr_init(r21204);
        mpfr_init(r21205);
        mpfr_init(r21206);
        mpfr_init(r21207);
        mpfr_init(r21208);
        mpfr_init(r21209);
        mpfr_init(r21210);
        mpfr_init(r21211);
        mpfr_init(r21212);
        mpfr_init(r21213);
        mpfr_init(r21214);
        mpfr_init(r21215);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21158, d, MPFR_RNDN);
        ;
        mpfr_set_si(r21160, mpfr_cmp(r21158, r21159) <= 0, MPFR_RNDN);
        mpfr_set_d(r21161, h, MPFR_RNDN);
        mpfr_div(r21162, r21158, r21161, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21165, r21163, r21164, MPFR_RNDN);
        mpfr_pow(r21166, r21162, r21165, MPFR_RNDN);
        mpfr_set_d(r21167, l, MPFR_RNDN);
        mpfr_div(r21168, r21158, r21167, MPFR_RNDN);
        mpfr_pow(r21169, r21168, r21165, MPFR_RNDN);
        mpfr_mul(r21170, r21166, r21169, MPFR_RNDN);
        mpfr_sqrt(r21171, r21165, MPFR_RNDN);
        mpfr_set_d(r21172, M, MPFR_RNDN);
        mpfr_set_d(r21173, D, MPFR_RNDN);
        mpfr_mul(r21174, r21172, r21173, MPFR_RNDN);
        mpfr_mul(r21175, r21164, r21158, MPFR_RNDN);
        mpfr_div(r21176, r21174, r21175, MPFR_RNDN);
        mpfr_mul(r21177, r21171, r21176, MPFR_RNDN);
        mpfr_div(r21178, r21161, r21167, MPFR_RNDN);
        mpfr_sqrt(r21179, r21178, MPFR_RNDN);
        mpfr_mul(r21180, r21177, r21179, MPFR_RNDN);
        mpfr_sqr(r21181, r21180, MPFR_RNDN);
        mpfr_sub(r21182, r21163, r21181, MPFR_RNDN);
        mpfr_mul(r21183, r21170, r21182, MPFR_RNDN);
        ;
        mpfr_set_si(r21185, mpfr_cmp(r21158, r21184) <= 0, MPFR_RNDN);
        mpfr_pow(r21186, r21158, r21165, MPFR_RNDN);
        mpfr_div(r21187, r21163, r21167, MPFR_RNDN);
        mpfr_pow(r21188, r21187, r21165, MPFR_RNDN);
        mpfr_mul(r21189, r21186, r21188, MPFR_RNDN);
        mpfr_mul(r21190, r21166, r21189, MPFR_RNDN);
        mpfr_mul(r21191, r21190, r21182, MPFR_RNDN);
        ;
        mpfr_set_si(r21193, mpfr_cmp(r21158, r21192) <= 0, MPFR_RNDN);
        mpfr_sqrt(r21194, r21166, MPFR_RNDN);
        mpfr_sqr(r21195, r21194, MPFR_RNDN);
        mpfr_mul(r21196, r21195, r21169, MPFR_RNDN);
        mpfr_sqrt(r21197, r21161, MPFR_RNDN);
        mpfr_sqrt(r21198, r21167, MPFR_RNDN);
        mpfr_div(r21199, r21197, r21198, MPFR_RNDN);
        mpfr_mul(r21200, r21177, r21199, MPFR_RNDN);
        mpfr_sqr(r21201, r21200, MPFR_RNDN);
        mpfr_sub(r21202, r21163, r21201, MPFR_RNDN);
        mpfr_mul(r21203, r21196, r21202, MPFR_RNDN);
        mpfr_div(r21204, r21163, r21161, MPFR_RNDN);
        mpfr_pow(r21205, r21204, r21165, MPFR_RNDN);
        mpfr_mul(r21206, r21186, r21205, MPFR_RNDN);
        mpfr_mul(r21207, r21206, r21169, MPFR_RNDN);
        mpfr_sqr(r21208, r21176, MPFR_RNDN);
        mpfr_mul(r21209, r21165, r21208, MPFR_RNDN);
        mpfr_mul(r21210, r21209, r21178, MPFR_RNDN);
        mpfr_sub(r21211, r21163, r21210, MPFR_RNDN);
        mpfr_mul(r21212, r21207, r21211, MPFR_RNDN);
        if (mpfr_get_si(r21193, MPFR_RNDN)) { mpfr_set(r21213, r21203, MPFR_RNDN); } else { mpfr_set(r21213, r21212, MPFR_RNDN); };
        if (mpfr_get_si(r21185, MPFR_RNDN)) { mpfr_set(r21214, r21191, MPFR_RNDN); } else { mpfr_set(r21214, r21213, MPFR_RNDN); };
        if (mpfr_get_si(r21160, MPFR_RNDN)) { mpfr_set(r21215, r21183, MPFR_RNDN); } else { mpfr_set(r21215, r21214, MPFR_RNDN); };
        return mpfr_get_d(r21215, MPFR_RNDN);
}

