#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 r31995 = d;
        float r31996 = h;
        float r31997 = r31995 / r31996;
        float r31998 = 1;
        float r31999 = 2;
        float r32000 = r31998 / r31999;
        float r32001 = pow(r31997, r32000);
        float r32002 = l;
        float r32003 = r31995 / r32002;
        float r32004 = pow(r32003, r32000);
        float r32005 = r32001 * r32004;
        float r32006 = M;
        float r32007 = D;
        float r32008 = r32006 * r32007;
        float r32009 = r31999 * r31995;
        float r32010 = r32008 / r32009;
        float r32011 = pow(r32010, r31999);
        float r32012 = r32000 * r32011;
        float r32013 = r31996 / r32002;
        float r32014 = r32012 * r32013;
        float r32015 = r31998 - r32014;
        float r32016 = r32005 * r32015;
        return r32016;
}

double f_id(double d, double h, double l, double M, double D) {
        double r32017 = d;
        double r32018 = h;
        double r32019 = r32017 / r32018;
        double r32020 = 1;
        double r32021 = 2;
        double r32022 = r32020 / r32021;
        double r32023 = pow(r32019, r32022);
        double r32024 = l;
        double r32025 = r32017 / r32024;
        double r32026 = pow(r32025, r32022);
        double r32027 = r32023 * r32026;
        double r32028 = M;
        double r32029 = D;
        double r32030 = r32028 * r32029;
        double r32031 = r32021 * r32017;
        double r32032 = r32030 / r32031;
        double r32033 = pow(r32032, r32021);
        double r32034 = r32022 * r32033;
        double r32035 = r32018 / r32024;
        double r32036 = r32034 * r32035;
        double r32037 = r32020 - r32036;
        double r32038 = r32027 * r32037;
        return r32038;
}


double f_of(float d, float h, float l, float M, float D) {
        float r32039 = l;
        float r32040 = 1.1752293688657991e-300;
        bool r32041 = r32039 <= r32040;
        float r32042 = d;
        float r32043 = h;
        float r32044 = r32042 / r32043;
        float r32045 = cbrt(r32044);
        float r32046 = r32045 * r32045;
        float r32047 = 1;
        float r32048 = 2;
        float r32049 = r32047 / r32048;
        float r32050 = pow(r32046, r32049);
        float r32051 = cbrt(r32042);
        float r32052 = r32047 / r32043;
        float r32053 = cbrt(r32052);
        float r32054 = r32051 * r32053;
        float r32055 = pow(r32054, r32049);
        float r32056 = r32050 * r32055;
        float r32057 = r32042 / r32039;
        float r32058 = pow(r32057, r32049);
        float r32059 = r32056 * r32058;
        float r32060 = M;
        float r32061 = D;
        float r32062 = r32060 * r32061;
        float r32063 = r32048 * r32042;
        float r32064 = r32062 / r32063;
        float r32065 = pow(r32064, r32048);
        float r32066 = r32047 * r32065;
        float r32067 = r32066 * r32043;
        float r32068 = r32048 * r32039;
        float r32069 = r32067 / r32068;
        float r32070 = r32047 - r32069;
        float r32071 = r32059 * r32070;
        float r32072 = 4.16807317627252e-141;
        bool r32073 = r32039 <= r32072;
        float r32074 = pow(r32045, r32049);
        float r32075 = r32050 * r32074;
        float r32076 = pow(r32042, r32049);
        float r32077 = r32047 / r32039;
        float r32078 = pow(r32077, r32049);
        float r32079 = r32076 * r32078;
        float r32080 = r32075 * r32079;
        float r32081 = r32080 * r32070;
        float r32082 = pow(r32052, r32049);
        float r32083 = r32076 * r32082;
        float r32084 = r32083 * r32058;
        float r32085 = r32084 * r32070;
        float r32086 = r32073 ? r32081 : r32085;
        float r32087 = r32041 ? r32071 : r32086;
        return r32087;
}

