#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 r10829 = d;
        float r10830 = h;
        float r10831 = r10829 / r10830;
        float r10832 = 1;
        float r10833 = 2;
        float r10834 = r10832 / r10833;
        float r10835 = pow(r10831, r10834);
        float r10836 = l;
        float r10837 = r10829 / r10836;
        float r10838 = pow(r10837, r10834);
        float r10839 = r10835 * r10838;
        float r10840 = M;
        float r10841 = D;
        float r10842 = r10840 * r10841;
        float r10843 = r10833 * r10829;
        float r10844 = r10842 / r10843;
        float r10845 = pow(r10844, r10833);
        float r10846 = r10834 * r10845;
        float r10847 = r10830 / r10836;
        float r10848 = r10846 * r10847;
        float r10849 = r10832 - r10848;
        float r10850 = r10839 * r10849;
        return r10850;
}

double f_id(double d, double h, double l, double M, double D) {
        double r10851 = d;
        double r10852 = h;
        double r10853 = r10851 / r10852;
        double r10854 = 1;
        double r10855 = 2;
        double r10856 = r10854 / r10855;
        double r10857 = pow(r10853, r10856);
        double r10858 = l;
        double r10859 = r10851 / r10858;
        double r10860 = pow(r10859, r10856);
        double r10861 = r10857 * r10860;
        double r10862 = M;
        double r10863 = D;
        double r10864 = r10862 * r10863;
        double r10865 = r10855 * r10851;
        double r10866 = r10864 / r10865;
        double r10867 = pow(r10866, r10855);
        double r10868 = r10856 * r10867;
        double r10869 = r10852 / r10858;
        double r10870 = r10868 * r10869;
        double r10871 = r10854 - r10870;
        double r10872 = r10861 * r10871;
        return r10872;
}


double f_of(float d, float h, float l, float M, float D) {
        float r10873 = 1;
        float r10874 = l;
        float r10875 = r10873 / r10874;
        float r10876 = -1.2127622370181456e-300;
        bool r10877 = r10875 <= r10876;
        float r10878 = d;
        float r10879 = h;
        float r10880 = r10878 / r10879;
        float r10881 = 2;
        float r10882 = r10873 / r10881;
        float r10883 = pow(r10880, r10882);
        float r10884 = r10878 / r10874;
        float r10885 = pow(r10884, r10882);
        float r10886 = r10883 * r10885;
        float r10887 = M;
        float r10888 = D;
        float r10889 = r10887 * r10888;
        float r10890 = r10881 * r10878;
        float r10891 = r10889 / r10890;
        float r10892 = pow(r10891, r10881);
        float r10893 = r10882 * r10892;
        float r10894 = r10893 * r10879;
        float r10895 = cbrt(r10894);
        float r10896 = r10895 * r10895;
        float r10897 = r10896 * r10895;
        float r10898 = r10897 * r10875;
        float r10899 = r10873 - r10898;
        float r10900 = r10886 * r10899;
        float r10901 = 7.429166674557015e-157;
        bool r10902 = r10875 <= r10901;
        float r10903 = 1/2;
        float r10904 = log(r10878);
        float r10905 = log(r10874);
        float r10906 = r10904 - r10905;
        float r10907 = r10903 * r10906;
        float r10908 = exp(r10907);
        float r10909 = r10883 * r10908;
        float r10910 = r10879 / r10874;
        float r10911 = r10893 * r10910;
        float r10912 = r10873 - r10911;
        float r10913 = r10909 * r10912;
        float r10914 = 2.0916067693260847e+168;
        bool r10915 = r10875 <= r10914;
        float r10916 = pow(r10878, r10882);
        float r10917 = r10873 / r10879;
        float r10918 = pow(r10917, r10882);
        float r10919 = r10916 * r10918;
        float r10920 = r10919 * r10885;
        float r10921 = r10894 * r10875;
        float r10922 = r10873 - r10921;
        float r10923 = r10920 * r10922;
        float r10924 = pow(r10875, r10882);
        float r10925 = r10916 * r10924;
        float r10926 = r10883 * r10925;
        float r10927 = r10926 * r10922;
        float r10928 = r10915 ? r10923 : r10927;
        float r10929 = r10902 ? r10913 : r10928;
        float r10930 = r10877 ? r10900 : r10929;
        return r10930;
}

