#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 r20886 = d;
        float r20887 = h;
        float r20888 = r20886 / r20887;
        float r20889 = 1.0f;
        float r20890 = 2.0f;
        float r20891 = r20889 / r20890;
        float r20892 = pow(r20888, r20891);
        float r20893 = l;
        float r20894 = r20886 / r20893;
        float r20895 = pow(r20894, r20891);
        float r20896 = r20892 * r20895;
        float r20897 = M;
        float r20898 = D;
        float r20899 = r20897 * r20898;
        float r20900 = r20890 * r20886;
        float r20901 = r20899 / r20900;
        float r20902 = r20901 * r20901;
        float r20903 = r20891 * r20902;
        float r20904 = r20887 / r20893;
        float r20905 = r20903 * r20904;
        float r20906 = r20889 - r20905;
        float r20907 = r20896 * r20906;
        return r20907;
}

double f_id(double d, double h, double l, double M, double D) {
        double r20908 = d;
        double r20909 = h;
        double r20910 = r20908 / r20909;
        double r20911 = 1.0;
        double r20912 = 2.0;
        double r20913 = r20911 / r20912;
        double r20914 = pow(r20910, r20913);
        double r20915 = l;
        double r20916 = r20908 / r20915;
        double r20917 = pow(r20916, r20913);
        double r20918 = r20914 * r20917;
        double r20919 = M;
        double r20920 = D;
        double r20921 = r20919 * r20920;
        double r20922 = r20912 * r20908;
        double r20923 = r20921 / r20922;
        double r20924 = r20923 * r20923;
        double r20925 = r20913 * r20924;
        double r20926 = r20909 / r20915;
        double r20927 = r20925 * r20926;
        double r20928 = r20911 - r20927;
        double r20929 = r20918 * r20928;
        return r20929;
}


double f_of(float d, float h, float l, float M, float D) {
        float r20930 = d;
        float r20931 = 1.0686035838302045e-288f;
        bool r20932 = r20930 <= r20931;
        float r20933 = h;
        float r20934 = r20930 / r20933;
        float r20935 = 1.0f;
        float r20936 = 2.0f;
        float r20937 = r20935 / r20936;
        float r20938 = pow(r20934, r20937);
        float r20939 = l;
        float r20940 = r20930 / r20939;
        float r20941 = pow(r20940, r20937);
        float r20942 = r20938 * r20941;
        float r20943 = sqrt(r20937);
        float r20944 = M;
        float r20945 = D;
        float r20946 = r20944 * r20945;
        float r20947 = r20936 * r20930;
        float r20948 = r20946 / r20947;
        float r20949 = r20943 * r20948;
        float r20950 = r20933 / r20939;
        float r20951 = sqrt(r20950);
        float r20952 = r20949 * r20951;
        float r20953 = r20952 * r20952;
        float r20954 = r20935 - r20953;
        float r20955 = r20942 * r20954;
        float r20956 = 2.155516528760191e-24f;
        bool r20957 = r20930 <= r20956;
        float r20958 = pow(r20930, r20937);
        float r20959 = r20935 / r20939;
        float r20960 = pow(r20959, r20937);
        float r20961 = r20958 * r20960;
        float r20962 = r20938 * r20961;
        float r20963 = r20962 * r20954;
        float r20964 = 4.1646698243649156e+57f;
        bool r20965 = r20930 <= r20964;
        float r20966 = sqrt(r20938);
        float r20967 = r20966 * r20966;
        float r20968 = r20967 * r20941;
        float r20969 = sqrt(r20933);
        float r20970 = sqrt(r20939);
        float r20971 = r20969 / r20970;
        float r20972 = r20949 * r20971;
        float r20973 = r20972 * r20972;
        float r20974 = r20935 - r20973;
        float r20975 = r20968 * r20974;
        float r20976 = r20935 / r20933;
        float r20977 = pow(r20976, r20937);
        float r20978 = r20958 * r20977;
        float r20979 = r20978 * r20941;
        float r20980 = r20948 * r20948;
        float r20981 = r20937 * r20980;
        float r20982 = r20981 * r20950;
        float r20983 = r20935 - r20982;
        float r20984 = r20979 * r20983;
        float r20985 = r20965 ? r20975 : r20984;
        float r20986 = r20957 ? r20963 : r20985;
        float r20987 = r20932 ? r20955 : r20986;
        return r20987;
}

