#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 r10238 = d;
        float r10239 = h;
        float r10240 = r10238 / r10239;
        float r10241 = 1;
        float r10242 = 2;
        float r10243 = r10241 / r10242;
        float r10244 = pow(r10240, r10243);
        float r10245 = l;
        float r10246 = r10238 / r10245;
        float r10247 = pow(r10246, r10243);
        float r10248 = r10244 * r10247;
        float r10249 = M;
        float r10250 = D;
        float r10251 = r10249 * r10250;
        float r10252 = r10242 * r10238;
        float r10253 = r10251 / r10252;
        float r10254 = pow(r10253, r10242);
        float r10255 = r10243 * r10254;
        float r10256 = r10239 / r10245;
        float r10257 = r10255 * r10256;
        float r10258 = r10241 - r10257;
        float r10259 = r10248 * r10258;
        return r10259;
}

double f_id(double d, double h, double l, double M, double D) {
        double r10260 = d;
        double r10261 = h;
        double r10262 = r10260 / r10261;
        double r10263 = 1;
        double r10264 = 2;
        double r10265 = r10263 / r10264;
        double r10266 = pow(r10262, r10265);
        double r10267 = l;
        double r10268 = r10260 / r10267;
        double r10269 = pow(r10268, r10265);
        double r10270 = r10266 * r10269;
        double r10271 = M;
        double r10272 = D;
        double r10273 = r10271 * r10272;
        double r10274 = r10264 * r10260;
        double r10275 = r10273 / r10274;
        double r10276 = pow(r10275, r10264);
        double r10277 = r10265 * r10276;
        double r10278 = r10261 / r10267;
        double r10279 = r10277 * r10278;
        double r10280 = r10263 - r10279;
        double r10281 = r10270 * r10280;
        return r10281;
}


double f_of(float d, float h, float l, float M, float D) {
        float r10282 = 1;
        float r10283 = l;
        float r10284 = r10282 / r10283;
        float r10285 = -3.4557846826748836e-302;
        bool r10286 = r10284 <= r10285;
        float r10287 = d;
        float r10288 = h;
        float r10289 = r10287 / r10288;
        float r10290 = 2;
        float r10291 = r10282 / r10290;
        float r10292 = pow(r10289, r10291);
        float r10293 = r10287 / r10283;
        float r10294 = pow(r10293, r10291);
        float r10295 = r10292 * r10294;
        float r10296 = M;
        float r10297 = D;
        float r10298 = r10296 * r10297;
        float r10299 = r10290 * r10287;
        float r10300 = r10298 / r10299;
        float r10301 = pow(r10300, r10290);
        float r10302 = r10291 * r10301;
        float r10303 = r10302 * r10288;
        float r10304 = cbrt(r10303);
        float r10305 = r10304 * r10304;
        float r10306 = r10305 * r10304;
        float r10307 = r10306 * r10284;
        float r10308 = r10282 - r10307;
        float r10309 = r10295 * r10308;
        float r10310 = 7.14416675854179e-157;
        bool r10311 = r10284 <= r10310;
        float r10312 = 1/2;
        float r10313 = log(r10287);
        float r10314 = log(r10283);
        float r10315 = r10313 - r10314;
        float r10316 = r10312 * r10315;
        float r10317 = exp(r10316);
        float r10318 = r10292 * r10317;
        float r10319 = r10288 / r10283;
        float r10320 = r10302 * r10319;
        float r10321 = r10282 - r10320;
        float r10322 = r10318 * r10321;
        float r10323 = 1.2902540726783813e+168;
        bool r10324 = r10284 <= r10323;
        float r10325 = pow(r10287, r10291);
        float r10326 = r10282 / r10288;
        float r10327 = pow(r10326, r10291);
        float r10328 = r10325 * r10327;
        float r10329 = r10328 * r10294;
        float r10330 = r10303 * r10284;
        float r10331 = r10282 - r10330;
        float r10332 = r10329 * r10331;
        float r10333 = pow(r10284, r10291);
        float r10334 = r10325 * r10333;
        float r10335 = r10292 * r10334;
        float r10336 = r10335 * r10331;
        float r10337 = r10324 ? r10332 : r10336;
        float r10338 = r10311 ? r10322 : r10337;
        float r10339 = r10286 ? r10309 : r10338;
        return r10339;
}

