#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 r10119 = d;
        float r10120 = h;
        float r10121 = r10119 / r10120;
        float r10122 = 1.0f;
        float r10123 = 2.0f;
        float r10124 = r10122 / r10123;
        float r10125 = pow(r10121, r10124);
        float r10126 = l;
        float r10127 = r10119 / r10126;
        float r10128 = pow(r10127, r10124);
        float r10129 = r10125 * r10128;
        float r10130 = M;
        float r10131 = D;
        float r10132 = r10130 * r10131;
        float r10133 = r10123 * r10119;
        float r10134 = r10132 / r10133;
        float r10135 = pow(r10134, r10123);
        float r10136 = r10124 * r10135;
        float r10137 = r10120 / r10126;
        float r10138 = r10136 * r10137;
        float r10139 = r10122 - r10138;
        float r10140 = r10129 * r10139;
        return r10140;
}

double f_id(double d, double h, double l, double M, double D) {
        double r10141 = d;
        double r10142 = h;
        double r10143 = r10141 / r10142;
        double r10144 = 1.0;
        double r10145 = 2.0;
        double r10146 = r10144 / r10145;
        double r10147 = pow(r10143, r10146);
        double r10148 = l;
        double r10149 = r10141 / r10148;
        double r10150 = pow(r10149, r10146);
        double r10151 = r10147 * r10150;
        double r10152 = M;
        double r10153 = D;
        double r10154 = r10152 * r10153;
        double r10155 = r10145 * r10141;
        double r10156 = r10154 / r10155;
        double r10157 = pow(r10156, r10145);
        double r10158 = r10146 * r10157;
        double r10159 = r10142 / r10148;
        double r10160 = r10158 * r10159;
        double r10161 = r10144 - r10160;
        double r10162 = r10151 * r10161;
        return r10162;
}


double f_of(float d, float h, float l, float M, float D) {
        float r10163 = h;
        float r10164 = -7.822099109832088e-72f;
        bool r10165 = r10163 <= r10164;
        float r10166 = d;
        float r10167 = r10166 / r10163;
        float r10168 = 1.0f;
        float r10169 = 2.0f;
        float r10170 = r10168 / r10169;
        float r10171 = pow(r10167, r10170);
        float r10172 = -1.0f;
        float r10173 = l;
        float r10174 = r10172 / r10173;
        float r10175 = sqrt(r10174);
        float r10176 = r10172 / r10166;
        float r10177 = 0.5f;
        float r10178 = pow(r10176, r10177);
        float r10179 = r10175 / r10178;
        float r10180 = r10171 * r10179;
        float r10181 = r10166 * r10169;
        float r10182 = r10168 / r10181;
        float r10183 = M;
        float r10184 = D;
        float r10185 = r10183 * r10184;
        float r10186 = r10182 * r10185;
        float r10187 = pow(r10186, r10169);
        float r10188 = r10187 * r10170;
        float r10189 = r10163 * r10188;
        float r10190 = r10189 / r10173;
        float r10191 = r10168 - r10190;
        float r10192 = r10180 * r10191;
        float r10193 = 2.25962810701194e-310f;
        bool r10194 = r10163 <= r10193;
        float r10195 = r10172 / r10163;
        float r10196 = sqrt(r10195);
        float r10197 = r10196 / r10178;
        float r10198 = r10166 / r10173;
        float r10199 = pow(r10198, r10170);
        float r10200 = r10197 * r10199;
        float r10201 = r10191 * r10200;
        float r10202 = 2.4765689122964102e-257f;
        bool r10203 = r10163 <= r10202;
        float r10204 = sqrt(r10166);
        float r10205 = pow(r10163, r10177);
        float r10206 = r10204 / r10205;
        float r10207 = r10199 * r10206;
        float r10208 = r10191 * r10207;
        float r10209 = pow(r10173, r10177);
        float r10210 = r10204 / r10209;
        float r10211 = r10210 * r10171;
        float r10212 = r10191 * r10211;
        float r10213 = r10203 ? r10208 : r10212;
        float r10214 = r10194 ? r10201 : r10213;
        float r10215 = r10165 ? r10192 : r10214;
        return r10215;
}

