#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 r26320 = d;
        float r26321 = h;
        float r26322 = r26320 / r26321;
        float r26323 = 1;
        float r26324 = 2;
        float r26325 = r26323 / r26324;
        float r26326 = pow(r26322, r26325);
        float r26327 = l;
        float r26328 = r26320 / r26327;
        float r26329 = pow(r26328, r26325);
        float r26330 = r26326 * r26329;
        float r26331 = M;
        float r26332 = D;
        float r26333 = r26331 * r26332;
        float r26334 = r26324 * r26320;
        float r26335 = r26333 / r26334;
        float r26336 = pow(r26335, r26324);
        float r26337 = r26325 * r26336;
        float r26338 = r26321 / r26327;
        float r26339 = r26337 * r26338;
        float r26340 = r26323 - r26339;
        float r26341 = r26330 * r26340;
        return r26341;
}

double f_id(double d, double h, double l, double M, double D) {
        double r26342 = d;
        double r26343 = h;
        double r26344 = r26342 / r26343;
        double r26345 = 1;
        double r26346 = 2;
        double r26347 = r26345 / r26346;
        double r26348 = pow(r26344, r26347);
        double r26349 = l;
        double r26350 = r26342 / r26349;
        double r26351 = pow(r26350, r26347);
        double r26352 = r26348 * r26351;
        double r26353 = M;
        double r26354 = D;
        double r26355 = r26353 * r26354;
        double r26356 = r26346 * r26342;
        double r26357 = r26355 / r26356;
        double r26358 = pow(r26357, r26346);
        double r26359 = r26347 * r26358;
        double r26360 = r26343 / r26349;
        double r26361 = r26359 * r26360;
        double r26362 = r26345 - r26361;
        double r26363 = r26352 * r26362;
        return r26363;
}


double f_of(float d, float h, float l, float M, float D) {
        float r26364 = 1/2;
        float r26365 = -1;
        float r26366 = h;
        float r26367 = r26365 / r26366;
        float r26368 = log(r26367);
        float r26369 = d;
        float r26370 = r26365 / r26369;
        float r26371 = log(r26370);
        float r26372 = r26368 - r26371;
        float r26373 = r26364 * r26372;
        float r26374 = exp(r26373);
        float r26375 = l;
        float r26376 = r26369 / r26375;
        float r26377 = 1;
        float r26378 = 2;
        float r26379 = r26377 / r26378;
        float r26380 = pow(r26376, r26379);
        float r26381 = r26374 * r26380;
        float r26382 = M;
        float r26383 = D;
        float r26384 = r26382 * r26383;
        float r26385 = r26378 * r26369;
        float r26386 = r26384 / r26385;
        float r26387 = pow(r26386, r26378);
        float r26388 = r26379 * r26387;
        float r26389 = r26388 * r26366;
        float r26390 = r26377 / r26375;
        float r26391 = r26389 * r26390;
        float r26392 = r26377 - r26391;
        float r26393 = r26381 * r26392;
        float r26394 = 1.466221075541587e-279;
        bool r26395 = r26393 <= r26394;
        float r26396 = r26369 / r26366;
        float r26397 = pow(r26396, r26379);
        float r26398 = r26365 / r26375;
        float r26399 = log(r26398);
        float r26400 = r26399 - r26371;
        float r26401 = r26364 * r26400;
        float r26402 = exp(r26401);
        float r26403 = r26397 * r26402;
        float r26404 = r26366 / r26375;
        float r26405 = r26388 * r26404;
        float r26406 = r26377 - r26405;
        float r26407 = r26403 * r26406;
        float r26408 = 1.3856099196503252e+289;
        bool r26409 = r26393 <= r26408;
        float r26410 = pow(r26369, r26379);
        float r26411 = pow(r26390, r26379);
        float r26412 = r26410 * r26411;
        float r26413 = r26397 * r26412;
        float r26414 = r26413 * r26392;
        float r26415 = r26409 ? r26393 : r26414;
        float r26416 = r26395 ? r26407 : r26415;
        return r26416;
}

