#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Henrywood and Agarwal, Equation (13)";

double f_if(float c0, float w, float h, float D, float d, float M) {
        float r26304 = c0;
        float r26305 = 2;
        float r26306 = w;
        float r26307 = r26305 * r26306;
        float r26308 = r26304 / r26307;
        float r26309 = d;
        float r26310 = r26309 * r26309;
        float r26311 = r26304 * r26310;
        float r26312 = h;
        float r26313 = r26306 * r26312;
        float r26314 = D;
        float r26315 = r26314 * r26314;
        float r26316 = r26313 * r26315;
        float r26317 = r26311 / r26316;
        float r26318 = r26317 * r26317;
        float r26319 = M;
        float r26320 = r26319 * r26319;
        float r26321 = r26318 - r26320;
        float r26322 = sqrt(r26321);
        float r26323 = r26317 + r26322;
        float r26324 = r26308 * r26323;
        return r26324;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r26325 = c0;
        double r26326 = 2;
        double r26327 = w;
        double r26328 = r26326 * r26327;
        double r26329 = r26325 / r26328;
        double r26330 = d;
        double r26331 = r26330 * r26330;
        double r26332 = r26325 * r26331;
        double r26333 = h;
        double r26334 = r26327 * r26333;
        double r26335 = D;
        double r26336 = r26335 * r26335;
        double r26337 = r26334 * r26336;
        double r26338 = r26332 / r26337;
        double r26339 = r26338 * r26338;
        double r26340 = M;
        double r26341 = r26340 * r26340;
        double r26342 = r26339 - r26341;
        double r26343 = sqrt(r26342);
        double r26344 = r26338 + r26343;
        double r26345 = r26329 * r26344;
        return r26345;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r26346 = c0;
        float r26347 = 2;
        float r26348 = w;
        float r26349 = r26347 * r26348;
        float r26350 = r26346 / r26349;
        float r26351 = M;
        float r26352 = fabs(r26351);
        float r26353 = d;
        float r26354 = D;
        float r26355 = r26353 / r26354;
        float r26356 = r26355 * r26355;
        float r26357 = r26346 / r26348;
        float r26358 = h;
        float r26359 = r26357 / r26358;
        float r26360 = r26356 * r26359;
        float r26361 = -r26351;
        float r26362 = r26351 * r26361;
        float r26363 = fma(r26360, r26360, r26362);
        float r26364 = sqrt(r26363);
        float r26365 = r26360 - r26364;
        float r26366 = cbrt(r26365);
        float r26367 = r26352 / r26366;
        float r26368 = r26367 / r26366;
        float r26369 = r26346 / r26358;
        float r26370 = r26369 / r26348;
        float r26371 = r26356 * r26370;
        float r26372 = fma(r26371, r26371, r26362);
        float r26373 = sqrt(r26372);
        float r26374 = r26371 - r26373;
        float r26375 = cbrt(r26374);
        float r26376 = r26352 / r26375;
        float r26377 = r26368 * r26376;
        float r26378 = r26350 * r26377;
        float r26379 = -1.4991600917011975e+181;
        bool r26380 = r26378 <= r26379;
        float r26381 = r26359 * r26356;
        float r26382 = r26351 * r26351;
        float r26383 = -r26382;
        float r26384 = fma(r26381, r26381, r26383);
        float r26385 = sqrt(r26384);
        float r26386 = r26385 + r26381;
        float r26387 = 3;
        float r26388 = pow(r26386, r26387);
        float r26389 = cbrt(r26388);
        float r26390 = r26350 * r26389;
        float r26391 = 1.9945431992210157e+184;
        bool r26392 = r26378 <= r26391;
        float r26393 = r26351 / r26355;
        float r26394 = r26393 * r26393;
        float r26395 = r26358 / r26347;
        float r26396 = cbrt(r26395);
        float r26397 = r26396 * r26396;
        float r26398 = r26397 * r26396;
        float r26399 = r26394 * r26398;
        float r26400 = r26392 ? r26378 : r26399;
        float r26401 = r26380 ? r26390 : r26400;
        return r26401;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r26402 = c0;
        double r26403 = 2;
        double r26404 = w;
        double r26405 = r26403 * r26404;
        double r26406 = r26402 / r26405;
        double r26407 = M;
        double r26408 = fabs(r26407);
        double r26409 = d;
        double r26410 = D;
        double r26411 = r26409 / r26410;
        double r26412 = r26411 * r26411;
        double r26413 = r26402 / r26404;
        double r26414 = h;
        double r26415 = r26413 / r26414;
        double r26416 = r26412 * r26415;
        double r26417 = -r26407;
        double r26418 = r26407 * r26417;
        double r26419 = fma(r26416, r26416, r26418);
        double r26420 = sqrt(r26419);
        double r26421 = r26416 - r26420;
        double r26422 = cbrt(r26421);
        double r26423 = r26408 / r26422;
        double r26424 = r26423 / r26422;
        double r26425 = r26402 / r26414;
        double r26426 = r26425 / r26404;
        double r26427 = r26412 * r26426;
        double r26428 = fma(r26427, r26427, r26418);
        double r26429 = sqrt(r26428);
        double r26430 = r26427 - r26429;
        double r26431 = cbrt(r26430);
        double r26432 = r26408 / r26431;
        double r26433 = r26424 * r26432;
        double r26434 = r26406 * r26433;
        double r26435 = -1.4991600917011975e+181;
        bool r26436 = r26434 <= r26435;
        double r26437 = r26415 * r26412;
        double r26438 = r26407 * r26407;
        double r26439 = -r26438;
        double r26440 = fma(r26437, r26437, r26439);
        double r26441 = sqrt(r26440);
        double r26442 = r26441 + r26437;
        double r26443 = 3;
        double r26444 = pow(r26442, r26443);
        double r26445 = cbrt(r26444);
        double r26446 = r26406 * r26445;
        double r26447 = 1.9945431992210157e+184;
        bool r26448 = r26434 <= r26447;
        double r26449 = r26407 / r26411;
        double r26450 = r26449 * r26449;
        double r26451 = r26414 / r26403;
        double r26452 = cbrt(r26451);
        double r26453 = r26452 * r26452;
        double r26454 = r26453 * r26452;
        double r26455 = r26450 * r26454;
        double r26456 = r26448 ? r26434 : r26455;
        double r26457 = r26436 ? r26446 : r26456;
        return r26457;
}

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 r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26458);
        mpfr_init_set_str(r26459, "2", 10, MPFR_RNDN);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init(r26472);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init(r26478);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26458, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26460, w, MPFR_RNDN);
        mpfr_mul(r26461, r26459, r26460, MPFR_RNDN);
        mpfr_div(r26462, r26458, r26461, MPFR_RNDN);
        mpfr_set_d(r26463, d, MPFR_RNDN);
        mpfr_mul(r26464, r26463, r26463, MPFR_RNDN);
        mpfr_mul(r26465, r26458, r26464, MPFR_RNDN);
        mpfr_set_d(r26466, h, MPFR_RNDN);
        mpfr_mul(r26467, r26460, r26466, MPFR_RNDN);
        mpfr_set_d(r26468, D, MPFR_RNDN);
        mpfr_mul(r26469, r26468, r26468, MPFR_RNDN);
        mpfr_mul(r26470, r26467, r26469, MPFR_RNDN);
        mpfr_div(r26471, r26465, r26470, MPFR_RNDN);
        mpfr_mul(r26472, r26471, r26471, MPFR_RNDN);
        mpfr_set_d(r26473, M, MPFR_RNDN);
        mpfr_mul(r26474, r26473, r26473, MPFR_RNDN);
        mpfr_sub(r26475, r26472, r26474, MPFR_RNDN);
        mpfr_sqrt(r26476, r26475, MPFR_RNDN);
        mpfr_add(r26477, r26471, r26476, MPFR_RNDN);
        mpfr_mul(r26478, r26462, r26477, MPFR_RNDN);
        return mpfr_get_d(r26478, MPFR_RNDN);
}