double f_od(double d, double h, double l, double M, double D) {
        double r10931 = 1;
        double r10932 = l;
        double r10933 = r10931 / r10932;
        double r10934 = -1.2127622370181456e-300;
        bool r10935 = r10933 <= r10934;
        double r10936 = d;
        double r10937 = h;
        double r10938 = r10936 / r10937;
        double r10939 = 2;
        double r10940 = r10931 / r10939;
        double r10941 = pow(r10938, r10940);
        double r10942 = r10936 / r10932;
        double r10943 = pow(r10942, r10940);
        double r10944 = r10941 * r10943;
        double r10945 = M;
        double r10946 = D;
        double r10947 = r10945 * r10946;
        double r10948 = r10939 * r10936;
        double r10949 = r10947 / r10948;
        double r10950 = pow(r10949, r10939);
        double r10951 = r10940 * r10950;
        double r10952 = r10951 * r10937;
        double r10953 = cbrt(r10952);
        double r10954 = r10953 * r10953;
        double r10955 = r10954 * r10953;
        double r10956 = r10955 * r10933;
        double r10957 = r10931 - r10956;
        double r10958 = r10944 * r10957;
        double r10959 = 7.429166674557015e-157;
        bool r10960 = r10933 <= r10959;
        double r10961 = 1/2;
        double r10962 = log(r10936);
        double r10963 = log(r10932);
        double r10964 = r10962 - r10963;
        double r10965 = r10961 * r10964;
        double r10966 = exp(r10965);
        double r10967 = r10941 * r10966;
        double r10968 = r10937 / r10932;
        double r10969 = r10951 * r10968;
        double r10970 = r10931 - r10969;
        double r10971 = r10967 * r10970;
        double r10972 = 2.0916067693260847e+168;
        bool r10973 = r10933 <= r10972;
        double r10974 = pow(r10936, r10940);
        double r10975 = r10931 / r10937;
        double r10976 = pow(r10975, r10940);
        double r10977 = r10974 * r10976;
        double r10978 = r10977 * r10943;
        double r10979 = r10952 * r10933;
        double r10980 = r10931 - r10979;
        double r10981 = r10978 * r10980;
        double r10982 = pow(r10933, r10940);
        double r10983 = r10974 * r10982;
        double r10984 = r10941 * r10983;
        double r10985 = r10984 * r10980;
        double r10986 = r10973 ? r10981 : r10985;
        double r10987 = r10960 ? r10971 : r10986;
        double r10988 = r10935 ? r10958 : r10987;
        return r10988;
}

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 r10989, r10990, r10991, r10992, r10993, r10994, r10995, r10996, r10997, r10998, r10999, r11000, r11001, r11002, r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10989);
        mpfr_init(r10990);
        mpfr_init(r10991);
        mpfr_init_set_str(r10992, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10993, "2", 10, MPFR_RNDN);
        mpfr_init(r10994);
        mpfr_init(r10995);
        mpfr_init(r10996);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init(r10999);
        mpfr_init(r11000);
        mpfr_init(r11001);
        mpfr_init(r11002);
        mpfr_init(r11003);
        mpfr_init(r11004);
        mpfr_init(r11005);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init(r11008);
        mpfr_init(r11009);
        mpfr_init(r11010);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r10989, d, MPFR_RNDN);
        mpfr_set_d(r10990, h, MPFR_RNDN);
        mpfr_div(r10991, r10989, r10990, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10994, r10992, r10993, MPFR_RNDN);
        mpfr_pow(r10995, r10991, r10994, MPFR_RNDN);
        mpfr_set_d(r10996, l, MPFR_RNDN);
        mpfr_div(r10997, r10989, r10996, MPFR_RNDN);
        mpfr_pow(r10998, r10997, r10994, MPFR_RNDN);
        mpfr_mul(r10999, r10995, r10998, MPFR_RNDN);
        mpfr_set_d(r11000, M, MPFR_RNDN);
        mpfr_set_d(r11001, D, MPFR_RNDN);
        mpfr_mul(r11002, r11000, r11001, MPFR_RNDN);
        mpfr_mul(r11003, r10993, r10989, MPFR_RNDN);
        mpfr_div(r11004, r11002, r11003, MPFR_RNDN);
        mpfr_pow(r11005, r11004, r10993, MPFR_RNDN);
        mpfr_mul(r11006, r10994, r11005, MPFR_RNDN);
        mpfr_div(r11007, r10990, r10996, MPFR_RNDN);
        mpfr_mul(r11008, r11006, r11007, MPFR_RNDN);
        mpfr_sub(r11009, r10992, r11008, MPFR_RNDN);
        mpfr_mul(r11010, r10999, r11009, MPFR_RNDN);
        return mpfr_get_d(r11010, MPFR_RNDN);
}

