#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 r25806 = w0;
        float r25807 = 1;
        float r25808 = M;
        float r25809 = D;
        float r25810 = r25808 * r25809;
        float r25811 = 2;
        float r25812 = d;
        float r25813 = r25811 * r25812;
        float r25814 = r25810 / r25813;
        float r25815 = pow(r25814, r25811);
        float r25816 = h;
        float r25817 = l;
        float r25818 = r25816 / r25817;
        float r25819 = r25815 * r25818;
        float r25820 = r25807 - r25819;
        float r25821 = sqrt(r25820);
        float r25822 = r25806 * r25821;
        return r25822;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r25823 = w0;
        double r25824 = 1;
        double r25825 = M;
        double r25826 = D;
        double r25827 = r25825 * r25826;
        double r25828 = 2;
        double r25829 = d;
        double r25830 = r25828 * r25829;
        double r25831 = r25827 / r25830;
        double r25832 = pow(r25831, r25828);
        double r25833 = h;
        double r25834 = l;
        double r25835 = r25833 / r25834;
        double r25836 = r25832 * r25835;
        double r25837 = r25824 - r25836;
        double r25838 = sqrt(r25837);
        double r25839 = r25823 * r25838;
        return r25839;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r25840 = w0;
        float r25841 = 1;
        float r25842 = M;
        float r25843 = D;
        float r25844 = r25842 * r25843;
        float r25845 = 2;
        float r25846 = d;
        float r25847 = r25845 * r25846;
        float r25848 = r25844 / r25847;
        float r25849 = r25841 / r25847;
        float r25850 = r25844 * r25849;
        float r25851 = h;
        float r25852 = r25850 * r25851;
        float r25853 = r25848 * r25852;
        float r25854 = l;
        float r25855 = r25841 / r25854;
        float r25856 = r25853 * r25855;
        float r25857 = r25841 - r25856;
        float r25858 = sqrt(r25857);
        float r25859 = r25840 * r25858;
        float r25860 = -2.881556634241017e+298;
        bool r25861 = r25859 <= r25860;
        float r25862 = r25842 / r25845;
        float r25863 = r25843 / r25846;
        float r25864 = -r25863;
        float r25865 = r25862 * r25864;
        float r25866 = r25842 / r25846;
        float r25867 = 1/2;
        float r25868 = r25867 * r25843;
        float r25869 = r25866 * r25868;
        float r25870 = r25851 / r25854;
        float r25871 = r25869 * r25870;
        float r25872 = fma(r25865, r25871, r25841);
        float r25873 = sqrt(r25872);
        float r25874 = r25840 * r25873;
        float r25875 = 1.5490384640270792e+303;
        bool r25876 = r25859 <= r25875;
        float r25877 = r25867 * r25842;
        float r25878 = -r25877;
        float r25879 = r25846 / r25843;
        float r25880 = r25878 / r25879;
        float r25881 = r25862 * r25863;
        float r25882 = r25870 * r25881;
        float r25883 = fma(r25880, r25882, r25841);
        float r25884 = sqrt(r25883);
        float r25885 = r25840 * r25884;
        float r25886 = r25876 ? r25859 : r25885;
        float r25887 = r25861 ? r25874 : r25886;
        return r25887;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r25888 = w0;
        double r25889 = 1;
        double r25890 = M;
        double r25891 = D;
        double r25892 = r25890 * r25891;
        double r25893 = 2;
        double r25894 = d;
        double r25895 = r25893 * r25894;
        double r25896 = r25892 / r25895;
        double r25897 = r25889 / r25895;
        double r25898 = r25892 * r25897;
        double r25899 = h;
        double r25900 = r25898 * r25899;
        double r25901 = r25896 * r25900;
        double r25902 = l;
        double r25903 = r25889 / r25902;
        double r25904 = r25901 * r25903;
        double r25905 = r25889 - r25904;
        double r25906 = sqrt(r25905);
        double r25907 = r25888 * r25906;
        double r25908 = -2.881556634241017e+298;
        bool r25909 = r25907 <= r25908;
        double r25910 = r25890 / r25893;
        double r25911 = r25891 / r25894;
        double r25912 = -r25911;
        double r25913 = r25910 * r25912;
        double r25914 = r25890 / r25894;
        double r25915 = 1/2;
        double r25916 = r25915 * r25891;
        double r25917 = r25914 * r25916;
        double r25918 = r25899 / r25902;
        double r25919 = r25917 * r25918;
        double r25920 = fma(r25913, r25919, r25889);
        double r25921 = sqrt(r25920);
        double r25922 = r25888 * r25921;
        double r25923 = 1.5490384640270792e+303;
        bool r25924 = r25907 <= r25923;
        double r25925 = r25915 * r25890;
        double r25926 = -r25925;
        double r25927 = r25894 / r25891;
        double r25928 = r25926 / r25927;
        double r25929 = r25910 * r25911;
        double r25930 = r25918 * r25929;
        double r25931 = fma(r25928, r25930, r25889);
        double r25932 = sqrt(r25931);
        double r25933 = r25888 * r25932;
        double r25934 = r25924 ? r25907 : r25933;
        double r25935 = r25909 ? r25922 : r25934;
        return r25935;
}

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 r25936, r25937, r25938, r25939, r25940, r25941, r25942, r25943, r25944, r25945, r25946, r25947, r25948, r25949, r25950, r25951, r25952;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r25936);
        mpfr_init_set_str(r25937, "1", 10, MPFR_RNDN);
        mpfr_init(r25938);
        mpfr_init(r25939);
        mpfr_init(r25940);
        mpfr_init_set_str(r25941, "2", 10, MPFR_RNDN);
        mpfr_init(r25942);
        mpfr_init(r25943);
        mpfr_init(r25944);
        mpfr_init(r25945);
        mpfr_init(r25946);
        mpfr_init(r25947);
        mpfr_init(r25948);
        mpfr_init(r25949);
        mpfr_init(r25950);
        mpfr_init(r25951);
        mpfr_init(r25952);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r25936, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r25938, M, MPFR_RNDN);
        mpfr_set_d(r25939, D, MPFR_RNDN);
        mpfr_mul(r25940, r25938, r25939, MPFR_RNDN);
        ;
        mpfr_set_d(r25942, d, MPFR_RNDN);
        mpfr_mul(r25943, r25941, r25942, MPFR_RNDN);
        mpfr_div(r25944, r25940, r25943, MPFR_RNDN);
        mpfr_pow(r25945, r25944, r25941, MPFR_RNDN);
        mpfr_set_d(r25946, h, MPFR_RNDN);
        mpfr_set_d(r25947, l, MPFR_RNDN);
        mpfr_div(r25948, r25946, r25947, MPFR_RNDN);
        mpfr_mul(r25949, r25945, r25948, MPFR_RNDN);
        mpfr_sub(r25950, r25937, r25949, MPFR_RNDN);
        mpfr_sqrt(r25951, r25950, MPFR_RNDN);
        mpfr_mul(r25952, r25936, r25951, MPFR_RNDN);
        return mpfr_get_d(r25952, MPFR_RNDN);
}

