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

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

double f_if(float w0, float M, float D, float h, float l, float d) {
        float r26409 = w0;
        float r26410 = 1;
        float r26411 = M;
        float r26412 = D;
        float r26413 = r26411 * r26412;
        float r26414 = 2;
        float r26415 = d;
        float r26416 = r26414 * r26415;
        float r26417 = r26413 / r26416;
        float r26418 = pow(r26417, r26414);
        float r26419 = h;
        float r26420 = l;
        float r26421 = r26419 / r26420;
        float r26422 = r26418 * r26421;
        float r26423 = r26410 - r26422;
        float r26424 = sqrt(r26423);
        float r26425 = r26409 * r26424;
        return r26425;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r26426 = w0;
        double r26427 = 1;
        double r26428 = M;
        double r26429 = D;
        double r26430 = r26428 * r26429;
        double r26431 = 2;
        double r26432 = d;
        double r26433 = r26431 * r26432;
        double r26434 = r26430 / r26433;
        double r26435 = pow(r26434, r26431);
        double r26436 = h;
        double r26437 = l;
        double r26438 = r26436 / r26437;
        double r26439 = r26435 * r26438;
        double r26440 = r26427 - r26439;
        double r26441 = sqrt(r26440);
        double r26442 = r26426 * r26441;
        return r26442;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r26443 = w0;
        float r26444 = 1;
        float r26445 = M;
        float r26446 = D;
        float r26447 = r26445 * r26446;
        float r26448 = 2;
        float r26449 = d;
        float r26450 = r26448 * r26449;
        float r26451 = r26447 / r26450;
        float r26452 = h;
        float r26453 = r26451 * r26452;
        float r26454 = r26451 * r26453;
        float r26455 = l;
        float r26456 = r26454 / r26455;
        float r26457 = r26444 - r26456;
        float r26458 = sqrt(r26457);
        float r26459 = r26443 * r26458;
        float r26460 = -3.245701205059172e+301;
        bool r26461 = r26459 <= r26460;
        float r26462 = r26445 / r26448;
        float r26463 = r26446 / r26449;
        float r26464 = -r26463;
        float r26465 = r26462 * r26464;
        float r26466 = r26445 / r26449;
        float r26467 = 1/2;
        float r26468 = r26467 * r26446;
        float r26469 = r26466 * r26468;
        float r26470 = r26452 / r26455;
        float r26471 = r26469 * r26470;
        float r26472 = fma(r26465, r26471, r26444);
        float r26473 = sqrt(r26472);
        float r26474 = r26443 * r26473;
        float r26475 = 4.1769564408861524e+276;
        bool r26476 = r26459 <= r26475;
        float r26477 = r26476 ? r26459 : r26474;
        float r26478 = r26461 ? r26474 : r26477;
        return r26478;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r26479 = w0;
        double r26480 = 1;
        double r26481 = M;
        double r26482 = D;
        double r26483 = r26481 * r26482;
        double r26484 = 2;
        double r26485 = d;
        double r26486 = r26484 * r26485;
        double r26487 = r26483 / r26486;
        double r26488 = h;
        double r26489 = r26487 * r26488;
        double r26490 = r26487 * r26489;
        double r26491 = l;
        double r26492 = r26490 / r26491;
        double r26493 = r26480 - r26492;
        double r26494 = sqrt(r26493);
        double r26495 = r26479 * r26494;
        double r26496 = -3.245701205059172e+301;
        bool r26497 = r26495 <= r26496;
        double r26498 = r26481 / r26484;
        double r26499 = r26482 / r26485;
        double r26500 = -r26499;
        double r26501 = r26498 * r26500;
        double r26502 = r26481 / r26485;
        double r26503 = 1/2;
        double r26504 = r26503 * r26482;
        double r26505 = r26502 * r26504;
        double r26506 = r26488 / r26491;
        double r26507 = r26505 * r26506;
        double r26508 = fma(r26501, r26507, r26480);
        double r26509 = sqrt(r26508);
        double r26510 = r26479 * r26509;
        double r26511 = 4.1769564408861524e+276;
        bool r26512 = r26495 <= r26511;
        double r26513 = r26512 ? r26495 : r26510;
        double r26514 = r26497 ? r26510 : r26513;
        return r26514;
}

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 r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524, r26525, r26526, r26527, r26528, r26529, r26530, r26531;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r26515);
        mpfr_init_set_str(r26516, "1", 10, MPFR_RNDN);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init_set_str(r26520, "2", 10, MPFR_RNDN);
        mpfr_init(r26521);
        mpfr_init(r26522);
        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);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26515, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26517, M, MPFR_RNDN);
        mpfr_set_d(r26518, D, MPFR_RNDN);
        mpfr_mul(r26519, r26517, r26518, MPFR_RNDN);
        ;
        mpfr_set_d(r26521, d, MPFR_RNDN);
        mpfr_mul(r26522, r26520, r26521, MPFR_RNDN);
        mpfr_div(r26523, r26519, r26522, MPFR_RNDN);
        mpfr_pow(r26524, r26523, r26520, MPFR_RNDN);
        mpfr_set_d(r26525, h, MPFR_RNDN);
        mpfr_set_d(r26526, l, MPFR_RNDN);
        mpfr_div(r26527, r26525, r26526, MPFR_RNDN);
        mpfr_mul(r26528, r26524, r26527, MPFR_RNDN);
        mpfr_sub(r26529, r26516, r26528, MPFR_RNDN);
        mpfr_sqrt(r26530, r26529, MPFR_RNDN);
        mpfr_mul(r26531, r26515, r26530, MPFR_RNDN);
        return mpfr_get_d(r26531, MPFR_RNDN);
}

