#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 r31699 = d;
        float r31700 = h;
        float r31701 = r31699 / r31700;
        float r31702 = 1;
        float r31703 = 2;
        float r31704 = r31702 / r31703;
        float r31705 = pow(r31701, r31704);
        float r31706 = l;
        float r31707 = r31699 / r31706;
        float r31708 = pow(r31707, r31704);
        float r31709 = r31705 * r31708;
        float r31710 = M;
        float r31711 = D;
        float r31712 = r31710 * r31711;
        float r31713 = r31703 * r31699;
        float r31714 = r31712 / r31713;
        float r31715 = pow(r31714, r31703);
        float r31716 = r31704 * r31715;
        float r31717 = r31700 / r31706;
        float r31718 = r31716 * r31717;
        float r31719 = r31702 - r31718;
        float r31720 = r31709 * r31719;
        return r31720;
}

double f_id(double d, double h, double l, double M, double D) {
        double r31721 = d;
        double r31722 = h;
        double r31723 = r31721 / r31722;
        double r31724 = 1;
        double r31725 = 2;
        double r31726 = r31724 / r31725;
        double r31727 = pow(r31723, r31726);
        double r31728 = l;
        double r31729 = r31721 / r31728;
        double r31730 = pow(r31729, r31726);
        double r31731 = r31727 * r31730;
        double r31732 = M;
        double r31733 = D;
        double r31734 = r31732 * r31733;
        double r31735 = r31725 * r31721;
        double r31736 = r31734 / r31735;
        double r31737 = pow(r31736, r31725);
        double r31738 = r31726 * r31737;
        double r31739 = r31722 / r31728;
        double r31740 = r31738 * r31739;
        double r31741 = r31724 - r31740;
        double r31742 = r31731 * r31741;
        return r31742;
}


double f_of(float d, float h, float l, float M, float D) {
        float r31743 = l;
        float r31744 = 2.34152252046331e-309;
        bool r31745 = r31743 <= r31744;
        float r31746 = d;
        float r31747 = h;
        float r31748 = r31746 / r31747;
        float r31749 = cbrt(r31748);
        float r31750 = r31749 * r31749;
        float r31751 = 1;
        float r31752 = 2;
        float r31753 = r31751 / r31752;
        float r31754 = pow(r31750, r31753);
        float r31755 = cbrt(r31746);
        float r31756 = r31751 / r31747;
        float r31757 = cbrt(r31756);
        float r31758 = r31755 * r31757;
        float r31759 = pow(r31758, r31753);
        float r31760 = r31754 * r31759;
        float r31761 = r31746 / r31743;
        float r31762 = pow(r31761, r31753);
        float r31763 = r31760 * r31762;
        float r31764 = M;
        float r31765 = D;
        float r31766 = r31764 * r31765;
        float r31767 = r31752 * r31746;
        float r31768 = r31766 / r31767;
        float r31769 = pow(r31768, r31752);
        float r31770 = r31751 * r31769;
        float r31771 = r31770 * r31747;
        float r31772 = r31752 * r31743;
        float r31773 = r31771 / r31772;
        float r31774 = r31751 - r31773;
        float r31775 = r31763 * r31774;
        float r31776 = 3.0224487140598196e-141;
        bool r31777 = r31743 <= r31776;
        float r31778 = pow(r31748, r31753);
        float r31779 = pow(r31746, r31753);
        float r31780 = r31751 / r31743;
        float r31781 = pow(r31780, r31753);
        float r31782 = r31779 * r31781;
        float r31783 = r31778 * r31782;
        float r31784 = r31783 * r31774;
        float r31785 = pow(r31756, r31753);
        float r31786 = r31779 * r31785;
        float r31787 = r31786 * r31762;
        float r31788 = r31787 * r31774;
        float r31789 = r31777 ? r31784 : r31788;
        float r31790 = r31745 ? r31775 : r31789;
        return r31790;
}