double f_od(double d, double h, double l, double M, double D) {
        double r10340 = 1;
        double r10341 = l;
        double r10342 = r10340 / r10341;
        double r10343 = -3.4557846826748836e-302;
        bool r10344 = r10342 <= r10343;
        double r10345 = d;
        double r10346 = h;
        double r10347 = r10345 / r10346;
        double r10348 = 2;
        double r10349 = r10340 / r10348;
        double r10350 = pow(r10347, r10349);
        double r10351 = r10345 / r10341;
        double r10352 = pow(r10351, r10349);
        double r10353 = r10350 * r10352;
        double r10354 = M;
        double r10355 = D;
        double r10356 = r10354 * r10355;
        double r10357 = r10348 * r10345;
        double r10358 = r10356 / r10357;
        double r10359 = pow(r10358, r10348);
        double r10360 = r10349 * r10359;
        double r10361 = r10360 * r10346;
        double r10362 = cbrt(r10361);
        double r10363 = r10362 * r10362;
        double r10364 = r10363 * r10362;
        double r10365 = r10364 * r10342;
        double r10366 = r10340 - r10365;
        double r10367 = r10353 * r10366;
        double r10368 = 7.14416675854179e-157;
        bool r10369 = r10342 <= r10368;
        double r10370 = 1/2;
        double r10371 = log(r10345);
        double r10372 = log(r10341);
        double r10373 = r10371 - r10372;
        double r10374 = r10370 * r10373;
        double r10375 = exp(r10374);
        double r10376 = r10350 * r10375;
        double r10377 = r10346 / r10341;
        double r10378 = r10360 * r10377;
        double r10379 = r10340 - r10378;
        double r10380 = r10376 * r10379;
        double r10381 = 1.2902540726783813e+168;
        bool r10382 = r10342 <= r10381;
        double r10383 = pow(r10345, r10349);
        double r10384 = r10340 / r10346;
        double r10385 = pow(r10384, r10349);
        double r10386 = r10383 * r10385;
        double r10387 = r10386 * r10352;
        double r10388 = r10361 * r10342;
        double r10389 = r10340 - r10388;
        double r10390 = r10387 * r10389;
        double r10391 = pow(r10342, r10349);
        double r10392 = r10383 * r10391;
        double r10393 = r10350 * r10392;
        double r10394 = r10393 * r10389;
        double r10395 = r10382 ? r10390 : r10394;
        double r10396 = r10369 ? r10380 : r10395;
        double r10397 = r10344 ? r10367 : r10396;
        return r10397;
}

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 r10398, r10399, r10400, r10401, r10402, r10403, r10404, r10405, r10406, r10407, r10408, r10409, r10410, r10411, r10412, r10413, r10414, r10415, r10416, r10417, r10418, r10419;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10398);
        mpfr_init(r10399);
        mpfr_init(r10400);
        mpfr_init_set_str(r10401, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10402, "2", 10, MPFR_RNDN);
        mpfr_init(r10403);
        mpfr_init(r10404);
        mpfr_init(r10405);
        mpfr_init(r10406);
        mpfr_init(r10407);
        mpfr_init(r10408);
        mpfr_init(r10409);
        mpfr_init(r10410);
        mpfr_init(r10411);
        mpfr_init(r10412);
        mpfr_init(r10413);
        mpfr_init(r10414);
        mpfr_init(r10415);
        mpfr_init(r10416);
        mpfr_init(r10417);
        mpfr_init(r10418);
        mpfr_init(r10419);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r10398, d, MPFR_RNDN);
        mpfr_set_d(r10399, h, MPFR_RNDN);
        mpfr_div(r10400, r10398, r10399, MPFR_RNDN);
        ;
        ;
        mpfr_div(r10403, r10401, r10402, MPFR_RNDN);
        mpfr_pow(r10404, r10400, r10403, MPFR_RNDN);
        mpfr_set_d(r10405, l, MPFR_RNDN);
        mpfr_div(r10406, r10398, r10405, MPFR_RNDN);
        mpfr_pow(r10407, r10406, r10403, MPFR_RNDN);
        mpfr_mul(r10408, r10404, r10407, MPFR_RNDN);
        mpfr_set_d(r10409, M, MPFR_RNDN);
        mpfr_set_d(r10410, D, MPFR_RNDN);
        mpfr_mul(r10411, r10409, r10410, MPFR_RNDN);
        mpfr_mul(r10412, r10402, r10398, MPFR_RNDN);
        mpfr_div(r10413, r10411, r10412, MPFR_RNDN);
        mpfr_pow(r10414, r10413, r10402, MPFR_RNDN);
        mpfr_mul(r10415, r10403, r10414, MPFR_RNDN);
        mpfr_div(r10416, r10399, r10405, MPFR_RNDN);
        mpfr_mul(r10417, r10415, r10416, MPFR_RNDN);
        mpfr_sub(r10418, r10401, r10417, MPFR_RNDN);
        mpfr_mul(r10419, r10408, r10418, MPFR_RNDN);
        return mpfr_get_d(r10419, MPFR_RNDN);
}