static mpfr_t r26532, r26533, r26534, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26532);
        mpfr_init_set_str(r26533, "1", 10, MPFR_RNDN);
        mpfr_init(r26534);
        mpfr_init(r26535);
        mpfr_init(r26536);
        mpfr_init_set_str(r26537, "2", 10, MPFR_RNDN);
        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_set_str(r26549, "-3.245701205059172e+301", 10, MPFR_RNDN);
        mpfr_init(r26550);
        mpfr_init(r26551);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init_set_str(r26556, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26557);
        mpfr_init(r26558);
        mpfr_init(r26559);
        mpfr_init(r26560);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init(r26563);
        mpfr_init_set_str(r26564, "4.1769564408861524e+276", 10, MPFR_RNDN);
        mpfr_init(r26565);
        mpfr_init(r26566);
        mpfr_init(r26567);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26532, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26534, M, MPFR_RNDN);
        mpfr_set_d(r26535, D, MPFR_RNDN);
        mpfr_mul(r26536, r26534, r26535, MPFR_RNDN);
        ;
        mpfr_set_d(r26538, d, MPFR_RNDN);
        mpfr_mul(r26539, r26537, r26538, MPFR_RNDN);
        mpfr_div(r26540, r26536, r26539, MPFR_RNDN);
        mpfr_set_d(r26541, h, MPFR_RNDN);
        mpfr_mul(r26542, r26540, r26541, MPFR_RNDN);
        mpfr_mul(r26543, r26540, r26542, MPFR_RNDN);
        mpfr_set_d(r26544, l, MPFR_RNDN);
        mpfr_div(r26545, r26543, r26544, MPFR_RNDN);
        mpfr_sub(r26546, r26533, r26545, MPFR_RNDN);
        mpfr_sqrt(r26547, r26546, MPFR_RNDN);
        mpfr_mul(r26548, r26532, r26547, MPFR_RNDN);
        ;
        mpfr_set_si(r26550, mpfr_cmp(r26548, r26549) <= 0, MPFR_RNDN);
        mpfr_div(r26551, r26534, r26537, MPFR_RNDN);
        mpfr_div(r26552, r26535, r26538, MPFR_RNDN);
        mpfr_neg(r26553, r26552, MPFR_RNDN);
        mpfr_mul(r26554, r26551, r26553, MPFR_RNDN);
        mpfr_div(r26555, r26534, r26538, MPFR_RNDN);
        ;
        mpfr_mul(r26557, r26556, r26535, MPFR_RNDN);
        mpfr_mul(r26558, r26555, r26557, MPFR_RNDN);
        mpfr_div(r26559, r26541, r26544, MPFR_RNDN);
        mpfr_mul(r26560, r26558, r26559, MPFR_RNDN);
        mpfr_fma(r26561, r26554, r26560, r26533, MPFR_RNDN);
        mpfr_sqrt(r26562, r26561, MPFR_RNDN);
        mpfr_mul(r26563, r26532, r26562, MPFR_RNDN);
        ;
        mpfr_set_si(r26565, mpfr_cmp(r26548, r26564) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r26565, MPFR_RNDN)) { mpfr_set(r26566, r26548, MPFR_RNDN); } else { mpfr_set(r26566, r26563, MPFR_RNDN); };
        if (mpfr_get_si(r26550, MPFR_RNDN)) { mpfr_set(r26567, r26563, MPFR_RNDN); } else { mpfr_set(r26567, r26566, MPFR_RNDN); };
        return mpfr_get_d(r26567, MPFR_RNDN);
}