static mpfr_t r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26479);
        mpfr_init_set_str(r26480, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r26492);
        mpfr_init(r26493);
        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(r26505);
        mpfr_init(r26506);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
        mpfr_init(r26511);
        mpfr_init_set_str(r26512, "-1.4991600917011975e+181", 10, MPFR_RNDN);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init_set_str(r26520, "3", 10, MPFR_RNDN);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init_set_str(r26524, "1.9945431992210157e+184", 10, MPFR_RNDN);
        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);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26479, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26481, w, MPFR_RNDN);
        mpfr_mul(r26482, r26480, r26481, MPFR_RNDN);
        mpfr_div(r26483, r26479, r26482, MPFR_RNDN);
        mpfr_set_d(r26484, M, MPFR_RNDN);
        mpfr_abs(r26485, r26484, MPFR_RNDN);
        mpfr_set_d(r26486, d, MPFR_RNDN);
        mpfr_set_d(r26487, D, MPFR_RNDN);
        mpfr_div(r26488, r26486, r26487, MPFR_RNDN);
        mpfr_mul(r26489, r26488, r26488, MPFR_RNDN);
        mpfr_div(r26490, r26479, r26481, MPFR_RNDN);
        mpfr_set_d(r26491, h, MPFR_RNDN);
        mpfr_div(r26492, r26490, r26491, MPFR_RNDN);
        mpfr_mul(r26493, r26489, r26492, MPFR_RNDN);
        mpfr_neg(r26494, r26484, MPFR_RNDN);
        mpfr_mul(r26495, r26484, r26494, MPFR_RNDN);
        mpfr_fma(r26496, r26493, r26493, r26495, MPFR_RNDN);
        mpfr_sqrt(r26497, r26496, MPFR_RNDN);
        mpfr_sub(r26498, r26493, r26497, MPFR_RNDN);
        mpfr_cbrt(r26499, r26498, MPFR_RNDN);
        mpfr_div(r26500, r26485, r26499, MPFR_RNDN);
        mpfr_div(r26501, r26500, r26499, MPFR_RNDN);
        mpfr_div(r26502, r26479, r26491, MPFR_RNDN);
        mpfr_div(r26503, r26502, r26481, MPFR_RNDN);
        mpfr_mul(r26504, r26489, r26503, MPFR_RNDN);
        mpfr_fma(r26505, r26504, r26504, r26495, MPFR_RNDN);
        mpfr_sqrt(r26506, r26505, MPFR_RNDN);
        mpfr_sub(r26507, r26504, r26506, MPFR_RNDN);
        mpfr_cbrt(r26508, r26507, MPFR_RNDN);
        mpfr_div(r26509, r26485, r26508, MPFR_RNDN);
        mpfr_mul(r26510, r26501, r26509, MPFR_RNDN);
        mpfr_mul(r26511, r26483, r26510, MPFR_RNDN);
        ;
        mpfr_set_si(r26513, mpfr_cmp(r26511, r26512) <= 0, MPFR_RNDN);
        mpfr_mul(r26514, r26492, r26489, MPFR_RNDN);
        mpfr_mul(r26515, r26484, r26484, MPFR_RNDN);
        mpfr_neg(r26516, r26515, MPFR_RNDN);
        mpfr_fma(r26517, r26514, r26514, r26516, MPFR_RNDN);
        mpfr_sqrt(r26518, r26517, MPFR_RNDN);
        mpfr_add(r26519, r26518, r26514, MPFR_RNDN);
        ;
        mpfr_pow(r26521, r26519, r26520, MPFR_RNDN);
        mpfr_cbrt(r26522, r26521, MPFR_RNDN);
        mpfr_mul(r26523, r26483, r26522, MPFR_RNDN);
        ;
        mpfr_set_si(r26525, mpfr_cmp(r26511, r26524) <= 0, MPFR_RNDN);
        mpfr_div(r26526, r26484, r26488, MPFR_RNDN);
        mpfr_mul(r26527, r26526, r26526, MPFR_RNDN);
        mpfr_div(r26528, r26491, r26480, MPFR_RNDN);
        mpfr_cbrt(r26529, r26528, MPFR_RNDN);
        mpfr_mul(r26530, r26529, r26529, MPFR_RNDN);
        mpfr_mul(r26531, r26530, r26529, MPFR_RNDN);
        mpfr_mul(r26532, r26527, r26531, MPFR_RNDN);
        if (mpfr_get_si(r26525, MPFR_RNDN)) { mpfr_set(r26533, r26511, MPFR_RNDN); } else { mpfr_set(r26533, r26532, MPFR_RNDN); };
        if (mpfr_get_si(r26513, MPFR_RNDN)) { mpfr_set(r26534, r26523, MPFR_RNDN); } else { mpfr_set(r26534, r26533, MPFR_RNDN); };
        return mpfr_get_d(r26534, MPFR_RNDN);
}