static mpfr_t r10420, r10421, r10422, r10423, r10424, r10425, r10426, r10427, r10428, r10429, r10430, r10431, r10432, r10433, r10434, r10435, r10436, r10437, r10438, r10439, r10440, r10441, r10442, r10443, r10444, r10445, r10446, r10447, r10448, r10449, r10450, r10451, r10452, r10453, r10454, r10455, r10456, r10457, r10458, r10459, r10460, r10461, r10462, r10463, r10464, r10465, r10466, r10467, r10468, r10469, r10470, r10471, r10472, r10473, r10474, r10475, r10476, r10477;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10420, "1", 10, MPFR_RNDN);
        mpfr_init(r10421);
        mpfr_init(r10422);
        mpfr_init_set_str(r10423, "-3.4557846826748836e-302", 10, MPFR_RNDN);
        mpfr_init(r10424);
        mpfr_init(r10425);
        mpfr_init(r10426);
        mpfr_init(r10427);
        mpfr_init_set_str(r10428, "2", 10, MPFR_RNDN);
        mpfr_init(r10429);
        mpfr_init(r10430);
        mpfr_init(r10431);
        mpfr_init(r10432);
        mpfr_init(r10433);
        mpfr_init(r10434);
        mpfr_init(r10435);
        mpfr_init(r10436);
        mpfr_init(r10437);
        mpfr_init(r10438);
        mpfr_init(r10439);
        mpfr_init(r10440);
        mpfr_init(r10441);
        mpfr_init(r10442);
        mpfr_init(r10443);
        mpfr_init(r10444);
        mpfr_init(r10445);
        mpfr_init(r10446);
        mpfr_init(r10447);
        mpfr_init_set_str(r10448, "7.14416675854179e-157", 10, MPFR_RNDN);
        mpfr_init(r10449);
        mpfr_init_set_str(r10450, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10451);
        mpfr_init(r10452);
        mpfr_init(r10453);
        mpfr_init(r10454);
        mpfr_init(r10455);
        mpfr_init(r10456);
        mpfr_init(r10457);
        mpfr_init(r10458);
        mpfr_init(r10459);
        mpfr_init(r10460);
        mpfr_init_set_str(r10461, "1.2902540726783813e+168", 10, MPFR_RNDN);
        mpfr_init(r10462);
        mpfr_init(r10463);
        mpfr_init(r10464);
        mpfr_init(r10465);
        mpfr_init(r10466);
        mpfr_init(r10467);
        mpfr_init(r10468);
        mpfr_init(r10469);
        mpfr_init(r10470);
        mpfr_init(r10471);
        mpfr_init(r10472);
        mpfr_init(r10473);
        mpfr_init(r10474);
        mpfr_init(r10475);
        mpfr_init(r10476);
        mpfr_init(r10477);
}