double f_od(double d, double h, double l, double M, double D) {
        double r10216 = h;
        double r10217 = -7.822099109832088e-72;
        bool r10218 = r10216 <= r10217;
        double r10219 = d;
        double r10220 = r10219 / r10216;
        double r10221 = 1.0;
        double r10222 = 2.0;
        double r10223 = r10221 / r10222;
        double r10224 = pow(r10220, r10223);
        double r10225 = -1.0;
        double r10226 = l;
        double r10227 = r10225 / r10226;
        double r10228 = sqrt(r10227);
        double r10229 = r10225 / r10219;
        double r10230 = 0.5;
        double r10231 = pow(r10229, r10230);
        double r10232 = r10228 / r10231;
        double r10233 = r10224 * r10232;
        double r10234 = r10219 * r10222;
        double r10235 = r10221 / r10234;
        double r10236 = M;
        double r10237 = D;
        double r10238 = r10236 * r10237;
        double r10239 = r10235 * r10238;
        double r10240 = pow(r10239, r10222);
        double r10241 = r10240 * r10223;
        double r10242 = r10216 * r10241;
        double r10243 = r10242 / r10226;
        double r10244 = r10221 - r10243;
        double r10245 = r10233 * r10244;
        double r10246 = 2.25962810701194e-310;
        bool r10247 = r10216 <= r10246;
        double r10248 = r10225 / r10216;
        double r10249 = sqrt(r10248);
        double r10250 = r10249 / r10231;
        double r10251 = r10219 / r10226;
        double r10252 = pow(r10251, r10223);
        double r10253 = r10250 * r10252;
        double r10254 = r10244 * r10253;
        double r10255 = 2.4765689122964102e-257;
        bool r10256 = r10216 <= r10255;
        double r10257 = sqrt(r10219);
        double r10258 = pow(r10216, r10230);
        double r10259 = r10257 / r10258;
        double r10260 = r10252 * r10259;
        double r10261 = r10244 * r10260;
        double r10262 = pow(r10226, r10230);
        double r10263 = r10257 / r10262;
        double r10264 = r10263 * r10224;
        double r10265 = r10244 * r10264;
        double r10266 = r10256 ? r10261 : r10265;
        double r10267 = r10247 ? r10254 : r10266;
        double r10268 = r10218 ? r10245 : r10267;
        return r10268;
}

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 r10269, r10270, r10271, r10272, r10273, r10274, r10275, r10276, r10277, r10278, r10279, r10280, r10281, r10282, r10283, r10284, r10285, r10286, r10287, r10288, r10289, r10290;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init_set_str(r10272, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10273, "2", 10, MPFR_RNDN);
        mpfr_init(r10274);
        mpfr_init(r10275);
        mpfr_init(r10276);
        mpfr_init(r10277);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
        mpfr_init(r10283);
        mpfr_init(r10284);
        mpfr_init(r10285);
        mpfr_init(r10286);
        mpfr_init(r10287);
        mpfr_init(r10288);
        mpfr_init(r10289);
        mpfr_init(r10290);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r10269, d, MPFR_RNDN);
        mpfr_set_d(r10270, h, MPFR_RNDN);
        mpfr_div(r10271, r10269, r10270, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10274, r10272, r10273, MPFR_RNDN);
        mpfr_pow(r10275, r10271, r10274, MPFR_RNDN);
        mpfr_set_d(r10276, l, MPFR_RNDN);
        mpfr_div(r10277, r10269, r10276, MPFR_RNDN);
        mpfr_pow(r10278, r10277, r10274, MPFR_RNDN);
        mpfr_mul(r10279, r10275, r10278, MPFR_RNDN);
        mpfr_set_d(r10280, M, MPFR_RNDN);
        mpfr_set_d(r10281, D, MPFR_RNDN);
        mpfr_mul(r10282, r10280, r10281, MPFR_RNDN);
        mpfr_mul(r10283, r10273, r10269, MPFR_RNDN);
        mpfr_div(r10284, r10282, r10283, MPFR_RNDN);
        mpfr_pow(r10285, r10284, r10273, MPFR_RNDN);
        mpfr_mul(r10286, r10274, r10285, MPFR_RNDN);
        mpfr_div(r10287, r10270, r10276, MPFR_RNDN);
        mpfr_mul(r10288, r10286, r10287, MPFR_RNDN);
        mpfr_sub(r10289, r10272, r10288, MPFR_RNDN);
        mpfr_mul(r10290, r10279, r10289, MPFR_RNDN);
        return mpfr_get_d(r10290, MPFR_RNDN);
}

