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

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

double f_if(float w0, float M, float D, float h, float l, float d) {
        float r25909 = w0;
        float r25910 = 1;
        float r25911 = M;
        float r25912 = D;
        float r25913 = r25911 * r25912;
        float r25914 = 2;
        float r25915 = d;
        float r25916 = r25914 * r25915;
        float r25917 = r25913 / r25916;
        float r25918 = pow(r25917, r25914);
        float r25919 = h;
        float r25920 = l;
        float r25921 = r25919 / r25920;
        float r25922 = r25918 * r25921;
        float r25923 = r25910 - r25922;
        float r25924 = sqrt(r25923);
        float r25925 = r25909 * r25924;
        return r25925;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r25926 = w0;
        double r25927 = 1;
        double r25928 = M;
        double r25929 = D;
        double r25930 = r25928 * r25929;
        double r25931 = 2;
        double r25932 = d;
        double r25933 = r25931 * r25932;
        double r25934 = r25930 / r25933;
        double r25935 = pow(r25934, r25931);
        double r25936 = h;
        double r25937 = l;
        double r25938 = r25936 / r25937;
        double r25939 = r25935 * r25938;
        double r25940 = r25927 - r25939;
        double r25941 = sqrt(r25940);
        double r25942 = r25926 * r25941;
        return r25942;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r25943 = w0;
        float r25944 = 1;
        float r25945 = M;
        float r25946 = D;
        float r25947 = r25945 * r25946;
        float r25948 = 2;
        float r25949 = d;
        float r25950 = r25948 * r25949;
        float r25951 = r25947 / r25950;
        float r25952 = r25944 / r25950;
        float r25953 = r25947 * r25952;
        float r25954 = h;
        float r25955 = r25953 * r25954;
        float r25956 = r25951 * r25955;
        float r25957 = l;
        float r25958 = r25944 / r25957;
        float r25959 = r25956 * r25958;
        float r25960 = r25944 - r25959;
        float r25961 = sqrt(r25960);
        float r25962 = r25943 * r25961;
        float r25963 = -2.881556634241017e+298;
        bool r25964 = r25962 <= r25963;
        float r25965 = r25945 / r25948;
        float r25966 = r25946 / r25949;
        float r25967 = -r25966;
        float r25968 = r25965 * r25967;
        float r25969 = r25945 / r25949;
        float r25970 = 1/2;
        float r25971 = r25970 * r25946;
        float r25972 = r25969 * r25971;
        float r25973 = r25954 / r25957;
        float r25974 = r25972 * r25973;
        float r25975 = fma(r25968, r25974, r25944);
        float r25976 = sqrt(r25975);
        float r25977 = r25943 * r25976;
        float r25978 = 1.5490384640270792e+303;
        bool r25979 = r25962 <= r25978;
        float r25980 = r25970 * r25945;
        float r25981 = -r25980;
        float r25982 = r25949 / r25946;
        float r25983 = r25981 / r25982;
        float r25984 = r25965 * r25966;
        float r25985 = r25973 * r25984;
        float r25986 = fma(r25983, r25985, r25944);
        float r25987 = sqrt(r25986);
        float r25988 = r25943 * r25987;
        float r25989 = r25979 ? r25962 : r25988;
        float r25990 = r25964 ? r25977 : r25989;
        return r25990;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r25991 = w0;
        double r25992 = 1;
        double r25993 = M;
        double r25994 = D;
        double r25995 = r25993 * r25994;
        double r25996 = 2;
        double r25997 = d;
        double r25998 = r25996 * r25997;
        double r25999 = r25995 / r25998;
        double r26000 = r25992 / r25998;
        double r26001 = r25995 * r26000;
        double r26002 = h;
        double r26003 = r26001 * r26002;
        double r26004 = r25999 * r26003;
        double r26005 = l;
        double r26006 = r25992 / r26005;
        double r26007 = r26004 * r26006;
        double r26008 = r25992 - r26007;
        double r26009 = sqrt(r26008);
        double r26010 = r25991 * r26009;
        double r26011 = -2.881556634241017e+298;
        bool r26012 = r26010 <= r26011;
        double r26013 = r25993 / r25996;
        double r26014 = r25994 / r25997;
        double r26015 = -r26014;
        double r26016 = r26013 * r26015;
        double r26017 = r25993 / r25997;
        double r26018 = 1/2;
        double r26019 = r26018 * r25994;
        double r26020 = r26017 * r26019;
        double r26021 = r26002 / r26005;
        double r26022 = r26020 * r26021;
        double r26023 = fma(r26016, r26022, r25992);
        double r26024 = sqrt(r26023);
        double r26025 = r25991 * r26024;
        double r26026 = 1.5490384640270792e+303;
        bool r26027 = r26010 <= r26026;
        double r26028 = r26018 * r25993;
        double r26029 = -r26028;
        double r26030 = r25997 / r25994;
        double r26031 = r26029 / r26030;
        double r26032 = r26013 * r26014;
        double r26033 = r26021 * r26032;
        double r26034 = fma(r26031, r26033, r25992);
        double r26035 = sqrt(r26034);
        double r26036 = r25991 * r26035;
        double r26037 = r26027 ? r26010 : r26036;
        double r26038 = r26012 ? r26025 : r26037;
        return r26038;
}

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 r26039, r26040, r26041, r26042, r26043, r26044, r26045, r26046, r26047, r26048, r26049, r26050, r26051, r26052, r26053, r26054, r26055;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r26039);
        mpfr_init_set_str(r26040, "1", 10, MPFR_RNDN);
        mpfr_init(r26041);
        mpfr_init(r26042);
        mpfr_init(r26043);
        mpfr_init_set_str(r26044, "2", 10, MPFR_RNDN);
        mpfr_init(r26045);
        mpfr_init(r26046);
        mpfr_init(r26047);
        mpfr_init(r26048);
        mpfr_init(r26049);
        mpfr_init(r26050);
        mpfr_init(r26051);
        mpfr_init(r26052);
        mpfr_init(r26053);
        mpfr_init(r26054);
        mpfr_init(r26055);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26039, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26041, M, MPFR_RNDN);
        mpfr_set_d(r26042, D, MPFR_RNDN);
        mpfr_mul(r26043, r26041, r26042, MPFR_RNDN);
        ;
        mpfr_set_d(r26045, d, MPFR_RNDN);
        mpfr_mul(r26046, r26044, r26045, MPFR_RNDN);
        mpfr_div(r26047, r26043, r26046, MPFR_RNDN);
        mpfr_pow(r26048, r26047, r26044, MPFR_RNDN);
        mpfr_set_d(r26049, h, MPFR_RNDN);
        mpfr_set_d(r26050, l, MPFR_RNDN);
        mpfr_div(r26051, r26049, r26050, MPFR_RNDN);
        mpfr_mul(r26052, r26048, r26051, MPFR_RNDN);
        mpfr_sub(r26053, r26040, r26052, MPFR_RNDN);
        mpfr_sqrt(r26054, r26053, MPFR_RNDN);
        mpfr_mul(r26055, r26039, r26054, MPFR_RNDN);
        return mpfr_get_d(r26055, MPFR_RNDN);
}