static mpfr_t r25953, r25954, r25955, r25956, r25957, r25958, r25959, r25960, r25961, r25962, r25963, r25964, r25965, r25966, r25967, r25968, r25969, r25970, r25971, r25972, r25973, r25974, r25975, r25976, r25977, r25978, r25979, r25980, r25981, r25982, r25983, r25984, r25985, r25986, r25987, r25988, r25989, r25990, r25991, r25992, r25993, r25994, r25995, r25996, r25997, r25998, r25999, r26000;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r25953);
        mpfr_init_set_str(r25954, "1", 10, MPFR_RNDN);
        mpfr_init(r25955);
        mpfr_init(r25956);
        mpfr_init(r25957);
        mpfr_init_set_str(r25958, "2", 10, MPFR_RNDN);
        mpfr_init(r25959);
        mpfr_init(r25960);
        mpfr_init(r25961);
        mpfr_init(r25962);
        mpfr_init(r25963);
        mpfr_init(r25964);
        mpfr_init(r25965);
        mpfr_init(r25966);
        mpfr_init(r25967);
        mpfr_init(r25968);
        mpfr_init(r25969);
        mpfr_init(r25970);
        mpfr_init(r25971);
        mpfr_init(r25972);
        mpfr_init_set_str(r25973, "-2.881556634241017e+298", 10, MPFR_RNDN);
        mpfr_init(r25974);
        mpfr_init(r25975);
        mpfr_init(r25976);
        mpfr_init(r25977);
        mpfr_init(r25978);
        mpfr_init(r25979);
        mpfr_init_set_str(r25980, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25981);
        mpfr_init(r25982);
        mpfr_init(r25983);
        mpfr_init(r25984);
        mpfr_init(r25985);
        mpfr_init(r25986);
        mpfr_init(r25987);
        mpfr_init_set_str(r25988, "1.5490384640270792e+303", 10, MPFR_RNDN);
        mpfr_init(r25989);
        mpfr_init(r25990);
        mpfr_init(r25991);
        mpfr_init(r25992);
        mpfr_init(r25993);
        mpfr_init(r25994);
        mpfr_init(r25995);
        mpfr_init(r25996);
        mpfr_init(r25997);
        mpfr_init(r25998);
        mpfr_init(r25999);
        mpfr_init(r26000);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r25953, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r25955, M, MPFR_RNDN);
        mpfr_set_d(r25956, D, MPFR_RNDN);
        mpfr_mul(r25957, r25955, r25956, MPFR_RNDN);
        ;
        mpfr_set_d(r25959, d, MPFR_RNDN);
        mpfr_mul(r25960, r25958, r25959, MPFR_RNDN);
        mpfr_div(r25961, r25957, r25960, MPFR_RNDN);
        mpfr_div(r25962, r25954, r25960, MPFR_RNDN);
        mpfr_mul(r25963, r25957, r25962, MPFR_RNDN);
        mpfr_set_d(r25964, h, MPFR_RNDN);
        mpfr_mul(r25965, r25963, r25964, MPFR_RNDN);
        mpfr_mul(r25966, r25961, r25965, MPFR_RNDN);
        mpfr_set_d(r25967, l, MPFR_RNDN);
        mpfr_div(r25968, r25954, r25967, MPFR_RNDN);
        mpfr_mul(r25969, r25966, r25968, MPFR_RNDN);
        mpfr_sub(r25970, r25954, r25969, MPFR_RNDN);
        mpfr_sqrt(r25971, r25970, MPFR_RNDN);
        mpfr_mul(r25972, r25953, r25971, MPFR_RNDN);
        ;
        mpfr_set_si(r25974, mpfr_cmp(r25972, r25973) <= 0, MPFR_RNDN);
        mpfr_div(r25975, r25955, r25958, MPFR_RNDN);
        mpfr_div(r25976, r25956, r25959, MPFR_RNDN);
        mpfr_neg(r25977, r25976, MPFR_RNDN);
        mpfr_mul(r25978, r25975, r25977, MPFR_RNDN);
        mpfr_div(r25979, r25955, r25959, MPFR_RNDN);
        ;
        mpfr_mul(r25981, r25980, r25956, MPFR_RNDN);
        mpfr_mul(r25982, r25979, r25981, MPFR_RNDN);
        mpfr_div(r25983, r25964, r25967, MPFR_RNDN);
        mpfr_mul(r25984, r25982, r25983, MPFR_RNDN);
        mpfr_fma(r25985, r25978, r25984, r25954, MPFR_RNDN);
        mpfr_sqrt(r25986, r25985, MPFR_RNDN);
        mpfr_mul(r25987, r25953, r25986, MPFR_RNDN);
        ;
        mpfr_set_si(r25989, mpfr_cmp(r25972, r25988) <= 0, MPFR_RNDN);
        mpfr_mul(r25990, r25980, r25955, MPFR_RNDN);
        mpfr_neg(r25991, r25990, MPFR_RNDN);
        mpfr_div(r25992, r25959, r25956, MPFR_RNDN);
        mpfr_div(r25993, r25991, r25992, MPFR_RNDN);
        mpfr_mul(r25994, r25975, r25976, MPFR_RNDN);
        mpfr_mul(r25995, r25983, r25994, MPFR_RNDN);
        mpfr_fma(r25996, r25993, r25995, r25954, MPFR_RNDN);
        mpfr_sqrt(r25997, r25996, MPFR_RNDN);
        mpfr_mul(r25998, r25953, r25997, MPFR_RNDN);
        if (mpfr_get_si(r25989, MPFR_RNDN)) { mpfr_set(r25999, r25972, MPFR_RNDN); } else { mpfr_set(r25999, r25998, MPFR_RNDN); };
        if (mpfr_get_si(r25974, MPFR_RNDN)) { mpfr_set(r26000, r25987, MPFR_RNDN); } else { mpfr_set(r26000, r25999, MPFR_RNDN); };
        return mpfr_get_d(r26000, MPFR_RNDN);
}