static mpfr_t r10291, r10292, r10293, r10294, r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310, r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321, r10322, r10323, r10324, r10325, r10326, r10327, r10328, r10329, r10330, r10331, r10332, r10333, r10334, r10335, r10336, r10337, r10338, r10339, r10340, r10341, r10342, r10343;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10291);
        mpfr_init_set_str(r10292, "-7.822099109832088e-72", 10, MPFR_RNDN);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init_set_str(r10296, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10297, "2", 10, MPFR_RNDN);
        mpfr_init(r10298);
        mpfr_init(r10299);
        mpfr_init_set_str(r10300, "-1", 10, MPFR_RNDN);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init_set_str(r10305, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10306);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
        mpfr_init(r10311);
        mpfr_init(r10312);
        mpfr_init(r10313);
        mpfr_init(r10314);
        mpfr_init(r10315);
        mpfr_init(r10316);
        mpfr_init(r10317);
        mpfr_init(r10318);
        mpfr_init(r10319);
        mpfr_init(r10320);
        mpfr_init_set_str(r10321, "2.25962810701194e-310", 10, MPFR_RNDN);
        mpfr_init(r10322);
        mpfr_init(r10323);
        mpfr_init(r10324);
        mpfr_init(r10325);
        mpfr_init(r10326);
        mpfr_init(r10327);
        mpfr_init(r10328);
        mpfr_init(r10329);
        mpfr_init_set_str(r10330, "2.4765689122964102e-257", 10, MPFR_RNDN);
        mpfr_init(r10331);
        mpfr_init(r10332);
        mpfr_init(r10333);
        mpfr_init(r10334);
        mpfr_init(r10335);
        mpfr_init(r10336);
        mpfr_init(r10337);
        mpfr_init(r10338);
        mpfr_init(r10339);
        mpfr_init(r10340);
        mpfr_init(r10341);
        mpfr_init(r10342);
        mpfr_init(r10343);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r10291, h, MPFR_RNDN);
        ;
        mpfr_set_si(r10293, mpfr_cmp(r10291, r10292) <= 0, MPFR_RNDN);
        mpfr_set_d(r10294, d, MPFR_RNDN);
        mpfr_div(r10295, r10294, r10291, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10298, r10296, r10297, MPFR_RNDN);
        mpfr_pow(r10299, r10295, r10298, MPFR_RNDN);
        ;
        mpfr_set_d(r10301, l, MPFR_RNDN);
        mpfr_div(r10302, r10300, r10301, MPFR_RNDN);
        mpfr_sqrt(r10303, r10302, MPFR_RNDN);
        mpfr_div(r10304, r10300, r10294, MPFR_RNDN);
        ;
        mpfr_pow(r10306, r10304, r10305, MPFR_RNDN);
        mpfr_div(r10307, r10303, r10306, MPFR_RNDN);
        mpfr_mul(r10308, r10299, r10307, MPFR_RNDN);
        mpfr_mul(r10309, r10294, r10297, MPFR_RNDN);
        mpfr_div(r10310, r10296, r10309, MPFR_RNDN);
        mpfr_set_d(r10311, M, MPFR_RNDN);
        mpfr_set_d(r10312, D, MPFR_RNDN);
        mpfr_mul(r10313, r10311, r10312, MPFR_RNDN);
        mpfr_mul(r10314, r10310, r10313, MPFR_RNDN);
        mpfr_pow(r10315, r10314, r10297, MPFR_RNDN);
        mpfr_mul(r10316, r10315, r10298, MPFR_RNDN);
        mpfr_mul(r10317, r10291, r10316, MPFR_RNDN);
        mpfr_div(r10318, r10317, r10301, MPFR_RNDN);
        mpfr_sub(r10319, r10296, r10318, MPFR_RNDN);
        mpfr_mul(r10320, r10308, r10319, MPFR_RNDN);
        ;
        mpfr_set_si(r10322, mpfr_cmp(r10291, r10321) <= 0, MPFR_RNDN);
        mpfr_div(r10323, r10300, r10291, MPFR_RNDN);
        mpfr_sqrt(r10324, r10323, MPFR_RNDN);
        mpfr_div(r10325, r10324, r10306, MPFR_RNDN);
        mpfr_div(r10326, r10294, r10301, MPFR_RNDN);
        mpfr_pow(r10327, r10326, r10298, MPFR_RNDN);
        mpfr_mul(r10328, r10325, r10327, MPFR_RNDN);
        mpfr_mul(r10329, r10319, r10328, MPFR_RNDN);
        ;
        mpfr_set_si(r10331, mpfr_cmp(r10291, r10330) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10332, r10294, MPFR_RNDN);
        mpfr_pow(r10333, r10291, r10305, MPFR_RNDN);
        mpfr_div(r10334, r10332, r10333, MPFR_RNDN);
        mpfr_mul(r10335, r10327, r10334, MPFR_RNDN);
        mpfr_mul(r10336, r10319, r10335, MPFR_RNDN);
        mpfr_pow(r10337, r10301, r10305, MPFR_RNDN);
        mpfr_div(r10338, r10332, r10337, MPFR_RNDN);
        mpfr_mul(r10339, r10338, r10299, MPFR_RNDN);
        mpfr_mul(r10340, r10319, r10339, MPFR_RNDN);
        if (mpfr_get_si(r10331, MPFR_RNDN)) { mpfr_set(r10341, r10336, MPFR_RNDN); } else { mpfr_set(r10341, r10340, MPFR_RNDN); };
        if (mpfr_get_si(r10322, MPFR_RNDN)) { mpfr_set(r10342, r10329, MPFR_RNDN); } else { mpfr_set(r10342, r10341, MPFR_RNDN); };
        if (mpfr_get_si(r10293, MPFR_RNDN)) { mpfr_set(r10343, r10320, MPFR_RNDN); } else { mpfr_set(r10343, r10342, MPFR_RNDN); };
        return mpfr_get_d(r10343, MPFR_RNDN);
}