static mpfr_t r11011, r11012, r11013, r11014, r11015, r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029, r11030, r11031, r11032, r11033, r11034, r11035, r11036, r11037, r11038, r11039, r11040, r11041, r11042, r11043, r11044, r11045, r11046, r11047, r11048, r11049, r11050, r11051, r11052, r11053, r11054, r11055, r11056, r11057, r11058, r11059, r11060, r11061, r11062, r11063, r11064, r11065, r11066, r11067, r11068;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11011, "1", 10, MPFR_RNDN);
        mpfr_init(r11012);
        mpfr_init(r11013);
        mpfr_init_set_str(r11014, "-1.2127622370181456e-300", 10, MPFR_RNDN);
        mpfr_init(r11015);
        mpfr_init(r11016);
        mpfr_init(r11017);
        mpfr_init(r11018);
        mpfr_init_set_str(r11019, "2", 10, MPFR_RNDN);
        mpfr_init(r11020);
        mpfr_init(r11021);
        mpfr_init(r11022);
        mpfr_init(r11023);
        mpfr_init(r11024);
        mpfr_init(r11025);
        mpfr_init(r11026);
        mpfr_init(r11027);
        mpfr_init(r11028);
        mpfr_init(r11029);
        mpfr_init(r11030);
        mpfr_init(r11031);
        mpfr_init(r11032);
        mpfr_init(r11033);
        mpfr_init(r11034);
        mpfr_init(r11035);
        mpfr_init(r11036);
        mpfr_init(r11037);
        mpfr_init(r11038);
        mpfr_init_set_str(r11039, "7.429166674557015e-157", 10, MPFR_RNDN);
        mpfr_init(r11040);
        mpfr_init_set_str(r11041, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11042);
        mpfr_init(r11043);
        mpfr_init(r11044);
        mpfr_init(r11045);
        mpfr_init(r11046);
        mpfr_init(r11047);
        mpfr_init(r11048);
        mpfr_init(r11049);
        mpfr_init(r11050);
        mpfr_init(r11051);
        mpfr_init_set_str(r11052, "2.0916067693260847e+168", 10, MPFR_RNDN);
        mpfr_init(r11053);
        mpfr_init(r11054);
        mpfr_init(r11055);
        mpfr_init(r11056);
        mpfr_init(r11057);
        mpfr_init(r11058);
        mpfr_init(r11059);
        mpfr_init(r11060);
        mpfr_init(r11061);
        mpfr_init(r11062);
        mpfr_init(r11063);
        mpfr_init(r11064);
        mpfr_init(r11065);
        mpfr_init(r11066);
        mpfr_init(r11067);
        mpfr_init(r11068);
}