double f_od(double d, double h, double l, double M, double D) {
        double r31791 = l;
        double r31792 = 2.34152252046331e-309;
        bool r31793 = r31791 <= r31792;
        double r31794 = d;
        double r31795 = h;
        double r31796 = r31794 / r31795;
        double r31797 = cbrt(r31796);
        double r31798 = r31797 * r31797;
        double r31799 = 1;
        double r31800 = 2;
        double r31801 = r31799 / r31800;
        double r31802 = pow(r31798, r31801);
        double r31803 = cbrt(r31794);
        double r31804 = r31799 / r31795;
        double r31805 = cbrt(r31804);
        double r31806 = r31803 * r31805;
        double r31807 = pow(r31806, r31801);
        double r31808 = r31802 * r31807;
        double r31809 = r31794 / r31791;
        double r31810 = pow(r31809, r31801);
        double r31811 = r31808 * r31810;
        double r31812 = M;
        double r31813 = D;
        double r31814 = r31812 * r31813;
        double r31815 = r31800 * r31794;
        double r31816 = r31814 / r31815;
        double r31817 = pow(r31816, r31800);
        double r31818 = r31799 * r31817;
        double r31819 = r31818 * r31795;
        double r31820 = r31800 * r31791;
        double r31821 = r31819 / r31820;
        double r31822 = r31799 - r31821;
        double r31823 = r31811 * r31822;
        double r31824 = 3.0224487140598196e-141;
        bool r31825 = r31791 <= r31824;
        double r31826 = pow(r31796, r31801);
        double r31827 = pow(r31794, r31801);
        double r31828 = r31799 / r31791;
        double r31829 = pow(r31828, r31801);
        double r31830 = r31827 * r31829;
        double r31831 = r31826 * r31830;
        double r31832 = r31831 * r31822;
        double r31833 = pow(r31804, r31801);
        double r31834 = r31827 * r31833;
        double r31835 = r31834 * r31810;
        double r31836 = r31835 * r31822;
        double r31837 = r31825 ? r31832 : r31836;
        double r31838 = r31793 ? r31823 : r31837;
        return r31838;
}

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 r31839, r31840, r31841, r31842, r31843, r31844, r31845, r31846, r31847, r31848, r31849, r31850, r31851, r31852, r31853, r31854, r31855, r31856, r31857, r31858, r31859, r31860;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r31839);
        mpfr_init(r31840);
        mpfr_init(r31841);
        mpfr_init_set_str(r31842, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31843, "2", 10, MPFR_RNDN);
        mpfr_init(r31844);
        mpfr_init(r31845);
        mpfr_init(r31846);
        mpfr_init(r31847);
        mpfr_init(r31848);
        mpfr_init(r31849);
        mpfr_init(r31850);
        mpfr_init(r31851);
        mpfr_init(r31852);
        mpfr_init(r31853);
        mpfr_init(r31854);
        mpfr_init(r31855);
        mpfr_init(r31856);
        mpfr_init(r31857);
        mpfr_init(r31858);
        mpfr_init(r31859);
        mpfr_init(r31860);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31839, d, MPFR_RNDN);
        mpfr_set_d(r31840, h, MPFR_RNDN);
        mpfr_div(r31841, r31839, r31840, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31844, r31842, r31843, MPFR_RNDN);
        mpfr_pow(r31845, r31841, r31844, MPFR_RNDN);
        mpfr_set_d(r31846, l, MPFR_RNDN);
        mpfr_div(r31847, r31839, r31846, MPFR_RNDN);
        mpfr_pow(r31848, r31847, r31844, MPFR_RNDN);
        mpfr_mul(r31849, r31845, r31848, MPFR_RNDN);
        mpfr_set_d(r31850, M, MPFR_RNDN);
        mpfr_set_d(r31851, D, MPFR_RNDN);
        mpfr_mul(r31852, r31850, r31851, MPFR_RNDN);
        mpfr_mul(r31853, r31843, r31839, MPFR_RNDN);
        mpfr_div(r31854, r31852, r31853, MPFR_RNDN);
        mpfr_pow(r31855, r31854, r31843, MPFR_RNDN);
        mpfr_mul(r31856, r31844, r31855, MPFR_RNDN);
        mpfr_div(r31857, r31840, r31846, MPFR_RNDN);
        mpfr_mul(r31858, r31856, r31857, MPFR_RNDN);
        mpfr_sub(r31859, r31842, r31858, MPFR_RNDN);
        mpfr_mul(r31860, r31849, r31859, MPFR_RNDN);
        return mpfr_get_d(r31860, MPFR_RNDN);
}