static mpfr_t r10344, r10345, r10346, r10347, r10348, r10349, r10350, r10351, r10352, r10353, r10354, r10355, r10356, r10357, r10358, r10359, r10360, r10361, r10362, r10363, r10364, r10365, r10366, r10367, r10368, r10369, r10370, r10371, r10372, r10373, r10374, r10375, r10376, r10377, r10378, r10379, r10380, r10381, r10382, r10383, r10384, r10385, r10386, r10387, r10388, r10389, r10390, r10391, r10392, r10393, r10394, r10395, r10396;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10344);
        mpfr_init_set_str(r10345, "-7.822099109832088e-72", 10, MPFR_RNDN);
        mpfr_init(r10346);
        mpfr_init(r10347);
        mpfr_init(r10348);
        mpfr_init_set_str(r10349, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10350, "2", 10, MPFR_RNDN);
        mpfr_init(r10351);
        mpfr_init(r10352);
        mpfr_init_set_str(r10353, "-1", 10, MPFR_RNDN);
        mpfr_init(r10354);
        mpfr_init(r10355);
        mpfr_init(r10356);
        mpfr_init(r10357);
        mpfr_init_set_str(r10358, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10359);
        mpfr_init(r10360);
        mpfr_init(r10361);
        mpfr_init(r10362);
        mpfr_init(r10363);
        mpfr_init(r10364);
        mpfr_init(r10365);
        mpfr_init(r10366);
        mpfr_init(r10367);
        mpfr_init(r10368);
        mpfr_init(r10369);
        mpfr_init(r10370);
        mpfr_init(r10371);
        mpfr_init(r10372);
        mpfr_init(r10373);
        mpfr_init_set_str(r10374, "2.25962810701194e-310", 10, MPFR_RNDN);
        mpfr_init(r10375);
        mpfr_init(r10376);
        mpfr_init(r10377);
        mpfr_init(r10378);
        mpfr_init(r10379);
        mpfr_init(r10380);
        mpfr_init(r10381);
        mpfr_init(r10382);
        mpfr_init_set_str(r10383, "2.4765689122964102e-257", 10, MPFR_RNDN);
        mpfr_init(r10384);
        mpfr_init(r10385);
        mpfr_init(r10386);
        mpfr_init(r10387);
        mpfr_init(r10388);
        mpfr_init(r10389);
        mpfr_init(r10390);
        mpfr_init(r10391);
        mpfr_init(r10392);
        mpfr_init(r10393);
        mpfr_init(r10394);
        mpfr_init(r10395);
        mpfr_init(r10396);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r10344, h, MPFR_RNDN);
        ;
        mpfr_set_si(r10346, mpfr_cmp(r10344, r10345) <= 0, MPFR_RNDN);
        mpfr_set_d(r10347, d, MPFR_RNDN);
        mpfr_div(r10348, r10347, r10344, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10351, r10349, r10350, MPFR_RNDN);
        mpfr_pow(r10352, r10348, r10351, MPFR_RNDN);
        ;
        mpfr_set_d(r10354, l, MPFR_RNDN);
        mpfr_div(r10355, r10353, r10354, MPFR_RNDN);
        mpfr_sqrt(r10356, r10355, MPFR_RNDN);
        mpfr_div(r10357, r10353, r10347, MPFR_RNDN);
        ;
        mpfr_pow(r10359, r10357, r10358, MPFR_RNDN);
        mpfr_div(r10360, r10356, r10359, MPFR_RNDN);
        mpfr_mul(r10361, r10352, r10360, MPFR_RNDN);
        mpfr_mul(r10362, r10347, r10350, MPFR_RNDN);
        mpfr_div(r10363, r10349, r10362, MPFR_RNDN);
        mpfr_set_d(r10364, M, MPFR_RNDN);
        mpfr_set_d(r10365, D, MPFR_RNDN);
        mpfr_mul(r10366, r10364, r10365, MPFR_RNDN);
        mpfr_mul(r10367, r10363, r10366, MPFR_RNDN);
        mpfr_pow(r10368, r10367, r10350, MPFR_RNDN);
        mpfr_mul(r10369, r10368, r10351, MPFR_RNDN);
        mpfr_mul(r10370, r10344, r10369, MPFR_RNDN);
        mpfr_div(r10371, r10370, r10354, MPFR_RNDN);
        mpfr_sub(r10372, r10349, r10371, MPFR_RNDN);
        mpfr_mul(r10373, r10361, r10372, MPFR_RNDN);
        ;
        mpfr_set_si(r10375, mpfr_cmp(r10344, r10374) <= 0, MPFR_RNDN);
        mpfr_div(r10376, r10353, r10344, MPFR_RNDN);
        mpfr_sqrt(r10377, r10376, MPFR_RNDN);
        mpfr_div(r10378, r10377, r10359, MPFR_RNDN);
        mpfr_div(r10379, r10347, r10354, MPFR_RNDN);
        mpfr_pow(r10380, r10379, r10351, MPFR_RNDN);
        mpfr_mul(r10381, r10378, r10380, MPFR_RNDN);
        mpfr_mul(r10382, r10372, r10381, MPFR_RNDN);
        ;
        mpfr_set_si(r10384, mpfr_cmp(r10344, r10383) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10385, r10347, MPFR_RNDN);
        mpfr_pow(r10386, r10344, r10358, MPFR_RNDN);
        mpfr_div(r10387, r10385, r10386, MPFR_RNDN);
        mpfr_mul(r10388, r10380, r10387, MPFR_RNDN);
        mpfr_mul(r10389, r10372, r10388, MPFR_RNDN);
        mpfr_pow(r10390, r10354, r10358, MPFR_RNDN);
        mpfr_div(r10391, r10385, r10390, MPFR_RNDN);
        mpfr_mul(r10392, r10391, r10352, MPFR_RNDN);
        mpfr_mul(r10393, r10372, r10392, MPFR_RNDN);
        if (mpfr_get_si(r10384, MPFR_RNDN)) { mpfr_set(r10394, r10389, MPFR_RNDN); } else { mpfr_set(r10394, r10393, MPFR_RNDN); };
        if (mpfr_get_si(r10375, MPFR_RNDN)) { mpfr_set(r10395, r10382, MPFR_RNDN); } else { mpfr_set(r10395, r10394, MPFR_RNDN); };
        if (mpfr_get_si(r10346, MPFR_RNDN)) { mpfr_set(r10396, r10373, MPFR_RNDN); } else { mpfr_set(r10396, r10395, MPFR_RNDN); };
        return mpfr_get_d(r10396, MPFR_RNDN);
}