double f_fm(double d, double h, double l, double M, double D) {
        ;
        mpfr_set_d(r11012, l, MPFR_RNDN);
        mpfr_div(r11013, r11011, r11012, MPFR_RNDN);
        ;
        mpfr_set_si(r11015, mpfr_cmp(r11013, r11014) <= 0, MPFR_RNDN);
        mpfr_set_d(r11016, d, MPFR_RNDN);
        mpfr_set_d(r11017, h, MPFR_RNDN);
        mpfr_div(r11018, r11016, r11017, MPFR_RNDN);
        ;
        mpfr_div(r11020, r11011, r11019, MPFR_RNDN);
        mpfr_pow(r11021, r11018, r11020, MPFR_RNDN);
        mpfr_div(r11022, r11016, r11012, MPFR_RNDN);
        mpfr_pow(r11023, r11022, r11020, MPFR_RNDN);
        mpfr_mul(r11024, r11021, r11023, MPFR_RNDN);
        mpfr_set_d(r11025, M, MPFR_RNDN);
        mpfr_set_d(r11026, D, MPFR_RNDN);
        mpfr_mul(r11027, r11025, r11026, MPFR_RNDN);
        mpfr_mul(r11028, r11019, r11016, MPFR_RNDN);
        mpfr_div(r11029, r11027, r11028, MPFR_RNDN);
        mpfr_pow(r11030, r11029, r11019, MPFR_RNDN);
        mpfr_mul(r11031, r11020, r11030, MPFR_RNDN);
        mpfr_mul(r11032, r11031, r11017, MPFR_RNDN);
        mpfr_cbrt(r11033, r11032, MPFR_RNDN);
        mpfr_mul(r11034, r11033, r11033, MPFR_RNDN);
        mpfr_mul(r11035, r11034, r11033, MPFR_RNDN);
        mpfr_mul(r11036, r11035, r11013, MPFR_RNDN);
        mpfr_sub(r11037, r11011, r11036, MPFR_RNDN);
        mpfr_mul(r11038, r11024, r11037, MPFR_RNDN);
        ;
        mpfr_set_si(r11040, mpfr_cmp(r11013, r11039) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r11042, r11016, MPFR_RNDN);
        mpfr_log(r11043, r11012, MPFR_RNDN);
        mpfr_sub(r11044, r11042, r11043, MPFR_RNDN);
        mpfr_mul(r11045, r11041, r11044, MPFR_RNDN);
        mpfr_exp(r11046, r11045, MPFR_RNDN);
        mpfr_mul(r11047, r11021, r11046, MPFR_RNDN);
        mpfr_div(r11048, r11017, r11012, MPFR_RNDN);
        mpfr_mul(r11049, r11031, r11048, MPFR_RNDN);
        mpfr_sub(r11050, r11011, r11049, MPFR_RNDN);
        mpfr_mul(r11051, r11047, r11050, MPFR_RNDN);
        ;
        mpfr_set_si(r11053, mpfr_cmp(r11013, r11052) <= 0, MPFR_RNDN);
        mpfr_pow(r11054, r11016, r11020, MPFR_RNDN);
        mpfr_div(r11055, r11011, r11017, MPFR_RNDN);
        mpfr_pow(r11056, r11055, r11020, MPFR_RNDN);
        mpfr_mul(r11057, r11054, r11056, MPFR_RNDN);
        mpfr_mul(r11058, r11057, r11023, MPFR_RNDN);
        mpfr_mul(r11059, r11032, r11013, MPFR_RNDN);
        mpfr_sub(r11060, r11011, r11059, MPFR_RNDN);
        mpfr_mul(r11061, r11058, r11060, MPFR_RNDN);
        mpfr_pow(r11062, r11013, r11020, MPFR_RNDN);
        mpfr_mul(r11063, r11054, r11062, MPFR_RNDN);
        mpfr_mul(r11064, r11021, r11063, MPFR_RNDN);
        mpfr_mul(r11065, r11064, r11060, MPFR_RNDN);
        if (mpfr_get_si(r11053, MPFR_RNDN)) { mpfr_set(r11066, r11061, MPFR_RNDN); } else { mpfr_set(r11066, r11065, MPFR_RNDN); };
        if (mpfr_get_si(r11040, MPFR_RNDN)) { mpfr_set(r11067, r11051, MPFR_RNDN); } else { mpfr_set(r11067, r11066, MPFR_RNDN); };
        if (mpfr_get_si(r11015, MPFR_RNDN)) { mpfr_set(r11068, r11038, MPFR_RNDN); } else { mpfr_set(r11068, r11067, MPFR_RNDN); };
        return mpfr_get_d(r11068, MPFR_RNDN);
}

