#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 r10444 = c0;
        float r10445 = 2;
        float r10446 = w;
        float r10447 = r10445 * r10446;
        float r10448 = r10444 / r10447;
        float r10449 = d;
        float r10450 = r10449 * r10449;
        float r10451 = r10444 * r10450;
        float r10452 = h;
        float r10453 = r10446 * r10452;
        float r10454 = D;
        float r10455 = r10454 * r10454;
        float r10456 = r10453 * r10455;
        float r10457 = r10451 / r10456;
        float r10458 = r10457 * r10457;
        float r10459 = M;
        float r10460 = r10459 * r10459;
        float r10461 = r10458 - r10460;
        float r10462 = sqrt(r10461);
        float r10463 = r10457 + r10462;
        float r10464 = r10448 * r10463;
        return r10464;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10465 = c0;
        double r10466 = 2;
        double r10467 = w;
        double r10468 = r10466 * r10467;
        double r10469 = r10465 / r10468;
        double r10470 = d;
        double r10471 = r10470 * r10470;
        double r10472 = r10465 * r10471;
        double r10473 = h;
        double r10474 = r10467 * r10473;
        double r10475 = D;
        double r10476 = r10475 * r10475;
        double r10477 = r10474 * r10476;
        double r10478 = r10472 / r10477;
        double r10479 = r10478 * r10478;
        double r10480 = M;
        double r10481 = r10480 * r10480;
        double r10482 = r10479 - r10481;
        double r10483 = sqrt(r10482);
        double r10484 = r10478 + r10483;
        double r10485 = r10469 * r10484;
        return r10485;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10486 = M;
        float r10487 = c0;
        float r10488 = r10487 * r10486;
        float r10489 = w;
        float r10490 = 2;
        float r10491 = r10489 * r10490;
        float r10492 = r10488 / r10491;
        float r10493 = h;
        float r10494 = r10487 / r10493;
        float r10495 = r10494 / r10489;
        float r10496 = D;
        float r10497 = d;
        float r10498 = r10496 / r10497;
        float r10499 = r10498 * r10498;
        float r10500 = r10495 / r10499;
        float r10501 = r10486 * r10486;
        float r10502 = -r10501;
        float r10503 = fma(r10500, r10500, r10502);
        float r10504 = sqrt(r10503);
        float r10505 = r10500 - r10504;
        float r10506 = r10492 / r10505;
        float r10507 = r10486 * r10506;
        float r10508 = -2.750775893256393e+87;
        bool r10509 = r10507 <= r10508;
        float r10510 = r10490 * r10489;
        float r10511 = r10487 / r10510;
        float r10512 = r10489 * r10493;
        float r10513 = r10487 / r10512;
        float r10514 = r10497 / r10496;
        float r10515 = r10514 * r10514;
        float r10516 = r10513 * r10515;
        float r10517 = fma(r10516, r10516, r10502);
        float r10518 = sqrt(r10517);
        float r10519 = r10518 + r10516;
        float r10520 = 3;
        float r10521 = pow(r10519, r10520);
        float r10522 = cbrt(r10521);
        float r10523 = r10511 * r10522;
        float r10524 = 6.942428153254334e+205;
        bool r10525 = r10507 <= r10524;
        float r10526 = 0;
        float r10527 = r10525 ? r10507 : r10526;
        float r10528 = r10509 ? r10523 : r10527;
        return r10528;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10529 = M;
        double r10530 = c0;
        double r10531 = r10530 * r10529;
        double r10532 = w;
        double r10533 = 2;
        double r10534 = r10532 * r10533;
        double r10535 = r10531 / r10534;
        double r10536 = h;
        double r10537 = r10530 / r10536;
        double r10538 = r10537 / r10532;
        double r10539 = D;
        double r10540 = d;
        double r10541 = r10539 / r10540;
        double r10542 = r10541 * r10541;
        double r10543 = r10538 / r10542;
        double r10544 = r10529 * r10529;
        double r10545 = -r10544;
        double r10546 = fma(r10543, r10543, r10545);
        double r10547 = sqrt(r10546);
        double r10548 = r10543 - r10547;
        double r10549 = r10535 / r10548;
        double r10550 = r10529 * r10549;
        double r10551 = -2.750775893256393e+87;
        bool r10552 = r10550 <= r10551;
        double r10553 = r10533 * r10532;
        double r10554 = r10530 / r10553;
        double r10555 = r10532 * r10536;
        double r10556 = r10530 / r10555;
        double r10557 = r10540 / r10539;
        double r10558 = r10557 * r10557;
        double r10559 = r10556 * r10558;
        double r10560 = fma(r10559, r10559, r10545);
        double r10561 = sqrt(r10560);
        double r10562 = r10561 + r10559;
        double r10563 = 3;
        double r10564 = pow(r10562, r10563);
        double r10565 = cbrt(r10564);
        double r10566 = r10554 * r10565;
        double r10567 = 6.942428153254334e+205;
        bool r10568 = r10550 <= r10567;
        double r10569 = 0;
        double r10570 = r10568 ? r10550 : r10569;
        double r10571 = r10552 ? r10566 : r10570;
        return r10571;
}

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 r10572, r10573, r10574, r10575, r10576, r10577, r10578, r10579, r10580, r10581, r10582, r10583, r10584, r10585, r10586, r10587, r10588, r10589, r10590, r10591, r10592;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10572);
        mpfr_init_set_str(r10573, "2", 10, MPFR_RNDN);
        mpfr_init(r10574);
        mpfr_init(r10575);
        mpfr_init(r10576);
        mpfr_init(r10577);
        mpfr_init(r10578);
        mpfr_init(r10579);
        mpfr_init(r10580);
        mpfr_init(r10581);
        mpfr_init(r10582);
        mpfr_init(r10583);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
        mpfr_init(r10587);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10572, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10574, w, MPFR_RNDN);
        mpfr_mul(r10575, r10573, r10574, MPFR_RNDN);
        mpfr_div(r10576, r10572, r10575, MPFR_RNDN);
        mpfr_set_d(r10577, d, MPFR_RNDN);
        mpfr_mul(r10578, r10577, r10577, MPFR_RNDN);
        mpfr_mul(r10579, r10572, r10578, MPFR_RNDN);
        mpfr_set_d(r10580, h, MPFR_RNDN);
        mpfr_mul(r10581, r10574, r10580, MPFR_RNDN);
        mpfr_set_d(r10582, D, MPFR_RNDN);
        mpfr_mul(r10583, r10582, r10582, MPFR_RNDN);
        mpfr_mul(r10584, r10581, r10583, MPFR_RNDN);
        mpfr_div(r10585, r10579, r10584, MPFR_RNDN);
        mpfr_mul(r10586, r10585, r10585, MPFR_RNDN);
        mpfr_set_d(r10587, M, MPFR_RNDN);
        mpfr_mul(r10588, r10587, r10587, MPFR_RNDN);
        mpfr_sub(r10589, r10586, r10588, MPFR_RNDN);
        mpfr_sqrt(r10590, r10589, MPFR_RNDN);
        mpfr_add(r10591, r10585, r10590, MPFR_RNDN);
        mpfr_mul(r10592, r10576, r10591, MPFR_RNDN);
        return mpfr_get_d(r10592, MPFR_RNDN);
}