static mpfr_t r31861, r31862, r31863, r31864, r31865, r31866, r31867, r31868, r31869, r31870, r31871, r31872, r31873, r31874, r31875, r31876, r31877, r31878, r31879, r31880, r31881, r31882, r31883, r31884, r31885, r31886, r31887, r31888, r31889, r31890, r31891, r31892, r31893, r31894, r31895, r31896, r31897, r31898, r31899, r31900, r31901, r31902, r31903, r31904, r31905, r31906, r31907, r31908;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31861);
        mpfr_init_set_str(r31862, "2.34152252046331e-309", 10, MPFR_RNDN);
        mpfr_init(r31863);
        mpfr_init(r31864);
        mpfr_init(r31865);
        mpfr_init(r31866);
        mpfr_init(r31867);
        mpfr_init(r31868);
        mpfr_init_set_str(r31869, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31870, "2", 10, MPFR_RNDN);
        mpfr_init(r31871);
        mpfr_init(r31872);
        mpfr_init(r31873);
        mpfr_init(r31874);
        mpfr_init(r31875);
        mpfr_init(r31876);
        mpfr_init(r31877);
        mpfr_init(r31878);
        mpfr_init(r31879);
        mpfr_init(r31880);
        mpfr_init(r31881);
        mpfr_init(r31882);
        mpfr_init(r31883);
        mpfr_init(r31884);
        mpfr_init(r31885);
        mpfr_init(r31886);
        mpfr_init(r31887);
        mpfr_init(r31888);
        mpfr_init(r31889);
        mpfr_init(r31890);
        mpfr_init(r31891);
        mpfr_init(r31892);
        mpfr_init(r31893);
        mpfr_init_set_str(r31894, "3.0224487140598196e-141", 10, MPFR_RNDN);
        mpfr_init(r31895);
        mpfr_init(r31896);
        mpfr_init(r31897);
        mpfr_init(r31898);
        mpfr_init(r31899);
        mpfr_init(r31900);
        mpfr_init(r31901);
        mpfr_init(r31902);
        mpfr_init(r31903);
        mpfr_init(r31904);
        mpfr_init(r31905);
        mpfr_init(r31906);
        mpfr_init(r31907);
        mpfr_init(r31908);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31861, l, MPFR_RNDN);
        ;
        mpfr_set_si(r31863, mpfr_cmp(r31861, r31862) <= 0, MPFR_RNDN);
        mpfr_set_d(r31864, d, MPFR_RNDN);
        mpfr_set_d(r31865, h, MPFR_RNDN);
        mpfr_div(r31866, r31864, r31865, MPFR_RNDN);
        mpfr_cbrt(r31867, r31866, MPFR_RNDN);
        mpfr_mul(r31868, r31867, r31867, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31871, r31869, r31870, MPFR_RNDN);
        mpfr_pow(r31872, r31868, r31871, MPFR_RNDN);
        mpfr_cbrt(r31873, r31864, MPFR_RNDN);
        mpfr_div(r31874, r31869, r31865, MPFR_RNDN);
        mpfr_cbrt(r31875, r31874, MPFR_RNDN);
        mpfr_mul(r31876, r31873, r31875, MPFR_RNDN);
        mpfr_pow(r31877, r31876, r31871, MPFR_RNDN);
        mpfr_mul(r31878, r31872, r31877, MPFR_RNDN);
        mpfr_div(r31879, r31864, r31861, MPFR_RNDN);
        mpfr_pow(r31880, r31879, r31871, MPFR_RNDN);
        mpfr_mul(r31881, r31878, r31880, MPFR_RNDN);
        mpfr_set_d(r31882, M, MPFR_RNDN);
        mpfr_set_d(r31883, D, MPFR_RNDN);
        mpfr_mul(r31884, r31882, r31883, MPFR_RNDN);
        mpfr_mul(r31885, r31870, r31864, MPFR_RNDN);
        mpfr_div(r31886, r31884, r31885, MPFR_RNDN);
        mpfr_pow(r31887, r31886, r31870, MPFR_RNDN);
        mpfr_mul(r31888, r31869, r31887, MPFR_RNDN);
        mpfr_mul(r31889, r31888, r31865, MPFR_RNDN);
        mpfr_mul(r31890, r31870, r31861, MPFR_RNDN);
        mpfr_div(r31891, r31889, r31890, MPFR_RNDN);
        mpfr_sub(r31892, r31869, r31891, MPFR_RNDN);
        mpfr_mul(r31893, r31881, r31892, MPFR_RNDN);
        ;
        mpfr_set_si(r31895, mpfr_cmp(r31861, r31894) <= 0, MPFR_RNDN);
        mpfr_pow(r31896, r31866, r31871, MPFR_RNDN);
        mpfr_pow(r31897, r31864, r31871, MPFR_RNDN);
        mpfr_div(r31898, r31869, r31861, MPFR_RNDN);
        mpfr_pow(r31899, r31898, r31871, MPFR_RNDN);
        mpfr_mul(r31900, r31897, r31899, MPFR_RNDN);
        mpfr_mul(r31901, r31896, r31900, MPFR_RNDN);
        mpfr_mul(r31902, r31901, r31892, MPFR_RNDN);
        mpfr_pow(r31903, r31874, r31871, MPFR_RNDN);
        mpfr_mul(r31904, r31897, r31903, MPFR_RNDN);
        mpfr_mul(r31905, r31904, r31880, MPFR_RNDN);
        mpfr_mul(r31906, r31905, r31892, MPFR_RNDN);
        if (mpfr_get_si(r31895, MPFR_RNDN)) { mpfr_set(r31907, r31902, MPFR_RNDN); } else { mpfr_set(r31907, r31906, MPFR_RNDN); };
        if (mpfr_get_si(r31863, MPFR_RNDN)) { mpfr_set(r31908, r31893, MPFR_RNDN); } else { mpfr_set(r31908, r31907, MPFR_RNDN); };
        return mpfr_get_d(r31908, MPFR_RNDN);
}