double f_fm(double d, double h, double l, double M, double D) {
        ;
        mpfr_set_d(r10421, l, MPFR_RNDN);
        mpfr_div(r10422, r10420, r10421, MPFR_RNDN);
        ;
        mpfr_set_si(r10424, mpfr_cmp(r10422, r10423) <= 0, MPFR_RNDN);
        mpfr_set_d(r10425, d, MPFR_RNDN);
        mpfr_set_d(r10426, h, MPFR_RNDN);
        mpfr_div(r10427, r10425, r10426, MPFR_RNDN);
        ;
        mpfr_div(r10429, r10420, r10428, MPFR_RNDN);
        mpfr_pow(r10430, r10427, r10429, MPFR_RNDN);
        mpfr_div(r10431, r10425, r10421, MPFR_RNDN);
        mpfr_pow(r10432, r10431, r10429, MPFR_RNDN);
        mpfr_mul(r10433, r10430, r10432, MPFR_RNDN);
        mpfr_set_d(r10434, M, MPFR_RNDN);
        mpfr_set_d(r10435, D, MPFR_RNDN);
        mpfr_mul(r10436, r10434, r10435, MPFR_RNDN);
        mpfr_mul(r10437, r10428, r10425, MPFR_RNDN);
        mpfr_div(r10438, r10436, r10437, MPFR_RNDN);
        mpfr_pow(r10439, r10438, r10428, MPFR_RNDN);
        mpfr_mul(r10440, r10429, r10439, MPFR_RNDN);
        mpfr_mul(r10441, r10440, r10426, MPFR_RNDN);
        mpfr_cbrt(r10442, r10441, MPFR_RNDN);
        mpfr_mul(r10443, r10442, r10442, MPFR_RNDN);
        mpfr_mul(r10444, r10443, r10442, MPFR_RNDN);
        mpfr_mul(r10445, r10444, r10422, MPFR_RNDN);
        mpfr_sub(r10446, r10420, r10445, MPFR_RNDN);
        mpfr_mul(r10447, r10433, r10446, MPFR_RNDN);
        ;
        mpfr_set_si(r10449, mpfr_cmp(r10422, r10448) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r10451, r10425, MPFR_RNDN);
        mpfr_log(r10452, r10421, MPFR_RNDN);
        mpfr_sub(r10453, r10451, r10452, MPFR_RNDN);
        mpfr_mul(r10454, r10450, r10453, MPFR_RNDN);
        mpfr_exp(r10455, r10454, MPFR_RNDN);
        mpfr_mul(r10456, r10430, r10455, MPFR_RNDN);
        mpfr_div(r10457, r10426, r10421, MPFR_RNDN);
        mpfr_mul(r10458, r10440, r10457, MPFR_RNDN);
        mpfr_sub(r10459, r10420, r10458, MPFR_RNDN);
        mpfr_mul(r10460, r10456, r10459, MPFR_RNDN);
        ;
        mpfr_set_si(r10462, mpfr_cmp(r10422, r10461) <= 0, MPFR_RNDN);
        mpfr_pow(r10463, r10425, r10429, MPFR_RNDN);
        mpfr_div(r10464, r10420, r10426, MPFR_RNDN);
        mpfr_pow(r10465, r10464, r10429, MPFR_RNDN);
        mpfr_mul(r10466, r10463, r10465, MPFR_RNDN);
        mpfr_mul(r10467, r10466, r10432, MPFR_RNDN);
        mpfr_mul(r10468, r10441, r10422, MPFR_RNDN);
        mpfr_sub(r10469, r10420, r10468, MPFR_RNDN);
        mpfr_mul(r10470, r10467, r10469, MPFR_RNDN);
        mpfr_pow(r10471, r10422, r10429, MPFR_RNDN);
        mpfr_mul(r10472, r10463, r10471, MPFR_RNDN);
        mpfr_mul(r10473, r10430, r10472, MPFR_RNDN);
        mpfr_mul(r10474, r10473, r10469, MPFR_RNDN);
        if (mpfr_get_si(r10462, MPFR_RNDN)) { mpfr_set(r10475, r10470, MPFR_RNDN); } else { mpfr_set(r10475, r10474, MPFR_RNDN); };
        if (mpfr_get_si(r10449, MPFR_RNDN)) { mpfr_set(r10476, r10460, MPFR_RNDN); } else { mpfr_set(r10476, r10475, MPFR_RNDN); };
        if (mpfr_get_si(r10424, MPFR_RNDN)) { mpfr_set(r10477, r10447, MPFR_RNDN); } else { mpfr_set(r10477, r10476, MPFR_RNDN); };
        return mpfr_get_d(r10477, MPFR_RNDN);
}