double f_od(double d, double h, double l, double M, double D) {
        double r26417 = 1/2;
        double r26418 = -1;
        double r26419 = h;
        double r26420 = r26418 / r26419;
        double r26421 = log(r26420);
        double r26422 = d;
        double r26423 = r26418 / r26422;
        double r26424 = log(r26423);
        double r26425 = r26421 - r26424;
        double r26426 = r26417 * r26425;
        double r26427 = exp(r26426);
        double r26428 = l;
        double r26429 = r26422 / r26428;
        double r26430 = 1;
        double r26431 = 2;
        double r26432 = r26430 / r26431;
        double r26433 = pow(r26429, r26432);
        double r26434 = r26427 * r26433;
        double r26435 = M;
        double r26436 = D;
        double r26437 = r26435 * r26436;
        double r26438 = r26431 * r26422;
        double r26439 = r26437 / r26438;
        double r26440 = pow(r26439, r26431);
        double r26441 = r26432 * r26440;
        double r26442 = r26441 * r26419;
        double r26443 = r26430 / r26428;
        double r26444 = r26442 * r26443;
        double r26445 = r26430 - r26444;
        double r26446 = r26434 * r26445;
        double r26447 = 1.466221075541587e-279;
        bool r26448 = r26446 <= r26447;
        double r26449 = r26422 / r26419;
        double r26450 = pow(r26449, r26432);
        double r26451 = r26418 / r26428;
        double r26452 = log(r26451);
        double r26453 = r26452 - r26424;
        double r26454 = r26417 * r26453;
        double r26455 = exp(r26454);
        double r26456 = r26450 * r26455;
        double r26457 = r26419 / r26428;
        double r26458 = r26441 * r26457;
        double r26459 = r26430 - r26458;
        double r26460 = r26456 * r26459;
        double r26461 = 1.3856099196503252e+289;
        bool r26462 = r26446 <= r26461;
        double r26463 = pow(r26422, r26432);
        double r26464 = pow(r26443, r26432);
        double r26465 = r26463 * r26464;
        double r26466 = r26450 * r26465;
        double r26467 = r26466 * r26445;
        double r26468 = r26462 ? r26446 : r26467;
        double r26469 = r26448 ? r26460 : r26468;
        return r26469;
}

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 r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init(r26472);
        mpfr_init_set_str(r26473, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26474, "2", 10, MPFR_RNDN);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r26470, d, MPFR_RNDN);
        mpfr_set_d(r26471, h, MPFR_RNDN);
        mpfr_div(r26472, r26470, r26471, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26475, r26473, r26474, MPFR_RNDN);
        mpfr_pow(r26476, r26472, r26475, MPFR_RNDN);
        mpfr_set_d(r26477, l, MPFR_RNDN);
        mpfr_div(r26478, r26470, r26477, MPFR_RNDN);
        mpfr_pow(r26479, r26478, r26475, MPFR_RNDN);
        mpfr_mul(r26480, r26476, r26479, MPFR_RNDN);
        mpfr_set_d(r26481, M, MPFR_RNDN);
        mpfr_set_d(r26482, D, MPFR_RNDN);
        mpfr_mul(r26483, r26481, r26482, MPFR_RNDN);
        mpfr_mul(r26484, r26474, r26470, MPFR_RNDN);
        mpfr_div(r26485, r26483, r26484, MPFR_RNDN);
        mpfr_pow(r26486, r26485, r26474, MPFR_RNDN);
        mpfr_mul(r26487, r26475, r26486, MPFR_RNDN);
        mpfr_div(r26488, r26471, r26477, MPFR_RNDN);
        mpfr_mul(r26489, r26487, r26488, MPFR_RNDN);
        mpfr_sub(r26490, r26473, r26489, MPFR_RNDN);
        mpfr_mul(r26491, r26480, r26490, MPFR_RNDN);
        return mpfr_get_d(r26491, MPFR_RNDN);
}

static mpfr_t r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510, r26511, r26512, r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524, r26525, r26526, r26527, r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26492, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26493, "-1", 10, MPFR_RNDN);
        mpfr_init(r26494);
        mpfr_init(r26495);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init_set_str(r26505, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26506, "2", 10, MPFR_RNDN);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
        mpfr_init(r26511);
        mpfr_init(r26512);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init_set_str(r26522, "1.466221075541587e-279", 10, MPFR_RNDN);
        mpfr_init(r26523);
        mpfr_init(r26524);
        mpfr_init(r26525);
        mpfr_init(r26526);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init(r26530);
        mpfr_init(r26531);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init(r26535);
        mpfr_init_set_str(r26536, "1.3856099196503252e+289", 10, MPFR_RNDN);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
        mpfr_init(r26541);
        mpfr_init(r26542);
        mpfr_init(r26543);
        mpfr_init(r26544);
}