static mpfr_t r10593, r10594, r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633, r10634, r10635;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init_set_str(r10597, "2", 10, MPFR_RNDN);
        mpfr_init(r10598);
        mpfr_init(r10599);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init_set_str(r10615, "-2.750775893256393e+87", 10, MPFR_RNDN);
        mpfr_init(r10616);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init(r10626);
        mpfr_init_set_str(r10627, "3", 10, MPFR_RNDN);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init_set_str(r10631, "6.942428153254334e+205", 10, MPFR_RNDN);
        mpfr_init(r10632);
        mpfr_init_set_str(r10633, "0", 10, MPFR_RNDN);
        mpfr_init(r10634);
        mpfr_init(r10635);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10593, M, MPFR_RNDN);
        mpfr_set_d(r10594, c0, MPFR_RNDN);
        mpfr_mul(r10595, r10594, r10593, MPFR_RNDN);
        mpfr_set_d(r10596, w, MPFR_RNDN);
        ;
        mpfr_mul(r10598, r10596, r10597, MPFR_RNDN);
        mpfr_div(r10599, r10595, r10598, MPFR_RNDN);
        mpfr_set_d(r10600, h, MPFR_RNDN);
        mpfr_div(r10601, r10594, r10600, MPFR_RNDN);
        mpfr_div(r10602, r10601, r10596, MPFR_RNDN);
        mpfr_set_d(r10603, D, MPFR_RNDN);
        mpfr_set_d(r10604, d, MPFR_RNDN);
        mpfr_div(r10605, r10603, r10604, MPFR_RNDN);
        mpfr_mul(r10606, r10605, r10605, MPFR_RNDN);
        mpfr_div(r10607, r10602, r10606, MPFR_RNDN);
        mpfr_mul(r10608, r10593, r10593, MPFR_RNDN);
        mpfr_neg(r10609, r10608, MPFR_RNDN);
        mpfr_fma(r10610, r10607, r10607, r10609, MPFR_RNDN);
        mpfr_sqrt(r10611, r10610, MPFR_RNDN);
        mpfr_sub(r10612, r10607, r10611, MPFR_RNDN);
        mpfr_div(r10613, r10599, r10612, MPFR_RNDN);
        mpfr_mul(r10614, r10593, r10613, MPFR_RNDN);
        ;
        mpfr_set_si(r10616, mpfr_cmp(r10614, r10615) <= 0, MPFR_RNDN);
        mpfr_mul(r10617, r10597, r10596, MPFR_RNDN);
        mpfr_div(r10618, r10594, r10617, MPFR_RNDN);
        mpfr_mul(r10619, r10596, r10600, MPFR_RNDN);
        mpfr_div(r10620, r10594, r10619, MPFR_RNDN);
        mpfr_div(r10621, r10604, r10603, MPFR_RNDN);
        mpfr_mul(r10622, r10621, r10621, MPFR_RNDN);
        mpfr_mul(r10623, r10620, r10622, MPFR_RNDN);
        mpfr_fma(r10624, r10623, r10623, r10609, MPFR_RNDN);
        mpfr_sqrt(r10625, r10624, MPFR_RNDN);
        mpfr_add(r10626, r10625, r10623, MPFR_RNDN);
        ;
        mpfr_pow(r10628, r10626, r10627, MPFR_RNDN);
        mpfr_cbrt(r10629, r10628, MPFR_RNDN);
        mpfr_mul(r10630, r10618, r10629, MPFR_RNDN);
        ;
        mpfr_set_si(r10632, mpfr_cmp(r10614, r10631) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10632, MPFR_RNDN)) { mpfr_set(r10634, r10614, MPFR_RNDN); } else { mpfr_set(r10634, r10633, MPFR_RNDN); };
        if (mpfr_get_si(r10616, MPFR_RNDN)) { mpfr_set(r10635, r10630, MPFR_RNDN); } else { mpfr_set(r10635, r10634, MPFR_RNDN); };
        return mpfr_get_d(r10635, MPFR_RNDN);
}