static mpfr_t r26056, r26057, r26058, r26059, r26060, r26061, r26062, r26063, r26064, r26065, r26066, r26067, r26068, r26069, r26070, r26071, r26072, r26073, r26074, r26075, r26076, r26077, r26078, r26079, r26080, r26081, r26082, r26083, r26084, r26085, r26086, r26087, r26088, r26089, r26090, r26091, r26092, r26093, r26094, r26095, r26096, r26097, r26098, r26099, r26100, r26101, r26102, r26103;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26056);
        mpfr_init_set_str(r26057, "1", 10, MPFR_RNDN);
        mpfr_init(r26058);
        mpfr_init(r26059);
        mpfr_init(r26060);
        mpfr_init_set_str(r26061, "2", 10, MPFR_RNDN);
        mpfr_init(r26062);
        mpfr_init(r26063);
        mpfr_init(r26064);
        mpfr_init(r26065);
        mpfr_init(r26066);
        mpfr_init(r26067);
        mpfr_init(r26068);
        mpfr_init(r26069);
        mpfr_init(r26070);
        mpfr_init(r26071);
        mpfr_init(r26072);
        mpfr_init(r26073);
        mpfr_init(r26074);
        mpfr_init(r26075);
        mpfr_init_set_str(r26076, "-2.881556634241017e+298", 10, MPFR_RNDN);
        mpfr_init(r26077);
        mpfr_init(r26078);
        mpfr_init(r26079);
        mpfr_init(r26080);
        mpfr_init(r26081);
        mpfr_init(r26082);
        mpfr_init_set_str(r26083, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26084);
        mpfr_init(r26085);
        mpfr_init(r26086);
        mpfr_init(r26087);
        mpfr_init(r26088);
        mpfr_init(r26089);
        mpfr_init(r26090);
        mpfr_init_set_str(r26091, "1.5490384640270792e+303", 10, MPFR_RNDN);
        mpfr_init(r26092);
        mpfr_init(r26093);
        mpfr_init(r26094);
        mpfr_init(r26095);
        mpfr_init(r26096);
        mpfr_init(r26097);
        mpfr_init(r26098);
        mpfr_init(r26099);
        mpfr_init(r26100);
        mpfr_init(r26101);
        mpfr_init(r26102);
        mpfr_init(r26103);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26056, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26058, M, MPFR_RNDN);
        mpfr_set_d(r26059, D, MPFR_RNDN);
        mpfr_mul(r26060, r26058, r26059, MPFR_RNDN);
        ;
        mpfr_set_d(r26062, d, MPFR_RNDN);
        mpfr_mul(r26063, r26061, r26062, MPFR_RNDN);
        mpfr_div(r26064, r26060, r26063, MPFR_RNDN);
        mpfr_div(r26065, r26057, r26063, MPFR_RNDN);
        mpfr_mul(r26066, r26060, r26065, MPFR_RNDN);
        mpfr_set_d(r26067, h, MPFR_RNDN);
        mpfr_mul(r26068, r26066, r26067, MPFR_RNDN);
        mpfr_mul(r26069, r26064, r26068, MPFR_RNDN);
        mpfr_set_d(r26070, l, MPFR_RNDN);
        mpfr_div(r26071, r26057, r26070, MPFR_RNDN);
        mpfr_mul(r26072, r26069, r26071, MPFR_RNDN);
        mpfr_sub(r26073, r26057, r26072, MPFR_RNDN);
        mpfr_sqrt(r26074, r26073, MPFR_RNDN);
        mpfr_mul(r26075, r26056, r26074, MPFR_RNDN);
        ;
        mpfr_set_si(r26077, mpfr_cmp(r26075, r26076) <= 0, MPFR_RNDN);
        mpfr_div(r26078, r26058, r26061, MPFR_RNDN);
        mpfr_div(r26079, r26059, r26062, MPFR_RNDN);
        mpfr_neg(r26080, r26079, MPFR_RNDN);
        mpfr_mul(r26081, r26078, r26080, MPFR_RNDN);
        mpfr_div(r26082, r26058, r26062, MPFR_RNDN);
        ;
        mpfr_mul(r26084, r26083, r26059, MPFR_RNDN);
        mpfr_mul(r26085, r26082, r26084, MPFR_RNDN);
        mpfr_div(r26086, r26067, r26070, MPFR_RNDN);
        mpfr_mul(r26087, r26085, r26086, MPFR_RNDN);
        mpfr_fma(r26088, r26081, r26087, r26057, MPFR_RNDN);
        mpfr_sqrt(r26089, r26088, MPFR_RNDN);
        mpfr_mul(r26090, r26056, r26089, MPFR_RNDN);
        ;
        mpfr_set_si(r26092, mpfr_cmp(r26075, r26091) <= 0, MPFR_RNDN);
        mpfr_mul(r26093, r26083, r26058, MPFR_RNDN);
        mpfr_neg(r26094, r26093, MPFR_RNDN);
        mpfr_div(r26095, r26062, r26059, MPFR_RNDN);
        mpfr_div(r26096, r26094, r26095, MPFR_RNDN);
        mpfr_mul(r26097, r26078, r26079, MPFR_RNDN);
        mpfr_mul(r26098, r26086, r26097, MPFR_RNDN);
        mpfr_fma(r26099, r26096, r26098, r26057, MPFR_RNDN);
        mpfr_sqrt(r26100, r26099, MPFR_RNDN);
        mpfr_mul(r26101, r26056, r26100, MPFR_RNDN);
        if (mpfr_get_si(r26092, MPFR_RNDN)) { mpfr_set(r26102, r26075, MPFR_RNDN); } else { mpfr_set(r26102, r26101, MPFR_RNDN); };
        if (mpfr_get_si(r26077, MPFR_RNDN)) { mpfr_set(r26103, r26090, MPFR_RNDN); } else { mpfr_set(r26103, r26102, MPFR_RNDN); };
        return mpfr_get_d(r26103, MPFR_RNDN);
}