static mpfr_t r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26535);
        mpfr_init_set_str(r26536, "2", 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);
        mpfr_init(r26545);
        mpfr_init(r26546);
        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(r26558);
        mpfr_init(r26559);
        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_set_str(r26568, "-1.4991600917011975e+181", 10, MPFR_RNDN);
        mpfr_init(r26569);
        mpfr_init(r26570);
        mpfr_init(r26571);
        mpfr_init(r26572);
        mpfr_init(r26573);
        mpfr_init(r26574);
        mpfr_init(r26575);
        mpfr_init_set_str(r26576, "3", 10, MPFR_RNDN);
        mpfr_init(r26577);
        mpfr_init(r26578);
        mpfr_init(r26579);
        mpfr_init_set_str(r26580, "1.9945431992210157e+184", 10, MPFR_RNDN);
        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(r26589);
        mpfr_init(r26590);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26535, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26537, w, MPFR_RNDN);
        mpfr_mul(r26538, r26536, r26537, MPFR_RNDN);
        mpfr_div(r26539, r26535, r26538, MPFR_RNDN);
        mpfr_set_d(r26540, M, MPFR_RNDN);
        mpfr_abs(r26541, r26540, MPFR_RNDN);
        mpfr_set_d(r26542, d, MPFR_RNDN);
        mpfr_set_d(r26543, D, MPFR_RNDN);
        mpfr_div(r26544, r26542, r26543, MPFR_RNDN);
        mpfr_mul(r26545, r26544, r26544, MPFR_RNDN);
        mpfr_div(r26546, r26535, r26537, MPFR_RNDN);
        mpfr_set_d(r26547, h, MPFR_RNDN);
        mpfr_div(r26548, r26546, r26547, MPFR_RNDN);
        mpfr_mul(r26549, r26545, r26548, MPFR_RNDN);
        mpfr_neg(r26550, r26540, MPFR_RNDN);
        mpfr_mul(r26551, r26540, r26550, MPFR_RNDN);
        mpfr_fma(r26552, r26549, r26549, r26551, MPFR_RNDN);
        mpfr_sqrt(r26553, r26552, MPFR_RNDN);
        mpfr_sub(r26554, r26549, r26553, MPFR_RNDN);
        mpfr_cbrt(r26555, r26554, MPFR_RNDN);
        mpfr_div(r26556, r26541, r26555, MPFR_RNDN);
        mpfr_div(r26557, r26556, r26555, MPFR_RNDN);
        mpfr_div(r26558, r26535, r26547, MPFR_RNDN);
        mpfr_div(r26559, r26558, r26537, MPFR_RNDN);
        mpfr_mul(r26560, r26545, r26559, MPFR_RNDN);
        mpfr_fma(r26561, r26560, r26560, r26551, MPFR_RNDN);
        mpfr_sqrt(r26562, r26561, MPFR_RNDN);
        mpfr_sub(r26563, r26560, r26562, MPFR_RNDN);
        mpfr_cbrt(r26564, r26563, MPFR_RNDN);
        mpfr_div(r26565, r26541, r26564, MPFR_RNDN);
        mpfr_mul(r26566, r26557, r26565, MPFR_RNDN);
        mpfr_mul(r26567, r26539, r26566, MPFR_RNDN);
        ;
        mpfr_set_si(r26569, mpfr_cmp(r26567, r26568) <= 0, MPFR_RNDN);
        mpfr_mul(r26570, r26548, r26545, MPFR_RNDN);
        mpfr_mul(r26571, r26540, r26540, MPFR_RNDN);
        mpfr_neg(r26572, r26571, MPFR_RNDN);
        mpfr_fma(r26573, r26570, r26570, r26572, MPFR_RNDN);
        mpfr_sqrt(r26574, r26573, MPFR_RNDN);
        mpfr_add(r26575, r26574, r26570, MPFR_RNDN);
        ;
        mpfr_pow(r26577, r26575, r26576, MPFR_RNDN);
        mpfr_cbrt(r26578, r26577, MPFR_RNDN);
        mpfr_mul(r26579, r26539, r26578, MPFR_RNDN);
        ;
        mpfr_set_si(r26581, mpfr_cmp(r26567, r26580) <= 0, MPFR_RNDN);
        mpfr_div(r26582, r26540, r26544, MPFR_RNDN);
        mpfr_mul(r26583, r26582, r26582, MPFR_RNDN);
        mpfr_div(r26584, r26547, r26536, MPFR_RNDN);
        mpfr_cbrt(r26585, r26584, MPFR_RNDN);
        mpfr_mul(r26586, r26585, r26585, MPFR_RNDN);
        mpfr_mul(r26587, r26586, r26585, MPFR_RNDN);
        mpfr_mul(r26588, r26583, r26587, MPFR_RNDN);
        if (mpfr_get_si(r26581, MPFR_RNDN)) { mpfr_set(r26589, r26567, MPFR_RNDN); } else { mpfr_set(r26589, r26588, MPFR_RNDN); };
        if (mpfr_get_si(r26569, MPFR_RNDN)) { mpfr_set(r26590, r26579, MPFR_RNDN); } else { mpfr_set(r26590, r26589, MPFR_RNDN); };
        return mpfr_get_d(r26590, MPFR_RNDN);
}