double f_od(double d, double h, double l, double M, double D) {
        double r32088 = l;
        double r32089 = 1.1752293688657991e-300;
        bool r32090 = r32088 <= r32089;
        double r32091 = d;
        double r32092 = h;
        double r32093 = r32091 / r32092;
        double r32094 = cbrt(r32093);
        double r32095 = r32094 * r32094;
        double r32096 = 1;
        double r32097 = 2;
        double r32098 = r32096 / r32097;
        double r32099 = pow(r32095, r32098);
        double r32100 = cbrt(r32091);
        double r32101 = r32096 / r32092;
        double r32102 = cbrt(r32101);
        double r32103 = r32100 * r32102;
        double r32104 = pow(r32103, r32098);
        double r32105 = r32099 * r32104;
        double r32106 = r32091 / r32088;
        double r32107 = pow(r32106, r32098);
        double r32108 = r32105 * r32107;
        double r32109 = M;
        double r32110 = D;
        double r32111 = r32109 * r32110;
        double r32112 = r32097 * r32091;
        double r32113 = r32111 / r32112;
        double r32114 = pow(r32113, r32097);
        double r32115 = r32096 * r32114;
        double r32116 = r32115 * r32092;
        double r32117 = r32097 * r32088;
        double r32118 = r32116 / r32117;
        double r32119 = r32096 - r32118;
        double r32120 = r32108 * r32119;
        double r32121 = 4.16807317627252e-141;
        bool r32122 = r32088 <= r32121;
        double r32123 = pow(r32094, r32098);
        double r32124 = r32099 * r32123;
        double r32125 = pow(r32091, r32098);
        double r32126 = r32096 / r32088;
        double r32127 = pow(r32126, r32098);
        double r32128 = r32125 * r32127;
        double r32129 = r32124 * r32128;
        double r32130 = r32129 * r32119;
        double r32131 = pow(r32101, r32098);
        double r32132 = r32125 * r32131;
        double r32133 = r32132 * r32107;
        double r32134 = r32133 * r32119;
        double r32135 = r32122 ? r32130 : r32134;
        double r32136 = r32090 ? r32120 : r32135;
        return r32136;
}

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 r32137, r32138, r32139, r32140, r32141, r32142, r32143, r32144, r32145, r32146, r32147, r32148, r32149, r32150, r32151, r32152, r32153, r32154, r32155, r32156, r32157, r32158;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r32137);
        mpfr_init(r32138);
        mpfr_init(r32139);
        mpfr_init_set_str(r32140, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32141, "2", 10, MPFR_RNDN);
        mpfr_init(r32142);
        mpfr_init(r32143);
        mpfr_init(r32144);
        mpfr_init(r32145);
        mpfr_init(r32146);
        mpfr_init(r32147);
        mpfr_init(r32148);
        mpfr_init(r32149);
        mpfr_init(r32150);
        mpfr_init(r32151);
        mpfr_init(r32152);
        mpfr_init(r32153);
        mpfr_init(r32154);
        mpfr_init(r32155);
        mpfr_init(r32156);
        mpfr_init(r32157);
        mpfr_init(r32158);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r32137, d, MPFR_RNDN);
        mpfr_set_d(r32138, h, MPFR_RNDN);
        mpfr_div(r32139, r32137, r32138, MPFR_RNDN);
        ;
        ;
        mpfr_div(r32142, r32140, r32141, MPFR_RNDN);
        mpfr_pow(r32143, r32139, r32142, MPFR_RNDN);
        mpfr_set_d(r32144, l, MPFR_RNDN);
        mpfr_div(r32145, r32137, r32144, MPFR_RNDN);
        mpfr_pow(r32146, r32145, r32142, MPFR_RNDN);
        mpfr_mul(r32147, r32143, r32146, MPFR_RNDN);
        mpfr_set_d(r32148, M, MPFR_RNDN);
        mpfr_set_d(r32149, D, MPFR_RNDN);
        mpfr_mul(r32150, r32148, r32149, MPFR_RNDN);
        mpfr_mul(r32151, r32141, r32137, MPFR_RNDN);
        mpfr_div(r32152, r32150, r32151, MPFR_RNDN);
        mpfr_pow(r32153, r32152, r32141, MPFR_RNDN);
        mpfr_mul(r32154, r32142, r32153, MPFR_RNDN);
        mpfr_div(r32155, r32138, r32144, MPFR_RNDN);
        mpfr_mul(r32156, r32154, r32155, MPFR_RNDN);
        mpfr_sub(r32157, r32140, r32156, MPFR_RNDN);
        mpfr_mul(r32158, r32147, r32157, MPFR_RNDN);
        return mpfr_get_d(r32158, MPFR_RNDN);
}

