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

double f_id(double d, double h, double l, double M, double D) {
        double r31716 = d;
        double r31717 = h;
        double r31718 = r31716 / r31717;
        double r31719 = 1;
        double r31720 = 2;
        double r31721 = r31719 / r31720;
        double r31722 = pow(r31718, r31721);
        double r31723 = l;
        double r31724 = r31716 / r31723;
        double r31725 = pow(r31724, r31721);
        double r31726 = r31722 * r31725;
        double r31727 = M;
        double r31728 = D;
        double r31729 = r31727 * r31728;
        double r31730 = r31720 * r31716;
        double r31731 = r31729 / r31730;
        double r31732 = pow(r31731, r31720);
        double r31733 = r31721 * r31732;
        double r31734 = r31717 / r31723;
        double r31735 = r31733 * r31734;
        double r31736 = r31719 - r31735;
        double r31737 = r31726 * r31736;
        return r31737;
}


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

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

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 r31834, r31835, r31836, r31837, r31838, r31839, r31840, r31841, r31842, r31843, r31844, r31845, r31846, r31847, r31848, r31849, r31850, r31851, r31852, r31853, r31854, r31855;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r31834);
        mpfr_init(r31835);
        mpfr_init(r31836);
        mpfr_init_set_str(r31837, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31838, "2", 10, MPFR_RNDN);
        mpfr_init(r31839);
        mpfr_init(r31840);
        mpfr_init(r31841);
        mpfr_init(r31842);
        mpfr_init(r31843);
        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);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31834, d, MPFR_RNDN);
        mpfr_set_d(r31835, h, MPFR_RNDN);
        mpfr_div(r31836, r31834, r31835, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31839, r31837, r31838, MPFR_RNDN);
        mpfr_pow(r31840, r31836, r31839, MPFR_RNDN);
        mpfr_set_d(r31841, l, MPFR_RNDN);
        mpfr_div(r31842, r31834, r31841, MPFR_RNDN);
        mpfr_pow(r31843, r31842, r31839, MPFR_RNDN);
        mpfr_mul(r31844, r31840, r31843, MPFR_RNDN);
        mpfr_set_d(r31845, M, MPFR_RNDN);
        mpfr_set_d(r31846, D, MPFR_RNDN);
        mpfr_mul(r31847, r31845, r31846, MPFR_RNDN);
        mpfr_mul(r31848, r31838, r31834, MPFR_RNDN);
        mpfr_div(r31849, r31847, r31848, MPFR_RNDN);
        mpfr_pow(r31850, r31849, r31838, MPFR_RNDN);
        mpfr_mul(r31851, r31839, r31850, MPFR_RNDN);
        mpfr_div(r31852, r31835, r31841, MPFR_RNDN);
        mpfr_mul(r31853, r31851, r31852, MPFR_RNDN);
        mpfr_sub(r31854, r31837, r31853, MPFR_RNDN);
        mpfr_mul(r31855, r31844, r31854, MPFR_RNDN);
        return mpfr_get_d(r31855, MPFR_RNDN);
}

static mpfr_t r31856, r31857, r31858, r31859, r31860, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31856);
        mpfr_init_set_str(r31857, "2.34152252046331e-309", 10, MPFR_RNDN);
        mpfr_init(r31858);
        mpfr_init(r31859);
        mpfr_init(r31860);
        mpfr_init(r31861);
        mpfr_init(r31862);
        mpfr_init(r31863);
        mpfr_init_set_str(r31864, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31865, "2", 10, MPFR_RNDN);
        mpfr_init(r31866);
        mpfr_init(r31867);
        mpfr_init(r31868);
        mpfr_init(r31869);
        mpfr_init(r31870);
        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_set_str(r31889, "3.0224487140598196e-141", 10, MPFR_RNDN);
        mpfr_init(r31890);
        mpfr_init(r31891);
        mpfr_init(r31892);
        mpfr_init(r31893);
        mpfr_init(r31894);
        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);
}

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

static mpfr_t r31904, r31905, r31906, r31907, r31908, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31904);
        mpfr_init_set_str(r31905, "2.34152252046331e-309", 10, MPFR_RNDN);
        mpfr_init(r31906);
        mpfr_init(r31907);
        mpfr_init(r31908);
        mpfr_init(r31909);
        mpfr_init(r31910);
        mpfr_init(r31911);
        mpfr_init_set_str(r31912, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31913, "2", 10, MPFR_RNDN);
        mpfr_init(r31914);
        mpfr_init(r31915);
        mpfr_init(r31916);
        mpfr_init(r31917);
        mpfr_init(r31918);
        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_set_str(r31937, "3.0224487140598196e-141", 10, MPFR_RNDN);
        mpfr_init(r31938);
        mpfr_init(r31939);
        mpfr_init(r31940);
        mpfr_init(r31941);
        mpfr_init(r31942);
        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);
}

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

