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

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

double f_if(float c0, float w, float h, float D, float d, float M) {
        float r30463792 = c0;
        float r30463793 = 2;
        float r30463794 = w;
        float r30463795 = r30463793 * r30463794;
        float r30463796 = r30463792 / r30463795;
        float r30463797 = d;
        float r30463798 = r30463797 * r30463797;
        float r30463799 = r30463792 * r30463798;
        float r30463800 = h;
        float r30463801 = r30463794 * r30463800;
        float r30463802 = D;
        float r30463803 = r30463802 * r30463802;
        float r30463804 = r30463801 * r30463803;
        float r30463805 = r30463799 / r30463804;
        float r30463806 = r30463805 * r30463805;
        float r30463807 = M;
        float r30463808 = r30463807 * r30463807;
        float r30463809 = r30463806 - r30463808;
        float r30463810 = sqrt(r30463809);
        float r30463811 = r30463805 + r30463810;
        float r30463812 = r30463796 * r30463811;
        return r30463812;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r30463813 = c0;
        double r30463814 = 2;
        double r30463815 = w;
        double r30463816 = r30463814 * r30463815;
        double r30463817 = r30463813 / r30463816;
        double r30463818 = d;
        double r30463819 = r30463818 * r30463818;
        double r30463820 = r30463813 * r30463819;
        double r30463821 = h;
        double r30463822 = r30463815 * r30463821;
        double r30463823 = D;
        double r30463824 = r30463823 * r30463823;
        double r30463825 = r30463822 * r30463824;
        double r30463826 = r30463820 / r30463825;
        double r30463827 = r30463826 * r30463826;
        double r30463828 = M;
        double r30463829 = r30463828 * r30463828;
        double r30463830 = r30463827 - r30463829;
        double r30463831 = sqrt(r30463830);
        double r30463832 = r30463826 + r30463831;
        double r30463833 = r30463817 * r30463832;
        return r30463833;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r30463834 = d;
        float r30463835 = D;
        float r30463836 = r30463834 / r30463835;
        float r30463837 = -4.474118429353944e+66;
        bool r30463838 = r30463836 <= r30463837;
        float r30463839 = 0;
        float r30463840 = -4.727071584608914e+48;
        bool r30463841 = r30463836 <= r30463840;
        float r30463842 = c0;
        float r30463843 = 2;
        float r30463844 = w;
        float r30463845 = r30463843 * r30463844;
        float r30463846 = r30463842 / r30463845;
        float r30463847 = h;
        float r30463848 = r30463842 / r30463847;
        float r30463849 = r30463848 / r30463844;
        float r30463850 = r30463836 * r30463836;
        float r30463851 = r30463849 * r30463850;
        float r30463852 = M;
        float r30463853 = r30463851 - r30463852;
        float r30463854 = r30463852 + r30463851;
        float r30463855 = r30463853 * r30463854;
        float r30463856 = sqrt(r30463855);
        float r30463857 = r30463856 + r30463851;
        float r30463858 = 3;
        float r30463859 = pow(r30463857, r30463858);
        float r30463860 = cbrt(r30463859);
        float r30463861 = r30463846 * r30463860;
        float r30463862 = -6.7217804562277166e-37;
        bool r30463863 = r30463836 <= r30463862;
        float r30463864 = 5.4775021376250875e+29;
        bool r30463865 = r30463836 <= r30463864;
        float r30463866 = r30463852 * r30463842;
        float r30463867 = r30463844 + r30463844;
        float r30463868 = r30463866 / r30463867;
        float r30463869 = r30463868 * r30463852;
        float r30463870 = r30463844 * r30463847;
        float r30463871 = r30463842 / r30463870;
        float r30463872 = r30463871 * r30463850;
        float r30463873 = r30463872 - r30463852;
        float r30463874 = r30463852 + r30463872;
        float r30463875 = r30463873 * r30463874;
        float r30463876 = sqrt(r30463875);
        float r30463877 = r30463872 - r30463876;
        float r30463878 = r30463869 / r30463877;
        float r30463879 = r30463865 ? r30463878 : r30463839;
        float r30463880 = r30463863 ? r30463839 : r30463879;
        float r30463881 = r30463841 ? r30463861 : r30463880;
        float r30463882 = r30463838 ? r30463839 : r30463881;
        return r30463882;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r30463883 = d;
        double r30463884 = D;
        double r30463885 = r30463883 / r30463884;
        double r30463886 = -4.474118429353944e+66;
        bool r30463887 = r30463885 <= r30463886;
        double r30463888 = 0;
        double r30463889 = -4.727071584608914e+48;
        bool r30463890 = r30463885 <= r30463889;
        double r30463891 = c0;
        double r30463892 = 2;
        double r30463893 = w;
        double r30463894 = r30463892 * r30463893;
        double r30463895 = r30463891 / r30463894;
        double r30463896 = h;
        double r30463897 = r30463891 / r30463896;
        double r30463898 = r30463897 / r30463893;
        double r30463899 = r30463885 * r30463885;
        double r30463900 = r30463898 * r30463899;
        double r30463901 = M;
        double r30463902 = r30463900 - r30463901;
        double r30463903 = r30463901 + r30463900;
        double r30463904 = r30463902 * r30463903;
        double r30463905 = sqrt(r30463904);
        double r30463906 = r30463905 + r30463900;
        double r30463907 = 3;
        double r30463908 = pow(r30463906, r30463907);
        double r30463909 = cbrt(r30463908);
        double r30463910 = r30463895 * r30463909;
        double r30463911 = -6.7217804562277166e-37;
        bool r30463912 = r30463885 <= r30463911;
        double r30463913 = 5.4775021376250875e+29;
        bool r30463914 = r30463885 <= r30463913;
        double r30463915 = r30463901 * r30463891;
        double r30463916 = r30463893 + r30463893;
        double r30463917 = r30463915 / r30463916;
        double r30463918 = r30463917 * r30463901;
        double r30463919 = r30463893 * r30463896;
        double r30463920 = r30463891 / r30463919;
        double r30463921 = r30463920 * r30463899;
        double r30463922 = r30463921 - r30463901;
        double r30463923 = r30463901 + r30463921;
        double r30463924 = r30463922 * r30463923;
        double r30463925 = sqrt(r30463924);
        double r30463926 = r30463921 - r30463925;
        double r30463927 = r30463918 / r30463926;
        double r30463928 = r30463914 ? r30463927 : r30463888;
        double r30463929 = r30463912 ? r30463888 : r30463928;
        double r30463930 = r30463890 ? r30463910 : r30463929;
        double r30463931 = r30463887 ? r30463888 : r30463930;
        return r30463931;
}

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 r30463932, r30463933, r30463934, r30463935, r30463936, r30463937, r30463938, r30463939, r30463940, r30463941, r30463942, r30463943, r30463944, r30463945, r30463946, r30463947, r30463948, r30463949, r30463950, r30463951, r30463952;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7568);
        mpfr_init(r30463932);
        mpfr_init_set_str(r30463933, "2", 10, MPFR_RNDN);
        mpfr_init(r30463934);
        mpfr_init(r30463935);
        mpfr_init(r30463936);
        mpfr_init(r30463937);
        mpfr_init(r30463938);
        mpfr_init(r30463939);
        mpfr_init(r30463940);
        mpfr_init(r30463941);
        mpfr_init(r30463942);
        mpfr_init(r30463943);
        mpfr_init(r30463944);
        mpfr_init(r30463945);
        mpfr_init(r30463946);
        mpfr_init(r30463947);
        mpfr_init(r30463948);
        mpfr_init(r30463949);
        mpfr_init(r30463950);
        mpfr_init(r30463951);
        mpfr_init(r30463952);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r30463932, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r30463934, w, MPFR_RNDN);
        mpfr_mul(r30463935, r30463933, r30463934, MPFR_RNDN);
        mpfr_div(r30463936, r30463932, r30463935, MPFR_RNDN);
        mpfr_set_d(r30463937, d, MPFR_RNDN);
        mpfr_mul(r30463938, r30463937, r30463937, MPFR_RNDN);
        mpfr_mul(r30463939, r30463932, r30463938, MPFR_RNDN);
        mpfr_set_d(r30463940, h, MPFR_RNDN);
        mpfr_mul(r30463941, r30463934, r30463940, MPFR_RNDN);
        mpfr_set_d(r30463942, D, MPFR_RNDN);
        mpfr_mul(r30463943, r30463942, r30463942, MPFR_RNDN);
        mpfr_mul(r30463944, r30463941, r30463943, MPFR_RNDN);
        mpfr_div(r30463945, r30463939, r30463944, MPFR_RNDN);
        mpfr_mul(r30463946, r30463945, r30463945, MPFR_RNDN);
        mpfr_set_d(r30463947, M, MPFR_RNDN);
        mpfr_mul(r30463948, r30463947, r30463947, MPFR_RNDN);
        mpfr_sub(r30463949, r30463946, r30463948, MPFR_RNDN);
        mpfr_sqrt(r30463950, r30463949, MPFR_RNDN);
        mpfr_add(r30463951, r30463945, r30463950, MPFR_RNDN);
        mpfr_mul(r30463952, r30463936, r30463951, MPFR_RNDN);
        return mpfr_get_d(r30463952, MPFR_RNDN);
}