static mpfr_t r11069, r11070, r11071, r11072, r11073, r11074, r11075, r11076, r11077, r11078, r11079, r11080, r11081, r11082, r11083, r11084, r11085, r11086, r11087, r11088, r11089, r11090, r11091, r11092, r11093, r11094, r11095, r11096, r11097, r11098, r11099, r11100, r11101, r11102, r11103, r11104, r11105, r11106, r11107, r11108, r11109, r11110, r11111, r11112, r11113, r11114, r11115, r11116, r11117, r11118, r11119, r11120, r11121, r11122, r11123, r11124, r11125, r11126;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11069, "1", 10, MPFR_RNDN);
        mpfr_init(r11070);
        mpfr_init(r11071);
        mpfr_init_set_str(r11072, "-1.2127622370181456e-300", 10, MPFR_RNDN);
        mpfr_init(r11073);
        mpfr_init(r11074);
        mpfr_init(r11075);
        mpfr_init(r11076);
        mpfr_init_set_str(r11077, "2", 10, MPFR_RNDN);
        mpfr_init(r11078);
        mpfr_init(r11079);
        mpfr_init(r11080);
        mpfr_init(r11081);
        mpfr_init(r11082);
        mpfr_init(r11083);
        mpfr_init(r11084);
        mpfr_init(r11085);
        mpfr_init(r11086);
        mpfr_init(r11087);
        mpfr_init(r11088);
        mpfr_init(r11089);
        mpfr_init(r11090);
        mpfr_init(r11091);
        mpfr_init(r11092);
        mpfr_init(r11093);
        mpfr_init(r11094);
        mpfr_init(r11095);
        mpfr_init(r11096);
        mpfr_init_set_str(r11097, "7.429166674557015e-157", 10, MPFR_RNDN);
        mpfr_init(r11098);
        mpfr_init_set_str(r11099, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11100);
        mpfr_init(r11101);
        mpfr_init(r11102);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init(r11105);
        mpfr_init(r11106);
        mpfr_init(r11107);
        mpfr_init(r11108);
        mpfr_init(r11109);
        mpfr_init_set_str(r11110, "2.0916067693260847e+168", 10, MPFR_RNDN);
        mpfr_init(r11111);
        mpfr_init(r11112);
        mpfr_init(r11113);
        mpfr_init(r11114);
        mpfr_init(r11115);
        mpfr_init(r11116);
        mpfr_init(r11117);
        mpfr_init(r11118);
        mpfr_init(r11119);
        mpfr_init(r11120);
        mpfr_init(r11121);
        mpfr_init(r11122);
        mpfr_init(r11123);
        mpfr_init(r11124);
        mpfr_init(r11125);
        mpfr_init(r11126);
}