static mpfr_t r10478, r10479, r10480, r10481, r10482, r10483, r10484, r10485, r10486, r10487, r10488, r10489, r10490, r10491, r10492, r10493, r10494, r10495, r10496, r10497, r10498, r10499, r10500, r10501, r10502, r10503, r10504, r10505, r10506, r10507, r10508, r10509, r10510, r10511, r10512, r10513, r10514, r10515, r10516, r10517, r10518, r10519, r10520, r10521, r10522, r10523, r10524, r10525, r10526, r10527, r10528, r10529, r10530, r10531, r10532, r10533, r10534, r10535;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10478, "1", 10, MPFR_RNDN);
        mpfr_init(r10479);
        mpfr_init(r10480);
        mpfr_init_set_str(r10481, "-3.4557846826748836e-302", 10, MPFR_RNDN);
        mpfr_init(r10482);
        mpfr_init(r10483);
        mpfr_init(r10484);
        mpfr_init(r10485);
        mpfr_init_set_str(r10486, "2", 10, MPFR_RNDN);
        mpfr_init(r10487);
        mpfr_init(r10488);
        mpfr_init(r10489);
        mpfr_init(r10490);
        mpfr_init(r10491);
        mpfr_init(r10492);
        mpfr_init(r10493);
        mpfr_init(r10494);
        mpfr_init(r10495);
        mpfr_init(r10496);
        mpfr_init(r10497);
        mpfr_init(r10498);
        mpfr_init(r10499);
        mpfr_init(r10500);
        mpfr_init(r10501);
        mpfr_init(r10502);
        mpfr_init(r10503);
        mpfr_init(r10504);
        mpfr_init(r10505);
        mpfr_init_set_str(r10506, "7.14416675854179e-157", 10, MPFR_RNDN);
        mpfr_init(r10507);
        mpfr_init_set_str(r10508, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10509);
        mpfr_init(r10510);
        mpfr_init(r10511);
        mpfr_init(r10512);
        mpfr_init(r10513);
        mpfr_init(r10514);
        mpfr_init(r10515);
        mpfr_init(r10516);
        mpfr_init(r10517);
        mpfr_init(r10518);
        mpfr_init_set_str(r10519, "1.2902540726783813e+168", 10, MPFR_RNDN);
        mpfr_init(r10520);
        mpfr_init(r10521);
        mpfr_init(r10522);
        mpfr_init(r10523);
        mpfr_init(r10524);
        mpfr_init(r10525);
        mpfr_init(r10526);
        mpfr_init(r10527);
        mpfr_init(r10528);
        mpfr_init(r10529);
        mpfr_init(r10530);
        mpfr_init(r10531);
        mpfr_init(r10532);
        mpfr_init(r10533);
        mpfr_init(r10534);
        mpfr_init(r10535);
}