static mpfr_t r30463953, r30463954, r30463955, r30463956, r30463957, r30463958, r30463959, r30463960, r30463961, r30463962, r30463963, r30463964, r30463965, r30463966, r30463967, r30463968, r30463969, r30463970, r30463971, r30463972, r30463973, r30463974, r30463975, r30463976, r30463977, r30463978, r30463979, r30463980, r30463981, r30463982, r30463983, r30463984, r30463985, r30463986, r30463987, r30463988, r30463989, r30463990, r30463991, r30463992, r30463993, r30463994, r30463995, r30463996, r30463997, r30463998, r30463999, r30464000, r30464001;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7568);
        mpfr_init(r30463953);
        mpfr_init(r30463954);
        mpfr_init(r30463955);
        mpfr_init_set_str(r30463956, "-4.474118429353944e+66", 10, MPFR_RNDN);
        mpfr_init(r30463957);
        mpfr_init_set_str(r30463958, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r30463959, "-4.727071584608914e+48", 10, MPFR_RNDN);
        mpfr_init(r30463960);
        mpfr_init(r30463961);
        mpfr_init_set_str(r30463962, "2", 10, MPFR_RNDN);
        mpfr_init(r30463963);
        mpfr_init(r30463964);
        mpfr_init(r30463965);
        mpfr_init(r30463966);
        mpfr_init(r30463967);
        mpfr_init(r30463968);
        mpfr_init(r30463969);
        mpfr_init(r30463970);
        mpfr_init(r30463971);
        mpfr_init(r30463972);
        mpfr_init(r30463973);
        mpfr_init(r30463974);
        mpfr_init(r30463975);
        mpfr_init(r30463976);
        mpfr_init_set_str(r30463977, "3", 10, MPFR_RNDN);
        mpfr_init(r30463978);
        mpfr_init(r30463979);
        mpfr_init(r30463980);
        mpfr_init_set_str(r30463981, "-6.7217804562277166e-37", 10, MPFR_RNDN);
        mpfr_init(r30463982);
        mpfr_init_set_str(r30463983, "5.4775021376250875e+29", 10, MPFR_RNDN);
        mpfr_init(r30463984);
        mpfr_init(r30463985);
        mpfr_init(r30463986);
        mpfr_init(r30463987);
        mpfr_init(r30463988);
        mpfr_init(r30463989);
        mpfr_init(r30463990);
        mpfr_init(r30463991);
        mpfr_init(r30463992);
        mpfr_init(r30463993);
        mpfr_init(r30463994);
        mpfr_init(r30463995);
        mpfr_init(r30463996);
        mpfr_init(r30463997);
        mpfr_init(r30463998);
        mpfr_init(r30463999);
        mpfr_init(r30464000);
        mpfr_init(r30464001);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r30463953, d, MPFR_RNDN);
        mpfr_set_d(r30463954, D, MPFR_RNDN);
        mpfr_div(r30463955, r30463953, r30463954, MPFR_RNDN);
        ;
        mpfr_set_si(r30463957, mpfr_cmp(r30463955, r30463956) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r30463960, mpfr_cmp(r30463955, r30463959) <= 0, MPFR_RNDN);
        mpfr_set_d(r30463961, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r30463963, w, MPFR_RNDN);
        mpfr_mul(r30463964, r30463962, r30463963, MPFR_RNDN);
        mpfr_div(r30463965, r30463961, r30463964, MPFR_RNDN);
        mpfr_set_d(r30463966, h, MPFR_RNDN);
        mpfr_div(r30463967, r30463961, r30463966, MPFR_RNDN);
        mpfr_div(r30463968, r30463967, r30463963, MPFR_RNDN);
        mpfr_mul(r30463969, r30463955, r30463955, MPFR_RNDN);
        mpfr_mul(r30463970, r30463968, r30463969, MPFR_RNDN);
        mpfr_set_d(r30463971, M, MPFR_RNDN);
        mpfr_sub(r30463972, r30463970, r30463971, MPFR_RNDN);
        mpfr_add(r30463973, r30463971, r30463970, MPFR_RNDN);
        mpfr_mul(r30463974, r30463972, r30463973, MPFR_RNDN);
        mpfr_sqrt(r30463975, r30463974, MPFR_RNDN);
        mpfr_add(r30463976, r30463975, r30463970, MPFR_RNDN);
        ;
        mpfr_pow(r30463978, r30463976, r30463977, MPFR_RNDN);
        mpfr_cbrt(r30463979, r30463978, MPFR_RNDN);
        mpfr_mul(r30463980, r30463965, r30463979, MPFR_RNDN);
        ;
        mpfr_set_si(r30463982, mpfr_cmp(r30463955, r30463981) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r30463984, mpfr_cmp(r30463955, r30463983) <= 0, MPFR_RNDN);
        mpfr_mul(r30463985, r30463971, r30463961, MPFR_RNDN);
        mpfr_add(r30463986, r30463963, r30463963, MPFR_RNDN);
        mpfr_div(r30463987, r30463985, r30463986, MPFR_RNDN);
        mpfr_mul(r30463988, r30463987, r30463971, MPFR_RNDN);
        mpfr_mul(r30463989, r30463963, r30463966, MPFR_RNDN);
        mpfr_div(r30463990, r30463961, r30463989, MPFR_RNDN);
        mpfr_mul(r30463991, r30463990, r30463969, MPFR_RNDN);
        mpfr_sub(r30463992, r30463991, r30463971, MPFR_RNDN);
        mpfr_add(r30463993, r30463971, r30463991, MPFR_RNDN);
        mpfr_mul(r30463994, r30463992, r30463993, MPFR_RNDN);
        mpfr_sqrt(r30463995, r30463994, MPFR_RNDN);
        mpfr_sub(r30463996, r30463991, r30463995, MPFR_RNDN);
        mpfr_div(r30463997, r30463988, r30463996, MPFR_RNDN);
        if (mpfr_get_si(r30463984, MPFR_RNDN)) { mpfr_set(r30463998, r30463997, MPFR_RNDN); } else { mpfr_set(r30463998, r30463958, MPFR_RNDN); };
        if (mpfr_get_si(r30463982, MPFR_RNDN)) { mpfr_set(r30463999, r30463958, MPFR_RNDN); } else { mpfr_set(r30463999, r30463998, MPFR_RNDN); };
        if (mpfr_get_si(r30463960, MPFR_RNDN)) { mpfr_set(r30464000, r30463980, MPFR_RNDN); } else { mpfr_set(r30464000, r30463999, MPFR_RNDN); };
        if (mpfr_get_si(r30463957, MPFR_RNDN)) { mpfr_set(r30464001, r30463958, MPFR_RNDN); } else { mpfr_set(r30464001, r30464000, MPFR_RNDN); };
        return mpfr_get_d(r30464001, MPFR_RNDN);
}