static mpfr_t r26104, r26105, r26106, r26107, r26108, r26109, r26110, r26111, r26112, r26113, r26114, r26115, r26116, r26117, r26118, r26119, r26120, r26121, r26122, r26123, r26124, r26125, r26126, r26127, r26128, r26129, r26130, r26131, r26132, r26133, r26134, r26135, r26136, r26137, r26138, r26139, r26140, r26141, r26142, r26143, r26144, r26145, r26146, r26147, r26148, r26149, r26150, r26151;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26104);
        mpfr_init_set_str(r26105, "1", 10, MPFR_RNDN);
        mpfr_init(r26106);
        mpfr_init(r26107);
        mpfr_init(r26108);
        mpfr_init_set_str(r26109, "2", 10, MPFR_RNDN);
        mpfr_init(r26110);
        mpfr_init(r26111);
        mpfr_init(r26112);
        mpfr_init(r26113);
        mpfr_init(r26114);
        mpfr_init(r26115);
        mpfr_init(r26116);
        mpfr_init(r26117);
        mpfr_init(r26118);
        mpfr_init(r26119);
        mpfr_init(r26120);
        mpfr_init(r26121);
        mpfr_init(r26122);
        mpfr_init(r26123);
        mpfr_init_set_str(r26124, "-2.881556634241017e+298", 10, MPFR_RNDN);
        mpfr_init(r26125);
        mpfr_init(r26126);
        mpfr_init(r26127);
        mpfr_init(r26128);
        mpfr_init(r26129);
        mpfr_init(r26130);
        mpfr_init_set_str(r26131, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26132);
        mpfr_init(r26133);
        mpfr_init(r26134);
        mpfr_init(r26135);
        mpfr_init(r26136);
        mpfr_init(r26137);
        mpfr_init(r26138);
        mpfr_init_set_str(r26139, "1.5490384640270792e+303", 10, MPFR_RNDN);
        mpfr_init(r26140);
        mpfr_init(r26141);
        mpfr_init(r26142);
        mpfr_init(r26143);
        mpfr_init(r26144);
        mpfr_init(r26145);
        mpfr_init(r26146);
        mpfr_init(r26147);
        mpfr_init(r26148);
        mpfr_init(r26149);
        mpfr_init(r26150);
        mpfr_init(r26151);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26104, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26106, M, MPFR_RNDN);
        mpfr_set_d(r26107, D, MPFR_RNDN);
        mpfr_mul(r26108, r26106, r26107, MPFR_RNDN);
        ;
        mpfr_set_d(r26110, d, MPFR_RNDN);
        mpfr_mul(r26111, r26109, r26110, MPFR_RNDN);
        mpfr_div(r26112, r26108, r26111, MPFR_RNDN);
        mpfr_div(r26113, r26105, r26111, MPFR_RNDN);
        mpfr_mul(r26114, r26108, r26113, MPFR_RNDN);
        mpfr_set_d(r26115, h, MPFR_RNDN);
        mpfr_mul(r26116, r26114, r26115, MPFR_RNDN);
        mpfr_mul(r26117, r26112, r26116, MPFR_RNDN);
        mpfr_set_d(r26118, l, MPFR_RNDN);
        mpfr_div(r26119, r26105, r26118, MPFR_RNDN);
        mpfr_mul(r26120, r26117, r26119, MPFR_RNDN);
        mpfr_sub(r26121, r26105, r26120, MPFR_RNDN);
        mpfr_sqrt(r26122, r26121, MPFR_RNDN);
        mpfr_mul(r26123, r26104, r26122, MPFR_RNDN);
        ;
        mpfr_set_si(r26125, mpfr_cmp(r26123, r26124) <= 0, MPFR_RNDN);
        mpfr_div(r26126, r26106, r26109, MPFR_RNDN);
        mpfr_div(r26127, r26107, r26110, MPFR_RNDN);
        mpfr_neg(r26128, r26127, MPFR_RNDN);
        mpfr_mul(r26129, r26126, r26128, MPFR_RNDN);
        mpfr_div(r26130, r26106, r26110, MPFR_RNDN);
        ;
        mpfr_mul(r26132, r26131, r26107, MPFR_RNDN);
        mpfr_mul(r26133, r26130, r26132, MPFR_RNDN);
        mpfr_div(r26134, r26115, r26118, MPFR_RNDN);
        mpfr_mul(r26135, r26133, r26134, MPFR_RNDN);
        mpfr_fma(r26136, r26129, r26135, r26105, MPFR_RNDN);
        mpfr_sqrt(r26137, r26136, MPFR_RNDN);
        mpfr_mul(r26138, r26104, r26137, MPFR_RNDN);
        ;
        mpfr_set_si(r26140, mpfr_cmp(r26123, r26139) <= 0, MPFR_RNDN);
        mpfr_mul(r26141, r26131, r26106, MPFR_RNDN);
        mpfr_neg(r26142, r26141, MPFR_RNDN);
        mpfr_div(r26143, r26110, r26107, MPFR_RNDN);
        mpfr_div(r26144, r26142, r26143, MPFR_RNDN);
        mpfr_mul(r26145, r26126, r26127, MPFR_RNDN);
        mpfr_mul(r26146, r26134, r26145, MPFR_RNDN);
        mpfr_fma(r26147, r26144, r26146, r26105, MPFR_RNDN);
        mpfr_sqrt(r26148, r26147, MPFR_RNDN);
        mpfr_mul(r26149, r26104, r26148, MPFR_RNDN);
        if (mpfr_get_si(r26140, MPFR_RNDN)) { mpfr_set(r26150, r26123, MPFR_RNDN); } else { mpfr_set(r26150, r26149, MPFR_RNDN); };
        if (mpfr_get_si(r26125, MPFR_RNDN)) { mpfr_set(r26151, r26138, MPFR_RNDN); } else { mpfr_set(r26151, r26150, MPFR_RNDN); };
        return mpfr_get_d(r26151, MPFR_RNDN);
}