double f_dm(double d, double h, double l, double M, double D) {
        ;
        mpfr_set_d(r11070, l, MPFR_RNDN);
        mpfr_div(r11071, r11069, r11070, MPFR_RNDN);
        ;
        mpfr_set_si(r11073, mpfr_cmp(r11071, r11072) <= 0, MPFR_RNDN);
        mpfr_set_d(r11074, d, MPFR_RNDN);
        mpfr_set_d(r11075, h, MPFR_RNDN);
        mpfr_div(r11076, r11074, r11075, MPFR_RNDN);
        ;
        mpfr_div(r11078, r11069, r11077, MPFR_RNDN);
        mpfr_pow(r11079, r11076, r11078, MPFR_RNDN);
        mpfr_div(r11080, r11074, r11070, MPFR_RNDN);
        mpfr_pow(r11081, r11080, r11078, MPFR_RNDN);
        mpfr_mul(r11082, r11079, r11081, MPFR_RNDN);
        mpfr_set_d(r11083, M, MPFR_RNDN);
        mpfr_set_d(r11084, D, MPFR_RNDN);
        mpfr_mul(r11085, r11083, r11084, MPFR_RNDN);
        mpfr_mul(r11086, r11077, r11074, MPFR_RNDN);
        mpfr_div(r11087, r11085, r11086, MPFR_RNDN);
        mpfr_pow(r11088, r11087, r11077, MPFR_RNDN);
        mpfr_mul(r11089, r11078, r11088, MPFR_RNDN);
        mpfr_mul(r11090, r11089, r11075, MPFR_RNDN);
        mpfr_cbrt(r11091, r11090, MPFR_RNDN);
        mpfr_mul(r11092, r11091, r11091, MPFR_RNDN);
        mpfr_mul(r11093, r11092, r11091, MPFR_RNDN);
        mpfr_mul(r11094, r11093, r11071, MPFR_RNDN);
        mpfr_sub(r11095, r11069, r11094, MPFR_RNDN);
        mpfr_mul(r11096, r11082, r11095, MPFR_RNDN);
        ;
        mpfr_set_si(r11098, mpfr_cmp(r11071, r11097) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r11100, r11074, MPFR_RNDN);
        mpfr_log(r11101, r11070, MPFR_RNDN);
        mpfr_sub(r11102, r11100, r11101, MPFR_RNDN);
        mpfr_mul(r11103, r11099, r11102, MPFR_RNDN);
        mpfr_exp(r11104, r11103, MPFR_RNDN);
        mpfr_mul(r11105, r11079, r11104, MPFR_RNDN);
        mpfr_div(r11106, r11075, r11070, MPFR_RNDN);
        mpfr_mul(r11107, r11089, r11106, MPFR_RNDN);
        mpfr_sub(r11108, r11069, r11107, MPFR_RNDN);
        mpfr_mul(r11109, r11105, r11108, MPFR_RNDN);
        ;
        mpfr_set_si(r11111, mpfr_cmp(r11071, r11110) <= 0, MPFR_RNDN);
        mpfr_pow(r11112, r11074, r11078, MPFR_RNDN);
        mpfr_div(r11113, r11069, r11075, MPFR_RNDN);
        mpfr_pow(r11114, r11113, r11078, MPFR_RNDN);
        mpfr_mul(r11115, r11112, r11114, MPFR_RNDN);
        mpfr_mul(r11116, r11115, r11081, MPFR_RNDN);
        mpfr_mul(r11117, r11090, r11071, MPFR_RNDN);
        mpfr_sub(r11118, r11069, r11117, MPFR_RNDN);
        mpfr_mul(r11119, r11116, r11118, MPFR_RNDN);
        mpfr_pow(r11120, r11071, r11078, MPFR_RNDN);
        mpfr_mul(r11121, r11112, r11120, MPFR_RNDN);
        mpfr_mul(r11122, r11079, r11121, MPFR_RNDN);
        mpfr_mul(r11123, r11122, r11118, MPFR_RNDN);
        if (mpfr_get_si(r11111, MPFR_RNDN)) { mpfr_set(r11124, r11119, MPFR_RNDN); } else { mpfr_set(r11124, r11123, MPFR_RNDN); };
        if (mpfr_get_si(r11098, MPFR_RNDN)) { mpfr_set(r11125, r11109, MPFR_RNDN); } else { mpfr_set(r11125, r11124, MPFR_RNDN); };
        if (mpfr_get_si(r11073, MPFR_RNDN)) { mpfr_set(r11126, r11096, MPFR_RNDN); } else { mpfr_set(r11126, r11125, MPFR_RNDN); };
        return mpfr_get_d(r11126, MPFR_RNDN);
}