double f_fm(double d, double h, double l, double M, double D) {
        ;
        ;
        mpfr_set_d(r26494, h, MPFR_RNDN);
        mpfr_div(r26495, r26493, r26494, MPFR_RNDN);
        mpfr_log(r26496, r26495, MPFR_RNDN);
        mpfr_set_d(r26497, d, MPFR_RNDN);
        mpfr_div(r26498, r26493, r26497, MPFR_RNDN);
        mpfr_log(r26499, r26498, MPFR_RNDN);
        mpfr_sub(r26500, r26496, r26499, MPFR_RNDN);
        mpfr_mul(r26501, r26492, r26500, MPFR_RNDN);
        mpfr_exp(r26502, r26501, MPFR_RNDN);
        mpfr_set_d(r26503, l, MPFR_RNDN);
        mpfr_div(r26504, r26497, r26503, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26507, r26505, r26506, MPFR_RNDN);
        mpfr_pow(r26508, r26504, r26507, MPFR_RNDN);
        mpfr_mul(r26509, r26502, r26508, MPFR_RNDN);
        mpfr_set_d(r26510, M, MPFR_RNDN);
        mpfr_set_d(r26511, D, MPFR_RNDN);
        mpfr_mul(r26512, r26510, r26511, MPFR_RNDN);
        mpfr_mul(r26513, r26506, r26497, MPFR_RNDN);
        mpfr_div(r26514, r26512, r26513, MPFR_RNDN);
        mpfr_pow(r26515, r26514, r26506, MPFR_RNDN);
        mpfr_mul(r26516, r26507, r26515, MPFR_RNDN);
        mpfr_mul(r26517, r26516, r26494, MPFR_RNDN);
        mpfr_div(r26518, r26505, r26503, MPFR_RNDN);
        mpfr_mul(r26519, r26517, r26518, MPFR_RNDN);
        mpfr_sub(r26520, r26505, r26519, MPFR_RNDN);
        mpfr_mul(r26521, r26509, r26520, MPFR_RNDN);
        ;
        mpfr_set_si(r26523, mpfr_cmp(r26521, r26522) <= 0, MPFR_RNDN);
        mpfr_div(r26524, r26497, r26494, MPFR_RNDN);
        mpfr_pow(r26525, r26524, r26507, MPFR_RNDN);
        mpfr_div(r26526, r26493, r26503, MPFR_RNDN);
        mpfr_log(r26527, r26526, MPFR_RNDN);
        mpfr_sub(r26528, r26527, r26499, MPFR_RNDN);
        mpfr_mul(r26529, r26492, r26528, MPFR_RNDN);
        mpfr_exp(r26530, r26529, MPFR_RNDN);
        mpfr_mul(r26531, r26525, r26530, MPFR_RNDN);
        mpfr_div(r26532, r26494, r26503, MPFR_RNDN);
        mpfr_mul(r26533, r26516, r26532, MPFR_RNDN);
        mpfr_sub(r26534, r26505, r26533, MPFR_RNDN);
        mpfr_mul(r26535, r26531, r26534, MPFR_RNDN);
        ;
        mpfr_set_si(r26537, mpfr_cmp(r26521, r26536) <= 0, MPFR_RNDN);
        mpfr_pow(r26538, r26497, r26507, MPFR_RNDN);
        mpfr_pow(r26539, r26518, r26507, MPFR_RNDN);
        mpfr_mul(r26540, r26538, r26539, MPFR_RNDN);
        mpfr_mul(r26541, r26525, r26540, MPFR_RNDN);
        mpfr_mul(r26542, r26541, r26520, MPFR_RNDN);
        if (mpfr_get_si(r26537, MPFR_RNDN)) { mpfr_set(r26543, r26521, MPFR_RNDN); } else { mpfr_set(r26543, r26542, MPFR_RNDN); };
        if (mpfr_get_si(r26523, MPFR_RNDN)) { mpfr_set(r26544, r26535, MPFR_RNDN); } else { mpfr_set(r26544, r26543, MPFR_RNDN); };
        return mpfr_get_d(r26544, MPFR_RNDN);
}

static mpfr_t r26545, r26546, r26547, r26548, r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559, r26560, r26561, r26562, r26563, r26564, r26565, r26566, r26567, r26568, r26569, r26570, r26571, r26572, r26573, r26574, r26575, r26576, r26577, r26578, r26579, r26580, r26581, r26582, r26583, r26584, r26585, r26586, r26587, r26588, r26589, r26590, r26591, r26592, r26593, r26594, r26595, r26596, r26597;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26545, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26546, "-1", 10, MPFR_RNDN);
        mpfr_init(r26547);
        mpfr_init(r26548);
        mpfr_init(r26549);
        mpfr_init(r26550);
        mpfr_init(r26551);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init(r26556);
        mpfr_init(r26557);
        mpfr_init_set_str(r26558, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26559, "2", 10, MPFR_RNDN);
        mpfr_init(r26560);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init(r26563);
        mpfr_init(r26564);
        mpfr_init(r26565);
        mpfr_init(r26566);
        mpfr_init(r26567);
        mpfr_init(r26568);
        mpfr_init(r26569);
        mpfr_init(r26570);
        mpfr_init(r26571);
        mpfr_init(r26572);
        mpfr_init(r26573);
        mpfr_init(r26574);
        mpfr_init_set_str(r26575, "1.466221075541587e-279", 10, MPFR_RNDN);
        mpfr_init(r26576);
        mpfr_init(r26577);
        mpfr_init(r26578);
        mpfr_init(r26579);
        mpfr_init(r26580);
        mpfr_init(r26581);
        mpfr_init(r26582);
        mpfr_init(r26583);
        mpfr_init(r26584);
        mpfr_init(r26585);
        mpfr_init(r26586);
        mpfr_init(r26587);
        mpfr_init(r26588);
        mpfr_init_set_str(r26589, "1.3856099196503252e+289", 10, MPFR_RNDN);
        mpfr_init(r26590);
        mpfr_init(r26591);
        mpfr_init(r26592);
        mpfr_init(r26593);
        mpfr_init(r26594);
        mpfr_init(r26595);
        mpfr_init(r26596);
        mpfr_init(r26597);
}