double f_od(double d, double h, double l, double M, double D) {
        double r20988 = d;
        double r20989 = 1.0686035838302045e-288;
        bool r20990 = r20988 <= r20989;
        double r20991 = h;
        double r20992 = r20988 / r20991;
        double r20993 = 1.0;
        double r20994 = 2.0;
        double r20995 = r20993 / r20994;
        double r20996 = pow(r20992, r20995);
        double r20997 = l;
        double r20998 = r20988 / r20997;
        double r20999 = pow(r20998, r20995);
        double r21000 = r20996 * r20999;
        double r21001 = sqrt(r20995);
        double r21002 = M;
        double r21003 = D;
        double r21004 = r21002 * r21003;
        double r21005 = r20994 * r20988;
        double r21006 = r21004 / r21005;
        double r21007 = r21001 * r21006;
        double r21008 = r20991 / r20997;
        double r21009 = sqrt(r21008);
        double r21010 = r21007 * r21009;
        double r21011 = r21010 * r21010;
        double r21012 = r20993 - r21011;
        double r21013 = r21000 * r21012;
        double r21014 = 2.155516528760191e-24;
        bool r21015 = r20988 <= r21014;
        double r21016 = pow(r20988, r20995);
        double r21017 = r20993 / r20997;
        double r21018 = pow(r21017, r20995);
        double r21019 = r21016 * r21018;
        double r21020 = r20996 * r21019;
        double r21021 = r21020 * r21012;
        double r21022 = 4.1646698243649156e+57;
        bool r21023 = r20988 <= r21022;
        double r21024 = sqrt(r20996);
        double r21025 = r21024 * r21024;
        double r21026 = r21025 * r20999;
        double r21027 = sqrt(r20991);
        double r21028 = sqrt(r20997);
        double r21029 = r21027 / r21028;
        double r21030 = r21007 * r21029;
        double r21031 = r21030 * r21030;
        double r21032 = r20993 - r21031;
        double r21033 = r21026 * r21032;
        double r21034 = r20993 / r20991;
        double r21035 = pow(r21034, r20995);
        double r21036 = r21016 * r21035;
        double r21037 = r21036 * r20999;
        double r21038 = r21006 * r21006;
        double r21039 = r20995 * r21038;
        double r21040 = r21039 * r21008;
        double r21041 = r20993 - r21040;
        double r21042 = r21037 * r21041;
        double r21043 = r21023 ? r21033 : r21042;
        double r21044 = r21015 ? r21021 : r21043;
        double r21045 = r20990 ? r21013 : r21044;
        return r21045;
}

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 r21046, r21047, r21048, r21049, r21050, r21051, r21052, r21053, r21054, r21055, r21056, r21057, r21058, r21059, r21060, r21061, r21062, r21063, r21064, r21065, r21066, r21067;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21046);
        mpfr_init(r21047);
        mpfr_init(r21048);
        mpfr_init_set_str(r21049, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21050, "2", 10, MPFR_RNDN);
        mpfr_init(r21051);
        mpfr_init(r21052);
        mpfr_init(r21053);
        mpfr_init(r21054);
        mpfr_init(r21055);
        mpfr_init(r21056);
        mpfr_init(r21057);
        mpfr_init(r21058);
        mpfr_init(r21059);
        mpfr_init(r21060);
        mpfr_init(r21061);
        mpfr_init(r21062);
        mpfr_init(r21063);
        mpfr_init(r21064);
        mpfr_init(r21065);
        mpfr_init(r21066);
        mpfr_init(r21067);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21046, d, MPFR_RNDN);
        mpfr_set_d(r21047, h, MPFR_RNDN);
        mpfr_div(r21048, r21046, r21047, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21051, r21049, r21050, MPFR_RNDN);
        mpfr_pow(r21052, r21048, r21051, MPFR_RNDN);
        mpfr_set_d(r21053, l, MPFR_RNDN);
        mpfr_div(r21054, r21046, r21053, MPFR_RNDN);
        mpfr_pow(r21055, r21054, r21051, MPFR_RNDN);
        mpfr_mul(r21056, r21052, r21055, MPFR_RNDN);
        mpfr_set_d(r21057, M, MPFR_RNDN);
        mpfr_set_d(r21058, D, MPFR_RNDN);
        mpfr_mul(r21059, r21057, r21058, MPFR_RNDN);
        mpfr_mul(r21060, r21050, r21046, MPFR_RNDN);
        mpfr_div(r21061, r21059, r21060, MPFR_RNDN);
        mpfr_sqr(r21062, r21061, MPFR_RNDN);
        mpfr_mul(r21063, r21051, r21062, MPFR_RNDN);
        mpfr_div(r21064, r21047, r21053, MPFR_RNDN);
        mpfr_mul(r21065, r21063, r21064, MPFR_RNDN);
        mpfr_sub(r21066, r21049, r21065, MPFR_RNDN);
        mpfr_mul(r21067, r21056, r21066, MPFR_RNDN);
        return mpfr_get_d(r21067, MPFR_RNDN);
}