static mpfr_t 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, r26598, r26599, r26600, r26601, r26602, r26603;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26568);
        mpfr_init_set_str(r26569, "1", 10, MPFR_RNDN);
        mpfr_init(r26570);
        mpfr_init(r26571);
        mpfr_init(r26572);
        mpfr_init_set_str(r26573, "2", 10, MPFR_RNDN);
        mpfr_init(r26574);
        mpfr_init(r26575);
        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_set_str(r26585, "-3.245701205059172e+301", 10, MPFR_RNDN);
        mpfr_init(r26586);
        mpfr_init(r26587);
        mpfr_init(r26588);
        mpfr_init(r26589);
        mpfr_init(r26590);
        mpfr_init(r26591);
        mpfr_init_set_str(r26592, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26593);
        mpfr_init(r26594);
        mpfr_init(r26595);
        mpfr_init(r26596);
        mpfr_init(r26597);
        mpfr_init(r26598);
        mpfr_init(r26599);
        mpfr_init_set_str(r26600, "4.1769564408861524e+276", 10, MPFR_RNDN);
        mpfr_init(r26601);
        mpfr_init(r26602);
        mpfr_init(r26603);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r26568, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r26570, M, MPFR_RNDN);
        mpfr_set_d(r26571, D, MPFR_RNDN);
        mpfr_mul(r26572, r26570, r26571, MPFR_RNDN);
        ;
        mpfr_set_d(r26574, d, MPFR_RNDN);
        mpfr_mul(r26575, r26573, r26574, MPFR_RNDN);
        mpfr_div(r26576, r26572, r26575, MPFR_RNDN);
        mpfr_set_d(r26577, h, MPFR_RNDN);
        mpfr_mul(r26578, r26576, r26577, MPFR_RNDN);
        mpfr_mul(r26579, r26576, r26578, MPFR_RNDN);
        mpfr_set_d(r26580, l, MPFR_RNDN);
        mpfr_div(r26581, r26579, r26580, MPFR_RNDN);
        mpfr_sub(r26582, r26569, r26581, MPFR_RNDN);
        mpfr_sqrt(r26583, r26582, MPFR_RNDN);
        mpfr_mul(r26584, r26568, r26583, MPFR_RNDN);
        ;
        mpfr_set_si(r26586, mpfr_cmp(r26584, r26585) <= 0, MPFR_RNDN);
        mpfr_div(r26587, r26570, r26573, MPFR_RNDN);
        mpfr_div(r26588, r26571, r26574, MPFR_RNDN);
        mpfr_neg(r26589, r26588, MPFR_RNDN);
        mpfr_mul(r26590, r26587, r26589, MPFR_RNDN);
        mpfr_div(r26591, r26570, r26574, MPFR_RNDN);
        ;
        mpfr_mul(r26593, r26592, r26571, MPFR_RNDN);
        mpfr_mul(r26594, r26591, r26593, MPFR_RNDN);
        mpfr_div(r26595, r26577, r26580, MPFR_RNDN);
        mpfr_mul(r26596, r26594, r26595, MPFR_RNDN);
        mpfr_fma(r26597, r26590, r26596, r26569, MPFR_RNDN);
        mpfr_sqrt(r26598, r26597, MPFR_RNDN);
        mpfr_mul(r26599, r26568, r26598, MPFR_RNDN);
        ;
        mpfr_set_si(r26601, mpfr_cmp(r26584, r26600) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r26601, MPFR_RNDN)) { mpfr_set(r26602, r26584, MPFR_RNDN); } else { mpfr_set(r26602, r26599, MPFR_RNDN); };
        if (mpfr_get_si(r26586, MPFR_RNDN)) { mpfr_set(r26603, r26599, MPFR_RNDN); } else { mpfr_set(r26603, r26602, MPFR_RNDN); };
        return mpfr_get_d(r26603, MPFR_RNDN);
}