static mpfr_t r31909, r31910, r31911, r31912, r31913, r31914, r31915, r31916, r31917, r31918, r31919, r31920, r31921, r31922, r31923, r31924, r31925, r31926, r31927, r31928, r31929, r31930, r31931, r31932, r31933, r31934, r31935, r31936, r31937, r31938, r31939, r31940, r31941, r31942, r31943, r31944, r31945, r31946, r31947, r31948, r31949, r31950, r31951, r31952, r31953, r31954, r31955, r31956;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31909);
        mpfr_init_set_str(r31910, "2.34152252046331e-309", 10, MPFR_RNDN);
        mpfr_init(r31911);
        mpfr_init(r31912);
        mpfr_init(r31913);
        mpfr_init(r31914);
        mpfr_init(r31915);
        mpfr_init(r31916);
        mpfr_init_set_str(r31917, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31918, "2", 10, MPFR_RNDN);
        mpfr_init(r31919);
        mpfr_init(r31920);
        mpfr_init(r31921);
        mpfr_init(r31922);
        mpfr_init(r31923);
        mpfr_init(r31924);
        mpfr_init(r31925);
        mpfr_init(r31926);
        mpfr_init(r31927);
        mpfr_init(r31928);
        mpfr_init(r31929);
        mpfr_init(r31930);
        mpfr_init(r31931);
        mpfr_init(r31932);
        mpfr_init(r31933);
        mpfr_init(r31934);
        mpfr_init(r31935);
        mpfr_init(r31936);
        mpfr_init(r31937);
        mpfr_init(r31938);
        mpfr_init(r31939);
        mpfr_init(r31940);
        mpfr_init(r31941);
        mpfr_init_set_str(r31942, "3.0224487140598196e-141", 10, MPFR_RNDN);
        mpfr_init(r31943);
        mpfr_init(r31944);
        mpfr_init(r31945);
        mpfr_init(r31946);
        mpfr_init(r31947);
        mpfr_init(r31948);
        mpfr_init(r31949);
        mpfr_init(r31950);
        mpfr_init(r31951);
        mpfr_init(r31952);
        mpfr_init(r31953);
        mpfr_init(r31954);
        mpfr_init(r31955);
        mpfr_init(r31956);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31909, l, MPFR_RNDN);
        ;
        mpfr_set_si(r31911, mpfr_cmp(r31909, r31910) <= 0, MPFR_RNDN);
        mpfr_set_d(r31912, d, MPFR_RNDN);
        mpfr_set_d(r31913, h, MPFR_RNDN);
        mpfr_div(r31914, r31912, r31913, MPFR_RNDN);
        mpfr_cbrt(r31915, r31914, MPFR_RNDN);
        mpfr_mul(r31916, r31915, r31915, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31919, r31917, r31918, MPFR_RNDN);
        mpfr_pow(r31920, r31916, r31919, MPFR_RNDN);
        mpfr_cbrt(r31921, r31912, MPFR_RNDN);
        mpfr_div(r31922, r31917, r31913, MPFR_RNDN);
        mpfr_cbrt(r31923, r31922, MPFR_RNDN);
        mpfr_mul(r31924, r31921, r31923, MPFR_RNDN);
        mpfr_pow(r31925, r31924, r31919, MPFR_RNDN);
        mpfr_mul(r31926, r31920, r31925, MPFR_RNDN);
        mpfr_div(r31927, r31912, r31909, MPFR_RNDN);
        mpfr_pow(r31928, r31927, r31919, MPFR_RNDN);
        mpfr_mul(r31929, r31926, r31928, MPFR_RNDN);
        mpfr_set_d(r31930, M, MPFR_RNDN);
        mpfr_set_d(r31931, D, MPFR_RNDN);
        mpfr_mul(r31932, r31930, r31931, MPFR_RNDN);
        mpfr_mul(r31933, r31918, r31912, MPFR_RNDN);
        mpfr_div(r31934, r31932, r31933, MPFR_RNDN);
        mpfr_pow(r31935, r31934, r31918, MPFR_RNDN);
        mpfr_mul(r31936, r31917, r31935, MPFR_RNDN);
        mpfr_mul(r31937, r31936, r31913, MPFR_RNDN);
        mpfr_mul(r31938, r31918, r31909, MPFR_RNDN);
        mpfr_div(r31939, r31937, r31938, MPFR_RNDN);
        mpfr_sub(r31940, r31917, r31939, MPFR_RNDN);
        mpfr_mul(r31941, r31929, r31940, MPFR_RNDN);
        ;
        mpfr_set_si(r31943, mpfr_cmp(r31909, r31942) <= 0, MPFR_RNDN);
        mpfr_pow(r31944, r31914, r31919, MPFR_RNDN);
        mpfr_pow(r31945, r31912, r31919, MPFR_RNDN);
        mpfr_div(r31946, r31917, r31909, MPFR_RNDN);
        mpfr_pow(r31947, r31946, r31919, MPFR_RNDN);
        mpfr_mul(r31948, r31945, r31947, MPFR_RNDN);
        mpfr_mul(r31949, r31944, r31948, MPFR_RNDN);
        mpfr_mul(r31950, r31949, r31940, MPFR_RNDN);
        mpfr_pow(r31951, r31922, r31919, MPFR_RNDN);
        mpfr_mul(r31952, r31945, r31951, MPFR_RNDN);
        mpfr_mul(r31953, r31952, r31928, MPFR_RNDN);
        mpfr_mul(r31954, r31953, r31940, MPFR_RNDN);
        if (mpfr_get_si(r31943, MPFR_RNDN)) { mpfr_set(r31955, r31950, MPFR_RNDN); } else { mpfr_set(r31955, r31954, MPFR_RNDN); };
        if (mpfr_get_si(r31911, MPFR_RNDN)) { mpfr_set(r31956, r31941, MPFR_RNDN); } else { mpfr_set(r31956, r31955, MPFR_RNDN); };
        return mpfr_get_d(r31956, MPFR_RNDN);
}