static mpfr_t r26001, r26002, r26003, r26004, r26005, r26006, r26007, r26008, r26009, r26010, r26011, r26012, r26013, r26014, r26015, r26016, r26017, r26018, r26019, r26020, r26021, r26022, r26023, r26024, r26025, r26026, r26027, r26028, r26029, r26030, r26031, r26032, r26033, r26034, r26035, r26036, r26037, r26038, r26039, r26040, r26041, r26042, r26043, r26044, r26045, r26046, r26047, r26048;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26001);
        mpfr_init_set_str(r26002, "1", 10, MPFR_RNDN);
        mpfr_init(r26003);
        mpfr_init(r26004);
        mpfr_init(r26005);
        mpfr_init_set_str(r26006, "2", 10, MPFR_RNDN);
        mpfr_init(r26007);
        mpfr_init(r26008);
        mpfr_init(r26009);
        mpfr_init(r26010);
        mpfr_init(r26011);
        mpfr_init(r26012);
        mpfr_init(r26013);
        mpfr_init(r26014);
        mpfr_init(r26015);
        mpfr_init(r26016);
        mpfr_init(r26017);
        mpfr_init(r26018);
        mpfr_init(r26019);
        mpfr_init(r26020);
        mpfr_init_set_str(r26021, "-2.881556634241017e+298", 10, MPFR_RNDN);
        mpfr_init(r26022);
        mpfr_init(r26023);
        mpfr_init(r26024);
        mpfr_init(r26025);
        mpfr_init(r26026);
        mpfr_init(r26027);
        mpfr_init_set_str(r26028, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26029);
        mpfr_init(r26030);
        mpfr_init(r26031);
        mpfr_init(r26032);
        mpfr_init(r26033);
        mpfr_init(r26034);
        mpfr_init(r26035);
        mpfr_init_set_str(r26036, "1.5490384640270792e+303", 10, MPFR_RNDN);
        mpfr_init(r26037);
        mpfr_init(r26038);
        mpfr_init(r26039);
        mpfr_init(r26040);
        mpfr_init(r26041);
        mpfr_init(r26042);
        mpfr_init(r26043);
        mpfr_init(r26044);
        mpfr_init(r26045);
        mpfr_init(r26046);
        mpfr_init(r26047);
        mpfr_init(r26048);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26001, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26003, M, MPFR_RNDN);
        mpfr_set_d(r26004, D, MPFR_RNDN);
        mpfr_mul(r26005, r26003, r26004, MPFR_RNDN);
        ;
        mpfr_set_d(r26007, d, MPFR_RNDN);
        mpfr_mul(r26008, r26006, r26007, MPFR_RNDN);
        mpfr_div(r26009, r26005, r26008, MPFR_RNDN);
        mpfr_div(r26010, r26002, r26008, MPFR_RNDN);
        mpfr_mul(r26011, r26005, r26010, MPFR_RNDN);
        mpfr_set_d(r26012, h, MPFR_RNDN);
        mpfr_mul(r26013, r26011, r26012, MPFR_RNDN);
        mpfr_mul(r26014, r26009, r26013, MPFR_RNDN);
        mpfr_set_d(r26015, l, MPFR_RNDN);
        mpfr_div(r26016, r26002, r26015, MPFR_RNDN);
        mpfr_mul(r26017, r26014, r26016, MPFR_RNDN);
        mpfr_sub(r26018, r26002, r26017, MPFR_RNDN);
        mpfr_sqrt(r26019, r26018, MPFR_RNDN);
        mpfr_mul(r26020, r26001, r26019, MPFR_RNDN);
        ;
        mpfr_set_si(r26022, mpfr_cmp(r26020, r26021) <= 0, MPFR_RNDN);
        mpfr_div(r26023, r26003, r26006, MPFR_RNDN);
        mpfr_div(r26024, r26004, r26007, MPFR_RNDN);
        mpfr_neg(r26025, r26024, MPFR_RNDN);
        mpfr_mul(r26026, r26023, r26025, MPFR_RNDN);
        mpfr_div(r26027, r26003, r26007, MPFR_RNDN);
        ;
        mpfr_mul(r26029, r26028, r26004, MPFR_RNDN);
        mpfr_mul(r26030, r26027, r26029, MPFR_RNDN);
        mpfr_div(r26031, r26012, r26015, MPFR_RNDN);
        mpfr_mul(r26032, r26030, r26031, MPFR_RNDN);
        mpfr_fma(r26033, r26026, r26032, r26002, MPFR_RNDN);
        mpfr_sqrt(r26034, r26033, MPFR_RNDN);
        mpfr_mul(r26035, r26001, r26034, MPFR_RNDN);
        ;
        mpfr_set_si(r26037, mpfr_cmp(r26020, r26036) <= 0, MPFR_RNDN);
        mpfr_mul(r26038, r26028, r26003, MPFR_RNDN);
        mpfr_neg(r26039, r26038, MPFR_RNDN);
        mpfr_div(r26040, r26007, r26004, MPFR_RNDN);
        mpfr_div(r26041, r26039, r26040, MPFR_RNDN);
        mpfr_mul(r26042, r26023, r26024, MPFR_RNDN);
        mpfr_mul(r26043, r26031, r26042, MPFR_RNDN);
        mpfr_fma(r26044, r26041, r26043, r26002, MPFR_RNDN);
        mpfr_sqrt(r26045, r26044, MPFR_RNDN);
        mpfr_mul(r26046, r26001, r26045, MPFR_RNDN);
        if (mpfr_get_si(r26037, MPFR_RNDN)) { mpfr_set(r26047, r26020, MPFR_RNDN); } else { mpfr_set(r26047, r26046, MPFR_RNDN); };
        if (mpfr_get_si(r26022, MPFR_RNDN)) { mpfr_set(r26048, r26035, MPFR_RNDN); } else { mpfr_set(r26048, r26047, MPFR_RNDN); };
        return mpfr_get_d(r26048, MPFR_RNDN);
}