static mpfr_t r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655, r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666, r10667, r10668, r10669, r10670, r10671, r10672, r10673, r10674, r10675, r10676, r10677, r10678;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7248);
        mpfr_init(r10636);
        mpfr_init(r10637);
        mpfr_init(r10638);
        mpfr_init(r10639);
        mpfr_init_set_str(r10640, "2", 10, MPFR_RNDN);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init(r10646);
        mpfr_init(r10647);
        mpfr_init(r10648);
        mpfr_init(r10649);
        mpfr_init(r10650);
        mpfr_init(r10651);
        mpfr_init(r10652);
        mpfr_init(r10653);
        mpfr_init(r10654);
        mpfr_init(r10655);
        mpfr_init(r10656);
        mpfr_init(r10657);
        mpfr_init_set_str(r10658, "-2.750775893256393e+87", 10, MPFR_RNDN);
        mpfr_init(r10659);
        mpfr_init(r10660);
        mpfr_init(r10661);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init(r10666);
        mpfr_init(r10667);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init_set_str(r10670, "3", 10, MPFR_RNDN);
        mpfr_init(r10671);
        mpfr_init(r10672);
        mpfr_init(r10673);
        mpfr_init_set_str(r10674, "6.942428153254334e+205", 10, MPFR_RNDN);
        mpfr_init(r10675);
        mpfr_init_set_str(r10676, "0", 10, MPFR_RNDN);
        mpfr_init(r10677);
        mpfr_init(r10678);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10636, M, MPFR_RNDN);
        mpfr_set_d(r10637, c0, MPFR_RNDN);
        mpfr_mul(r10638, r10637, r10636, MPFR_RNDN);
        mpfr_set_d(r10639, w, MPFR_RNDN);
        ;
        mpfr_mul(r10641, r10639, r10640, MPFR_RNDN);
        mpfr_div(r10642, r10638, r10641, MPFR_RNDN);
        mpfr_set_d(r10643, h, MPFR_RNDN);
        mpfr_div(r10644, r10637, r10643, MPFR_RNDN);
        mpfr_div(r10645, r10644, r10639, MPFR_RNDN);
        mpfr_set_d(r10646, D, MPFR_RNDN);
        mpfr_set_d(r10647, d, MPFR_RNDN);
        mpfr_div(r10648, r10646, r10647, MPFR_RNDN);
        mpfr_mul(r10649, r10648, r10648, MPFR_RNDN);
        mpfr_div(r10650, r10645, r10649, MPFR_RNDN);
        mpfr_mul(r10651, r10636, r10636, MPFR_RNDN);
        mpfr_neg(r10652, r10651, MPFR_RNDN);
        mpfr_fma(r10653, r10650, r10650, r10652, MPFR_RNDN);
        mpfr_sqrt(r10654, r10653, MPFR_RNDN);
        mpfr_sub(r10655, r10650, r10654, MPFR_RNDN);
        mpfr_div(r10656, r10642, r10655, MPFR_RNDN);
        mpfr_mul(r10657, r10636, r10656, MPFR_RNDN);
        ;
        mpfr_set_si(r10659, mpfr_cmp(r10657, r10658) <= 0, MPFR_RNDN);
        mpfr_mul(r10660, r10640, r10639, MPFR_RNDN);
        mpfr_div(r10661, r10637, r10660, MPFR_RNDN);
        mpfr_mul(r10662, r10639, r10643, MPFR_RNDN);
        mpfr_div(r10663, r10637, r10662, MPFR_RNDN);
        mpfr_div(r10664, r10647, r10646, MPFR_RNDN);
        mpfr_mul(r10665, r10664, r10664, MPFR_RNDN);
        mpfr_mul(r10666, r10663, r10665, MPFR_RNDN);
        mpfr_fma(r10667, r10666, r10666, r10652, MPFR_RNDN);
        mpfr_sqrt(r10668, r10667, MPFR_RNDN);
        mpfr_add(r10669, r10668, r10666, MPFR_RNDN);
        ;
        mpfr_pow(r10671, r10669, r10670, MPFR_RNDN);
        mpfr_cbrt(r10672, r10671, MPFR_RNDN);
        mpfr_mul(r10673, r10661, r10672, MPFR_RNDN);
        ;
        mpfr_set_si(r10675, mpfr_cmp(r10657, r10674) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10675, MPFR_RNDN)) { mpfr_set(r10677, r10657, MPFR_RNDN); } else { mpfr_set(r10677, r10676, MPFR_RNDN); };
        if (mpfr_get_si(r10659, MPFR_RNDN)) { mpfr_set(r10678, r10673, MPFR_RNDN); } else { mpfr_set(r10678, r10677, MPFR_RNDN); };
        return mpfr_get_d(r10678, MPFR_RNDN);
}