static mpfr_t r32159, r32160, r32161, r32162, r32163, r32164, r32165, r32166, r32167, r32168, r32169, r32170, r32171, r32172, r32173, r32174, r32175, r32176, r32177, r32178, r32179, r32180, r32181, r32182, r32183, r32184, r32185, r32186, r32187, r32188, r32189, r32190, r32191, r32192, r32193, r32194, r32195, r32196, r32197, r32198, r32199, r32200, r32201, r32202, r32203, r32204, r32205, r32206, r32207;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32159);
        mpfr_init_set_str(r32160, "1.1752293688657991e-300", 10, MPFR_RNDN);
        mpfr_init(r32161);
        mpfr_init(r32162);
        mpfr_init(r32163);
        mpfr_init(r32164);
        mpfr_init(r32165);
        mpfr_init(r32166);
        mpfr_init_set_str(r32167, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32168, "2", 10, MPFR_RNDN);
        mpfr_init(r32169);
        mpfr_init(r32170);
        mpfr_init(r32171);
        mpfr_init(r32172);
        mpfr_init(r32173);
        mpfr_init(r32174);
        mpfr_init(r32175);
        mpfr_init(r32176);
        mpfr_init(r32177);
        mpfr_init(r32178);
        mpfr_init(r32179);
        mpfr_init(r32180);
        mpfr_init(r32181);
        mpfr_init(r32182);
        mpfr_init(r32183);
        mpfr_init(r32184);
        mpfr_init(r32185);
        mpfr_init(r32186);
        mpfr_init(r32187);
        mpfr_init(r32188);
        mpfr_init(r32189);
        mpfr_init(r32190);
        mpfr_init(r32191);
        mpfr_init_set_str(r32192, "4.16807317627252e-141", 10, MPFR_RNDN);
        mpfr_init(r32193);
        mpfr_init(r32194);
        mpfr_init(r32195);
        mpfr_init(r32196);
        mpfr_init(r32197);
        mpfr_init(r32198);
        mpfr_init(r32199);
        mpfr_init(r32200);
        mpfr_init(r32201);
        mpfr_init(r32202);
        mpfr_init(r32203);
        mpfr_init(r32204);
        mpfr_init(r32205);
        mpfr_init(r32206);
        mpfr_init(r32207);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r32159, l, MPFR_RNDN);
        ;
        mpfr_set_si(r32161, mpfr_cmp(r32159, r32160) <= 0, MPFR_RNDN);
        mpfr_set_d(r32162, d, MPFR_RNDN);
        mpfr_set_d(r32163, h, MPFR_RNDN);
        mpfr_div(r32164, r32162, r32163, MPFR_RNDN);
        mpfr_cbrt(r32165, r32164, MPFR_RNDN);
        mpfr_mul(r32166, r32165, r32165, MPFR_RNDN);
        ;
        ;
        mpfr_div(r32169, r32167, r32168, MPFR_RNDN);
        mpfr_pow(r32170, r32166, r32169, MPFR_RNDN);
        mpfr_cbrt(r32171, r32162, MPFR_RNDN);
        mpfr_div(r32172, r32167, r32163, MPFR_RNDN);
        mpfr_cbrt(r32173, r32172, MPFR_RNDN);
        mpfr_mul(r32174, r32171, r32173, MPFR_RNDN);
        mpfr_pow(r32175, r32174, r32169, MPFR_RNDN);
        mpfr_mul(r32176, r32170, r32175, MPFR_RNDN);
        mpfr_div(r32177, r32162, r32159, MPFR_RNDN);
        mpfr_pow(r32178, r32177, r32169, MPFR_RNDN);
        mpfr_mul(r32179, r32176, r32178, MPFR_RNDN);
        mpfr_set_d(r32180, M, MPFR_RNDN);
        mpfr_set_d(r32181, D, MPFR_RNDN);
        mpfr_mul(r32182, r32180, r32181, MPFR_RNDN);
        mpfr_mul(r32183, r32168, r32162, MPFR_RNDN);
        mpfr_div(r32184, r32182, r32183, MPFR_RNDN);
        mpfr_pow(r32185, r32184, r32168, MPFR_RNDN);
        mpfr_mul(r32186, r32167, r32185, MPFR_RNDN);
        mpfr_mul(r32187, r32186, r32163, MPFR_RNDN);
        mpfr_mul(r32188, r32168, r32159, MPFR_RNDN);
        mpfr_div(r32189, r32187, r32188, MPFR_RNDN);
        mpfr_sub(r32190, r32167, r32189, MPFR_RNDN);
        mpfr_mul(r32191, r32179, r32190, MPFR_RNDN);
        ;
        mpfr_set_si(r32193, mpfr_cmp(r32159, r32192) <= 0, MPFR_RNDN);
        mpfr_pow(r32194, r32165, r32169, MPFR_RNDN);
        mpfr_mul(r32195, r32170, r32194, MPFR_RNDN);
        mpfr_pow(r32196, r32162, r32169, MPFR_RNDN);
        mpfr_div(r32197, r32167, r32159, MPFR_RNDN);
        mpfr_pow(r32198, r32197, r32169, MPFR_RNDN);
        mpfr_mul(r32199, r32196, r32198, MPFR_RNDN);
        mpfr_mul(r32200, r32195, r32199, MPFR_RNDN);
        mpfr_mul(r32201, r32200, r32190, MPFR_RNDN);
        mpfr_pow(r32202, r32172, r32169, MPFR_RNDN);
        mpfr_mul(r32203, r32196, r32202, MPFR_RNDN);
        mpfr_mul(r32204, r32203, r32178, MPFR_RNDN);
        mpfr_mul(r32205, r32204, r32190, MPFR_RNDN);
        if (mpfr_get_si(r32193, MPFR_RNDN)) { mpfr_set(r32206, r32201, MPFR_RNDN); } else { mpfr_set(r32206, r32205, MPFR_RNDN); };
        if (mpfr_get_si(r32161, MPFR_RNDN)) { mpfr_set(r32207, r32191, MPFR_RNDN); } else { mpfr_set(r32207, r32206, MPFR_RNDN); };
        return mpfr_get_d(r32207, MPFR_RNDN);
}