double f_dm(double d, double h, double l, double M, double D) {
        ;
        mpfr_set_d(r10479, l, MPFR_RNDN);
        mpfr_div(r10480, r10478, r10479, MPFR_RNDN);
        ;
        mpfr_set_si(r10482, mpfr_cmp(r10480, r10481) <= 0, MPFR_RNDN);
        mpfr_set_d(r10483, d, MPFR_RNDN);
        mpfr_set_d(r10484, h, MPFR_RNDN);
        mpfr_div(r10485, r10483, r10484, MPFR_RNDN);
        ;
        mpfr_div(r10487, r10478, r10486, MPFR_RNDN);
        mpfr_pow(r10488, r10485, r10487, MPFR_RNDN);
        mpfr_div(r10489, r10483, r10479, MPFR_RNDN);
        mpfr_pow(r10490, r10489, r10487, MPFR_RNDN);
        mpfr_mul(r10491, r10488, r10490, MPFR_RNDN);
        mpfr_set_d(r10492, M, MPFR_RNDN);
        mpfr_set_d(r10493, D, MPFR_RNDN);
        mpfr_mul(r10494, r10492, r10493, MPFR_RNDN);
        mpfr_mul(r10495, r10486, r10483, MPFR_RNDN);
        mpfr_div(r10496, r10494, r10495, MPFR_RNDN);
        mpfr_pow(r10497, r10496, r10486, MPFR_RNDN);
        mpfr_mul(r10498, r10487, r10497, MPFR_RNDN);
        mpfr_mul(r10499, r10498, r10484, MPFR_RNDN);
        mpfr_cbrt(r10500, r10499, MPFR_RNDN);
        mpfr_mul(r10501, r10500, r10500, MPFR_RNDN);
        mpfr_mul(r10502, r10501, r10500, MPFR_RNDN);
        mpfr_mul(r10503, r10502, r10480, MPFR_RNDN);
        mpfr_sub(r10504, r10478, r10503, MPFR_RNDN);
        mpfr_mul(r10505, r10491, r10504, MPFR_RNDN);
        ;
        mpfr_set_si(r10507, mpfr_cmp(r10480, r10506) <= 0, MPFR_RNDN);
        ;
        mpfr_log(r10509, r10483, MPFR_RNDN);
        mpfr_log(r10510, r10479, MPFR_RNDN);
        mpfr_sub(r10511, r10509, r10510, MPFR_RNDN);
        mpfr_mul(r10512, r10508, r10511, MPFR_RNDN);
        mpfr_exp(r10513, r10512, MPFR_RNDN);
        mpfr_mul(r10514, r10488, r10513, MPFR_RNDN);
        mpfr_div(r10515, r10484, r10479, MPFR_RNDN);
        mpfr_mul(r10516, r10498, r10515, MPFR_RNDN);
        mpfr_sub(r10517, r10478, r10516, MPFR_RNDN);
        mpfr_mul(r10518, r10514, r10517, MPFR_RNDN);
        ;
        mpfr_set_si(r10520, mpfr_cmp(r10480, r10519) <= 0, MPFR_RNDN);
        mpfr_pow(r10521, r10483, r10487, MPFR_RNDN);
        mpfr_div(r10522, r10478, r10484, MPFR_RNDN);
        mpfr_pow(r10523, r10522, r10487, MPFR_RNDN);
        mpfr_mul(r10524, r10521, r10523, MPFR_RNDN);
        mpfr_mul(r10525, r10524, r10490, MPFR_RNDN);
        mpfr_mul(r10526, r10499, r10480, MPFR_RNDN);
        mpfr_sub(r10527, r10478, r10526, MPFR_RNDN);
        mpfr_mul(r10528, r10525, r10527, MPFR_RNDN);
        mpfr_pow(r10529, r10480, r10487, MPFR_RNDN);
        mpfr_mul(r10530, r10521, r10529, MPFR_RNDN);
        mpfr_mul(r10531, r10488, r10530, MPFR_RNDN);
        mpfr_mul(r10532, r10531, r10527, MPFR_RNDN);
        if (mpfr_get_si(r10520, MPFR_RNDN)) { mpfr_set(r10533, r10528, MPFR_RNDN); } else { mpfr_set(r10533, r10532, MPFR_RNDN); };
        if (mpfr_get_si(r10507, MPFR_RNDN)) { mpfr_set(r10534, r10518, MPFR_RNDN); } else { mpfr_set(r10534, r10533, MPFR_RNDN); };
        if (mpfr_get_si(r10482, MPFR_RNDN)) { mpfr_set(r10535, r10505, MPFR_RNDN); } else { mpfr_set(r10535, r10534, MPFR_RNDN); };
        return mpfr_get_d(r10535, MPFR_RNDN);
}