static mpfr_t r21068, r21069, r21070, r21071, r21072, r21073, r21074, r21075, r21076, r21077, r21078, r21079, r21080, r21081, r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089, r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21068);
        mpfr_init_set_str(r21069, "1.0686035838302045e-288", 10, MPFR_RNDN);
        mpfr_init(r21070);
        mpfr_init(r21071);
        mpfr_init(r21072);
        mpfr_init_set_str(r21073, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21074, "2", 10, MPFR_RNDN);
        mpfr_init(r21075);
        mpfr_init(r21076);
        mpfr_init(r21077);
        mpfr_init(r21078);
        mpfr_init(r21079);
        mpfr_init(r21080);
        mpfr_init(r21081);
        mpfr_init(r21082);
        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_set_str(r21094, "2.155516528760191e-24", 10, MPFR_RNDN);
        mpfr_init(r21095);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init(r21098);
        mpfr_init(r21099);
        mpfr_init(r21100);
        mpfr_init(r21101);
        mpfr_init_set_str(r21102, "4.1646698243649156e+57", 10, MPFR_RNDN);
        mpfr_init(r21103);
        mpfr_init(r21104);
        mpfr_init(r21105);
        mpfr_init(r21106);
        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);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21068, d, MPFR_RNDN);
        ;
        mpfr_set_si(r21070, mpfr_cmp(r21068, r21069) <= 0, MPFR_RNDN);
        mpfr_set_d(r21071, h, MPFR_RNDN);
        mpfr_div(r21072, r21068, r21071, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21075, r21073, r21074, MPFR_RNDN);
        mpfr_pow(r21076, r21072, r21075, MPFR_RNDN);
        mpfr_set_d(r21077, l, MPFR_RNDN);
        mpfr_div(r21078, r21068, r21077, MPFR_RNDN);
        mpfr_pow(r21079, r21078, r21075, MPFR_RNDN);
        mpfr_mul(r21080, r21076, r21079, MPFR_RNDN);
        mpfr_sqrt(r21081, r21075, MPFR_RNDN);
        mpfr_set_d(r21082, M, MPFR_RNDN);
        mpfr_set_d(r21083, D, MPFR_RNDN);
        mpfr_mul(r21084, r21082, r21083, MPFR_RNDN);
        mpfr_mul(r21085, r21074, r21068, MPFR_RNDN);
        mpfr_div(r21086, r21084, r21085, MPFR_RNDN);
        mpfr_mul(r21087, r21081, r21086, MPFR_RNDN);
        mpfr_div(r21088, r21071, r21077, MPFR_RNDN);
        mpfr_sqrt(r21089, r21088, MPFR_RNDN);
        mpfr_mul(r21090, r21087, r21089, MPFR_RNDN);
        mpfr_sqr(r21091, r21090, MPFR_RNDN);
        mpfr_sub(r21092, r21073, r21091, MPFR_RNDN);
        mpfr_mul(r21093, r21080, r21092, MPFR_RNDN);
        ;
        mpfr_set_si(r21095, mpfr_cmp(r21068, r21094) <= 0, MPFR_RNDN);
        mpfr_pow(r21096, r21068, r21075, MPFR_RNDN);
        mpfr_div(r21097, r21073, r21077, MPFR_RNDN);
        mpfr_pow(r21098, r21097, r21075, MPFR_RNDN);
        mpfr_mul(r21099, r21096, r21098, MPFR_RNDN);
        mpfr_mul(r21100, r21076, r21099, MPFR_RNDN);
        mpfr_mul(r21101, r21100, r21092, MPFR_RNDN);
        ;
        mpfr_set_si(r21103, mpfr_cmp(r21068, r21102) <= 0, MPFR_RNDN);
        mpfr_sqrt(r21104, r21076, MPFR_RNDN);
        mpfr_sqr(r21105, r21104, MPFR_RNDN);
        mpfr_mul(r21106, r21105, r21079, MPFR_RNDN);
        mpfr_sqrt(r21107, r21071, MPFR_RNDN);
        mpfr_sqrt(r21108, r21077, MPFR_RNDN);
        mpfr_div(r21109, r21107, r21108, MPFR_RNDN);
        mpfr_mul(r21110, r21087, r21109, MPFR_RNDN);
        mpfr_sqr(r21111, r21110, MPFR_RNDN);
        mpfr_sub(r21112, r21073, r21111, MPFR_RNDN);
        mpfr_mul(r21113, r21106, r21112, MPFR_RNDN);
        mpfr_div(r21114, r21073, r21071, MPFR_RNDN);
        mpfr_pow(r21115, r21114, r21075, MPFR_RNDN);
        mpfr_mul(r21116, r21096, r21115, MPFR_RNDN);
        mpfr_mul(r21117, r21116, r21079, MPFR_RNDN);
        mpfr_sqr(r21118, r21086, MPFR_RNDN);
        mpfr_mul(r21119, r21075, r21118, MPFR_RNDN);
        mpfr_mul(r21120, r21119, r21088, MPFR_RNDN);
        mpfr_sub(r21121, r21073, r21120, MPFR_RNDN);
        mpfr_mul(r21122, r21117, r21121, MPFR_RNDN);
        if (mpfr_get_si(r21103, MPFR_RNDN)) { mpfr_set(r21123, r21113, MPFR_RNDN); } else { mpfr_set(r21123, r21122, MPFR_RNDN); };
        if (mpfr_get_si(r21095, MPFR_RNDN)) { mpfr_set(r21124, r21101, MPFR_RNDN); } else { mpfr_set(r21124, r21123, MPFR_RNDN); };
        if (mpfr_get_si(r21070, MPFR_RNDN)) { mpfr_set(r21125, r21093, MPFR_RNDN); } else { mpfr_set(r21125, r21124, MPFR_RNDN); };
        return mpfr_get_d(r21125, MPFR_RNDN);
}

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21126);
        mpfr_init_set_str(r21127, "1.0686035838302045e-288", 10, MPFR_RNDN);
        mpfr_init(r21128);
        mpfr_init(r21129);
        mpfr_init(r21130);
        mpfr_init_set_str(r21131, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r21132, "2", 10, MPFR_RNDN);
        mpfr_init(r21133);
        mpfr_init(r21134);
        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_set_str(r21152, "2.155516528760191e-24", 10, MPFR_RNDN);
        mpfr_init(r21153);
        mpfr_init(r21154);
        mpfr_init(r21155);
        mpfr_init(r21156);
        mpfr_init(r21157);
        mpfr_init(r21158);
        mpfr_init(r21159);
        mpfr_init_set_str(r21160, "4.1646698243649156e+57", 10, MPFR_RNDN);
        mpfr_init(r21161);
        mpfr_init(r21162);
        mpfr_init(r21163);
        mpfr_init(r21164);
        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);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r21126, d, MPFR_RNDN);
        ;
        mpfr_set_si(r21128, mpfr_cmp(r21126, r21127) <= 0, MPFR_RNDN);
        mpfr_set_d(r21129, h, MPFR_RNDN);
        mpfr_div(r21130, r21126, r21129, MPFR_RNDN);
        ;
        ;
        mpfr_div(r21133, r21131, r21132, MPFR_RNDN);
        mpfr_pow(r21134, r21130, r21133, MPFR_RNDN);
        mpfr_set_d(r21135, l, MPFR_RNDN);
        mpfr_div(r21136, r21126, r21135, MPFR_RNDN);
        mpfr_pow(r21137, r21136, r21133, MPFR_RNDN);
        mpfr_mul(r21138, r21134, r21137, MPFR_RNDN);
        mpfr_sqrt(r21139, r21133, MPFR_RNDN);
        mpfr_set_d(r21140, M, MPFR_RNDN);
        mpfr_set_d(r21141, D, MPFR_RNDN);
        mpfr_mul(r21142, r21140, r21141, MPFR_RNDN);
        mpfr_mul(r21143, r21132, r21126, MPFR_RNDN);
        mpfr_div(r21144, r21142, r21143, MPFR_RNDN);
        mpfr_mul(r21145, r21139, r21144, MPFR_RNDN);
        mpfr_div(r21146, r21129, r21135, MPFR_RNDN);
        mpfr_sqrt(r21147, r21146, MPFR_RNDN);
        mpfr_mul(r21148, r21145, r21147, MPFR_RNDN);
        mpfr_sqr(r21149, r21148, MPFR_RNDN);
        mpfr_sub(r21150, r21131, r21149, MPFR_RNDN);
        mpfr_mul(r21151, r21138, r21150, MPFR_RNDN);
        ;
        mpfr_set_si(r21153, mpfr_cmp(r21126, r21152) <= 0, MPFR_RNDN);
        mpfr_pow(r21154, r21126, r21133, MPFR_RNDN);
        mpfr_div(r21155, r21131, r21135, MPFR_RNDN);
        mpfr_pow(r21156, r21155, r21133, MPFR_RNDN);
        mpfr_mul(r21157, r21154, r21156, MPFR_RNDN);
        mpfr_mul(r21158, r21134, r21157, MPFR_RNDN);
        mpfr_mul(r21159, r21158, r21150, MPFR_RNDN);
        ;
        mpfr_set_si(r21161, mpfr_cmp(r21126, r21160) <= 0, MPFR_RNDN);
        mpfr_sqrt(r21162, r21134, MPFR_RNDN);
        mpfr_sqr(r21163, r21162, MPFR_RNDN);
        mpfr_mul(r21164, r21163, r21137, MPFR_RNDN);
        mpfr_sqrt(r21165, r21129, MPFR_RNDN);
        mpfr_sqrt(r21166, r21135, MPFR_RNDN);
        mpfr_div(r21167, r21165, r21166, MPFR_RNDN);
        mpfr_mul(r21168, r21145, r21167, MPFR_RNDN);
        mpfr_sqr(r21169, r21168, MPFR_RNDN);
        mpfr_sub(r21170, r21131, r21169, MPFR_RNDN);
        mpfr_mul(r21171, r21164, r21170, MPFR_RNDN);
        mpfr_div(r21172, r21131, r21129, MPFR_RNDN);
        mpfr_pow(r21173, r21172, r21133, MPFR_RNDN);
        mpfr_mul(r21174, r21154, r21173, MPFR_RNDN);
        mpfr_mul(r21175, r21174, r21137, MPFR_RNDN);
        mpfr_sqr(r21176, r21144, MPFR_RNDN);
        mpfr_mul(r21177, r21133, r21176, MPFR_RNDN);
        mpfr_mul(r21178, r21177, r21146, MPFR_RNDN);
        mpfr_sub(r21179, r21131, r21178, MPFR_RNDN);
        mpfr_mul(r21180, r21175, r21179, MPFR_RNDN);
        if (mpfr_get_si(r21161, MPFR_RNDN)) { mpfr_set(r21181, r21171, MPFR_RNDN); } else { mpfr_set(r21181, r21180, MPFR_RNDN); };
        if (mpfr_get_si(r21153, MPFR_RNDN)) { mpfr_set(r21182, r21159, MPFR_RNDN); } else { mpfr_set(r21182, r21181, MPFR_RNDN); };
        if (mpfr_get_si(r21128, MPFR_RNDN)) { mpfr_set(r21183, r21151, MPFR_RNDN); } else { mpfr_set(r21183, r21182, MPFR_RNDN); };
        return mpfr_get_d(r21183, MPFR_RNDN);
}