double f_dm(double d, double h, double l, double M, double D) {
        ;
        ;
        mpfr_set_d(r26547, h, MPFR_RNDN);
        mpfr_div(r26548, r26546, r26547, MPFR_RNDN);
        mpfr_log(r26549, r26548, MPFR_RNDN);
        mpfr_set_d(r26550, d, MPFR_RNDN);
        mpfr_div(r26551, r26546, r26550, MPFR_RNDN);
        mpfr_log(r26552, r26551, MPFR_RNDN);
        mpfr_sub(r26553, r26549, r26552, MPFR_RNDN);
        mpfr_mul(r26554, r26545, r26553, MPFR_RNDN);
        mpfr_exp(r26555, r26554, MPFR_RNDN);
        mpfr_set_d(r26556, l, MPFR_RNDN);
        mpfr_div(r26557, r26550, r26556, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26560, r26558, r26559, MPFR_RNDN);
        mpfr_pow(r26561, r26557, r26560, MPFR_RNDN);
        mpfr_mul(r26562, r26555, r26561, MPFR_RNDN);
        mpfr_set_d(r26563, M, MPFR_RNDN);
        mpfr_set_d(r26564, D, MPFR_RNDN);
        mpfr_mul(r26565, r26563, r26564, MPFR_RNDN);
        mpfr_mul(r26566, r26559, r26550, MPFR_RNDN);
        mpfr_div(r26567, r26565, r26566, MPFR_RNDN);
        mpfr_pow(r26568, r26567, r26559, MPFR_RNDN);
        mpfr_mul(r26569, r26560, r26568, MPFR_RNDN);
        mpfr_mul(r26570, r26569, r26547, MPFR_RNDN);
        mpfr_div(r26571, r26558, r26556, MPFR_RNDN);
        mpfr_mul(r26572, r26570, r26571, MPFR_RNDN);
        mpfr_sub(r26573, r26558, r26572, MPFR_RNDN);
        mpfr_mul(r26574, r26562, r26573, MPFR_RNDN);
        ;
        mpfr_set_si(r26576, mpfr_cmp(r26574, r26575) <= 0, MPFR_RNDN);
        mpfr_div(r26577, r26550, r26547, MPFR_RNDN);
        mpfr_pow(r26578, r26577, r26560, MPFR_RNDN);
        mpfr_div(r26579, r26546, r26556, MPFR_RNDN);
        mpfr_log(r26580, r26579, MPFR_RNDN);
        mpfr_sub(r26581, r26580, r26552, MPFR_RNDN);
        mpfr_mul(r26582, r26545, r26581, MPFR_RNDN);
        mpfr_exp(r26583, r26582, MPFR_RNDN);
        mpfr_mul(r26584, r26578, r26583, MPFR_RNDN);
        mpfr_div(r26585, r26547, r26556, MPFR_RNDN);
        mpfr_mul(r26586, r26569, r26585, MPFR_RNDN);
        mpfr_sub(r26587, r26558, r26586, MPFR_RNDN);
        mpfr_mul(r26588, r26584, r26587, MPFR_RNDN);
        ;
        mpfr_set_si(r26590, mpfr_cmp(r26574, r26589) <= 0, MPFR_RNDN);
        mpfr_pow(r26591, r26550, r26560, MPFR_RNDN);
        mpfr_pow(r26592, r26571, r26560, MPFR_RNDN);
        mpfr_mul(r26593, r26591, r26592, MPFR_RNDN);
        mpfr_mul(r26594, r26578, r26593, MPFR_RNDN);
        mpfr_mul(r26595, r26594, r26573, MPFR_RNDN);
        if (mpfr_get_si(r26590, MPFR_RNDN)) { mpfr_set(r26596, r26574, MPFR_RNDN); } else { mpfr_set(r26596, r26595, MPFR_RNDN); };
        if (mpfr_get_si(r26576, MPFR_RNDN)) { mpfr_set(r26597, r26588, MPFR_RNDN); } else { mpfr_set(r26597, r26596, MPFR_RNDN); };
        return mpfr_get_d(r26597, MPFR_RNDN);
}