static mpfr_t r30464002, r30464003, r30464004, r30464005, r30464006, r30464007, r30464008, r30464009, r30464010, r30464011, r30464012, r30464013, r30464014, r30464015, r30464016, r30464017, r30464018, r30464019, r30464020, r30464021, r30464022, r30464023, r30464024, r30464025, r30464026, r30464027, r30464028, r30464029, r30464030, r30464031, r30464032, r30464033, r30464034, r30464035, r30464036, r30464037, r30464038, r30464039, r30464040, r30464041, r30464042, r30464043, r30464044, r30464045, r30464046, r30464047, r30464048, r30464049, r30464050;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7568);
        mpfr_init(r30464002);
        mpfr_init(r30464003);
        mpfr_init(r30464004);
        mpfr_init_set_str(r30464005, "-4.474118429353944e+66", 10, MPFR_RNDN);
        mpfr_init(r30464006);
        mpfr_init_set_str(r30464007, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464008, "-4.727071584608914e+48", 10, MPFR_RNDN);
        mpfr_init(r30464009);
        mpfr_init(r30464010);
        mpfr_init_set_str(r30464011, "2", 10, MPFR_RNDN);
        mpfr_init(r30464012);
        mpfr_init(r30464013);
        mpfr_init(r30464014);
        mpfr_init(r30464015);
        mpfr_init(r30464016);
        mpfr_init(r30464017);
        mpfr_init(r30464018);
        mpfr_init(r30464019);
        mpfr_init(r30464020);
        mpfr_init(r30464021);
        mpfr_init(r30464022);
        mpfr_init(r30464023);
        mpfr_init(r30464024);
        mpfr_init(r30464025);
        mpfr_init_set_str(r30464026, "3", 10, MPFR_RNDN);
        mpfr_init(r30464027);
        mpfr_init(r30464028);
        mpfr_init(r30464029);
        mpfr_init_set_str(r30464030, "-6.7217804562277166e-37", 10, MPFR_RNDN);
        mpfr_init(r30464031);
        mpfr_init_set_str(r30464032, "5.4775021376250875e+29", 10, MPFR_RNDN);
        mpfr_init(r30464033);
        mpfr_init(r30464034);
        mpfr_init(r30464035);
        mpfr_init(r30464036);
        mpfr_init(r30464037);
        mpfr_init(r30464038);
        mpfr_init(r30464039);
        mpfr_init(r30464040);
        mpfr_init(r30464041);
        mpfr_init(r30464042);
        mpfr_init(r30464043);
        mpfr_init(r30464044);
        mpfr_init(r30464045);
        mpfr_init(r30464046);
        mpfr_init(r30464047);
        mpfr_init(r30464048);
        mpfr_init(r30464049);
        mpfr_init(r30464050);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r30464002, d, MPFR_RNDN);
        mpfr_set_d(r30464003, D, MPFR_RNDN);
        mpfr_div(r30464004, r30464002, r30464003, MPFR_RNDN);
        ;
        mpfr_set_si(r30464006, mpfr_cmp(r30464004, r30464005) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r30464009, mpfr_cmp(r30464004, r30464008) <= 0, MPFR_RNDN);
        mpfr_set_d(r30464010, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r30464012, w, MPFR_RNDN);
        mpfr_mul(r30464013, r30464011, r30464012, MPFR_RNDN);
        mpfr_div(r30464014, r30464010, r30464013, MPFR_RNDN);
        mpfr_set_d(r30464015, h, MPFR_RNDN);
        mpfr_div(r30464016, r30464010, r30464015, MPFR_RNDN);
        mpfr_div(r30464017, r30464016, r30464012, MPFR_RNDN);
        mpfr_mul(r30464018, r30464004, r30464004, MPFR_RNDN);
        mpfr_mul(r30464019, r30464017, r30464018, MPFR_RNDN);
        mpfr_set_d(r30464020, M, MPFR_RNDN);
        mpfr_sub(r30464021, r30464019, r30464020, MPFR_RNDN);
        mpfr_add(r30464022, r30464020, r30464019, MPFR_RNDN);
        mpfr_mul(r30464023, r30464021, r30464022, MPFR_RNDN);
        mpfr_sqrt(r30464024, r30464023, MPFR_RNDN);
        mpfr_add(r30464025, r30464024, r30464019, MPFR_RNDN);
        ;
        mpfr_pow(r30464027, r30464025, r30464026, MPFR_RNDN);
        mpfr_cbrt(r30464028, r30464027, MPFR_RNDN);
        mpfr_mul(r30464029, r30464014, r30464028, MPFR_RNDN);
        ;
        mpfr_set_si(r30464031, mpfr_cmp(r30464004, r30464030) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r30464033, mpfr_cmp(r30464004, r30464032) <= 0, MPFR_RNDN);
        mpfr_mul(r30464034, r30464020, r30464010, MPFR_RNDN);
        mpfr_add(r30464035, r30464012, r30464012, MPFR_RNDN);
        mpfr_div(r30464036, r30464034, r30464035, MPFR_RNDN);
        mpfr_mul(r30464037, r30464036, r30464020, MPFR_RNDN);
        mpfr_mul(r30464038, r30464012, r30464015, MPFR_RNDN);
        mpfr_div(r30464039, r30464010, r30464038, MPFR_RNDN);
        mpfr_mul(r30464040, r30464039, r30464018, MPFR_RNDN);
        mpfr_sub(r30464041, r30464040, r30464020, MPFR_RNDN);
        mpfr_add(r30464042, r30464020, r30464040, MPFR_RNDN);
        mpfr_mul(r30464043, r30464041, r30464042, MPFR_RNDN);
        mpfr_sqrt(r30464044, r30464043, MPFR_RNDN);
        mpfr_sub(r30464045, r30464040, r30464044, MPFR_RNDN);
        mpfr_div(r30464046, r30464037, r30464045, MPFR_RNDN);
        if (mpfr_get_si(r30464033, MPFR_RNDN)) { mpfr_set(r30464047, r30464046, MPFR_RNDN); } else { mpfr_set(r30464047, r30464007, MPFR_RNDN); };
        if (mpfr_get_si(r30464031, MPFR_RNDN)) { mpfr_set(r30464048, r30464007, MPFR_RNDN); } else { mpfr_set(r30464048, r30464047, MPFR_RNDN); };
        if (mpfr_get_si(r30464009, MPFR_RNDN)) { mpfr_set(r30464049, r30464029, MPFR_RNDN); } else { mpfr_set(r30464049, r30464048, MPFR_RNDN); };
        if (mpfr_get_si(r30464006, MPFR_RNDN)) { mpfr_set(r30464050, r30464007, MPFR_RNDN); } else { mpfr_set(r30464050, r30464049, MPFR_RNDN); };
        return mpfr_get_d(r30464050, MPFR_RNDN);
}