static mpfr_t r32208, r32209, r32210, r32211, r32212, r32213, r32214, r32215, r32216, r32217, r32218, r32219, r32220, r32221, r32222, r32223, r32224, r32225, r32226, r32227, r32228, r32229, r32230, r32231, r32232, r32233, r32234, r32235, r32236, r32237, r32238, r32239, r32240, r32241, r32242, r32243, r32244, r32245, r32246, r32247, r32248, r32249, r32250, r32251, r32252, r32253, r32254, r32255, r32256;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32208);
        mpfr_init_set_str(r32209, "1.1752293688657991e-300", 10, MPFR_RNDN);
        mpfr_init(r32210);
        mpfr_init(r32211);
        mpfr_init(r32212);
        mpfr_init(r32213);
        mpfr_init(r32214);
        mpfr_init(r32215);
        mpfr_init_set_str(r32216, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32217, "2", 10, MPFR_RNDN);
        mpfr_init(r32218);
        mpfr_init(r32219);
        mpfr_init(r32220);
        mpfr_init(r32221);
        mpfr_init(r32222);
        mpfr_init(r32223);
        mpfr_init(r32224);
        mpfr_init(r32225);
        mpfr_init(r32226);
        mpfr_init(r32227);
        mpfr_init(r32228);
        mpfr_init(r32229);
        mpfr_init(r32230);
        mpfr_init(r32231);
        mpfr_init(r32232);
        mpfr_init(r32233);
        mpfr_init(r32234);
        mpfr_init(r32235);
        mpfr_init(r32236);
        mpfr_init(r32237);
        mpfr_init(r32238);
        mpfr_init(r32239);
        mpfr_init(r32240);
        mpfr_init_set_str(r32241, "4.16807317627252e-141", 10, MPFR_RNDN);
        mpfr_init(r32242);
        mpfr_init(r32243);
        mpfr_init(r32244);
        mpfr_init(r32245);
        mpfr_init(r32246);
        mpfr_init(r32247);
        mpfr_init(r32248);
        mpfr_init(r32249);
        mpfr_init(r32250);
        mpfr_init(r32251);
        mpfr_init(r32252);
        mpfr_init(r32253);
        mpfr_init(r32254);
        mpfr_init(r32255);
        mpfr_init(r32256);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r32208, l, MPFR_RNDN);
        ;
        mpfr_set_si(r32210, mpfr_cmp(r32208, r32209) <= 0, MPFR_RNDN);
        mpfr_set_d(r32211, d, MPFR_RNDN);
        mpfr_set_d(r32212, h, MPFR_RNDN);
        mpfr_div(r32213, r32211, r32212, MPFR_RNDN);
        mpfr_cbrt(r32214, r32213, MPFR_RNDN);
        mpfr_mul(r32215, r32214, r32214, MPFR_RNDN);
        ;
        ;
        mpfr_div(r32218, r32216, r32217, MPFR_RNDN);
        mpfr_pow(r32219, r32215, r32218, MPFR_RNDN);
        mpfr_cbrt(r32220, r32211, MPFR_RNDN);
        mpfr_div(r32221, r32216, r32212, MPFR_RNDN);
        mpfr_cbrt(r32222, r32221, MPFR_RNDN);
        mpfr_mul(r32223, r32220, r32222, MPFR_RNDN);
        mpfr_pow(r32224, r32223, r32218, MPFR_RNDN);
        mpfr_mul(r32225, r32219, r32224, MPFR_RNDN);
        mpfr_div(r32226, r32211, r32208, MPFR_RNDN);
        mpfr_pow(r32227, r32226, r32218, MPFR_RNDN);
        mpfr_mul(r32228, r32225, r32227, MPFR_RNDN);
        mpfr_set_d(r32229, M, MPFR_RNDN);
        mpfr_set_d(r32230, D, MPFR_RNDN);
        mpfr_mul(r32231, r32229, r32230, MPFR_RNDN);
        mpfr_mul(r32232, r32217, r32211, MPFR_RNDN);
        mpfr_div(r32233, r32231, r32232, MPFR_RNDN);
        mpfr_pow(r32234, r32233, r32217, MPFR_RNDN);
        mpfr_mul(r32235, r32216, r32234, MPFR_RNDN);
        mpfr_mul(r32236, r32235, r32212, MPFR_RNDN);
        mpfr_mul(r32237, r32217, r32208, MPFR_RNDN);
        mpfr_div(r32238, r32236, r32237, MPFR_RNDN);
        mpfr_sub(r32239, r32216, r32238, MPFR_RNDN);
        mpfr_mul(r32240, r32228, r32239, MPFR_RNDN);
        ;
        mpfr_set_si(r32242, mpfr_cmp(r32208, r32241) <= 0, MPFR_RNDN);
        mpfr_pow(r32243, r32214, r32218, MPFR_RNDN);
        mpfr_mul(r32244, r32219, r32243, MPFR_RNDN);
        mpfr_pow(r32245, r32211, r32218, MPFR_RNDN);
        mpfr_div(r32246, r32216, r32208, MPFR_RNDN);
        mpfr_pow(r32247, r32246, r32218, MPFR_RNDN);
        mpfr_mul(r32248, r32245, r32247, MPFR_RNDN);
        mpfr_mul(r32249, r32244, r32248, MPFR_RNDN);
        mpfr_mul(r32250, r32249, r32239, MPFR_RNDN);
        mpfr_pow(r32251, r32221, r32218, MPFR_RNDN);
        mpfr_mul(r32252, r32245, r32251, MPFR_RNDN);
        mpfr_mul(r32253, r32252, r32227, MPFR_RNDN);
        mpfr_mul(r32254, r32253, r32239, MPFR_RNDN);
        if (mpfr_get_si(r32242, MPFR_RNDN)) { mpfr_set(r32255, r32250, MPFR_RNDN); } else { mpfr_set(r32255, r32254, MPFR_RNDN); };
        if (mpfr_get_si(r32210, MPFR_RNDN)) { mpfr_set(r32256, r32240, MPFR_RNDN); } else { mpfr_set(r32256, r32255, MPFR_RNDN); };
        return mpfr_get_d(r32256, MPFR_RNDN);
}

