#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 r10492 = c0;
        float r10493 = 2;
        float r10494 = w;
        float r10495 = r10493 * r10494;
        float r10496 = r10492 / r10495;
        float r10497 = d;
        float r10498 = r10497 * r10497;
        float r10499 = r10492 * r10498;
        float r10500 = h;
        float r10501 = r10494 * r10500;
        float r10502 = D;
        float r10503 = r10502 * r10502;
        float r10504 = r10501 * r10503;
        float r10505 = r10499 / r10504;
        float r10506 = r10505 * r10505;
        float r10507 = M;
        float r10508 = r10507 * r10507;
        float r10509 = r10506 - r10508;
        float r10510 = sqrt(r10509);
        float r10511 = r10505 + r10510;
        float r10512 = r10496 * r10511;
        return r10512;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10513 = c0;
        double r10514 = 2;
        double r10515 = w;
        double r10516 = r10514 * r10515;
        double r10517 = r10513 / r10516;
        double r10518 = d;
        double r10519 = r10518 * r10518;
        double r10520 = r10513 * r10519;
        double r10521 = h;
        double r10522 = r10515 * r10521;
        double r10523 = D;
        double r10524 = r10523 * r10523;
        double r10525 = r10522 * r10524;
        double r10526 = r10520 / r10525;
        double r10527 = r10526 * r10526;
        double r10528 = M;
        double r10529 = r10528 * r10528;
        double r10530 = r10527 - r10529;
        double r10531 = sqrt(r10530);
        double r10532 = r10526 + r10531;
        double r10533 = r10517 * r10532;
        return r10533;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10534 = c0;
        float r10535 = 2;
        float r10536 = w;
        float r10537 = r10535 * r10536;
        float r10538 = r10534 / r10537;
        float r10539 = M;
        float r10540 = fabs(r10539);
        float r10541 = r10534 / r10536;
        float r10542 = h;
        float r10543 = r10541 / r10542;
        float r10544 = d;
        float r10545 = D;
        float r10546 = r10544 / r10545;
        float r10547 = r10546 * r10546;
        float r10548 = r10543 * r10547;
        float r10549 = r10548 + r10539;
        float r10550 = r10548 - r10539;
        float r10551 = r10549 * r10550;
        float r10552 = sqrt(r10551);
        float r10553 = r10548 - r10552;
        float r10554 = cbrt(r10553);
        float r10555 = r10554 * r10554;
        float r10556 = r10555 * r10554;
        float r10557 = r10540 / r10556;
        float r10558 = r10540 * r10557;
        float r10559 = r10538 * r10558;
        float r10560 = -1.7774054903267738e+308;
        bool r10561 = r10559 <= r10560;
        float r10562 = r10536 * r10542;
        float r10563 = r10534 / r10562;
        float r10564 = r10563 * r10547;
        float r10565 = r10564 - r10539;
        float r10566 = r10539 + r10564;
        float r10567 = r10565 * r10566;
        float r10568 = sqrt(r10567);
        float r10569 = r10568 + r10564;
        float r10570 = 3;
        float r10571 = pow(r10569, r10570);
        float r10572 = cbrt(r10571);
        float r10573 = r10538 * r10572;
        float r10574 = 6.942428153254331e+205;
        bool r10575 = r10559 <= r10574;
        float r10576 = cbrt(r10543);
        float r10577 = r10576 * r10576;
        float r10578 = r10576 * r10547;
        float r10579 = r10577 * r10578;
        float r10580 = r10579 - r10539;
        float r10581 = r10549 * r10580;
        float r10582 = sqrt(r10581);
        float r10583 = r10548 - r10582;
        float r10584 = r10540 / r10583;
        float r10585 = r10540 * r10584;
        float r10586 = r10538 * r10585;
        float r10587 = 0;
        float r10588 = r10575 ? r10586 : r10587;
        float r10589 = r10561 ? r10573 : r10588;
        return r10589;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10590 = c0;
        double r10591 = 2;
        double r10592 = w;
        double r10593 = r10591 * r10592;
        double r10594 = r10590 / r10593;
        double r10595 = M;
        double r10596 = fabs(r10595);
        double r10597 = r10590 / r10592;
        double r10598 = h;
        double r10599 = r10597 / r10598;
        double r10600 = d;
        double r10601 = D;
        double r10602 = r10600 / r10601;
        double r10603 = r10602 * r10602;
        double r10604 = r10599 * r10603;
        double r10605 = r10604 + r10595;
        double r10606 = r10604 - r10595;
        double r10607 = r10605 * r10606;
        double r10608 = sqrt(r10607);
        double r10609 = r10604 - r10608;
        double r10610 = cbrt(r10609);
        double r10611 = r10610 * r10610;
        double r10612 = r10611 * r10610;
        double r10613 = r10596 / r10612;
        double r10614 = r10596 * r10613;
        double r10615 = r10594 * r10614;
        double r10616 = -1.7774054903267738e+308;
        bool r10617 = r10615 <= r10616;
        double r10618 = r10592 * r10598;
        double r10619 = r10590 / r10618;
        double r10620 = r10619 * r10603;
        double r10621 = r10620 - r10595;
        double r10622 = r10595 + r10620;
        double r10623 = r10621 * r10622;
        double r10624 = sqrt(r10623);
        double r10625 = r10624 + r10620;
        double r10626 = 3;
        double r10627 = pow(r10625, r10626);
        double r10628 = cbrt(r10627);
        double r10629 = r10594 * r10628;
        double r10630 = 6.942428153254331e+205;
        bool r10631 = r10615 <= r10630;
        double r10632 = cbrt(r10599);
        double r10633 = r10632 * r10632;
        double r10634 = r10632 * r10603;
        double r10635 = r10633 * r10634;
        double r10636 = r10635 - r10595;
        double r10637 = r10605 * r10636;
        double r10638 = sqrt(r10637);
        double r10639 = r10604 - r10638;
        double r10640 = r10596 / r10639;
        double r10641 = r10596 * r10640;
        double r10642 = r10594 * r10641;
        double r10643 = 0;
        double r10644 = r10631 ? r10642 : r10643;
        double r10645 = r10617 ? r10629 : r10644;
        return r10645;
}

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 r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655, r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6480);
        mpfr_init(r10646);
        mpfr_init_set_str(r10647, "2", 10, MPFR_RNDN);
        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(r10658);
        mpfr_init(r10659);
        mpfr_init(r10660);
        mpfr_init(r10661);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init(r10666);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10646, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10648, w, MPFR_RNDN);
        mpfr_mul(r10649, r10647, r10648, MPFR_RNDN);
        mpfr_div(r10650, r10646, r10649, MPFR_RNDN);
        mpfr_set_d(r10651, d, MPFR_RNDN);
        mpfr_mul(r10652, r10651, r10651, MPFR_RNDN);
        mpfr_mul(r10653, r10646, r10652, MPFR_RNDN);
        mpfr_set_d(r10654, h, MPFR_RNDN);
        mpfr_mul(r10655, r10648, r10654, MPFR_RNDN);
        mpfr_set_d(r10656, D, MPFR_RNDN);
        mpfr_mul(r10657, r10656, r10656, MPFR_RNDN);
        mpfr_mul(r10658, r10655, r10657, MPFR_RNDN);
        mpfr_div(r10659, r10653, r10658, MPFR_RNDN);
        mpfr_mul(r10660, r10659, r10659, MPFR_RNDN);
        mpfr_set_d(r10661, M, MPFR_RNDN);
        mpfr_mul(r10662, r10661, r10661, MPFR_RNDN);
        mpfr_sub(r10663, r10660, r10662, MPFR_RNDN);
        mpfr_sqrt(r10664, r10663, MPFR_RNDN);
        mpfr_add(r10665, r10659, r10664, MPFR_RNDN);
        mpfr_mul(r10666, r10650, r10665, MPFR_RNDN);
        return mpfr_get_d(r10666, MPFR_RNDN);
}

static mpfr_t r10667, r10668, r10669, r10670, r10671, r10672, r10673, r10674, r10675, r10676, r10677, r10678, r10679, r10680, r10681, r10682, r10683, r10684, r10685, r10686, r10687, r10688, r10689, r10690, r10691, r10692, r10693, r10694, r10695, r10696, r10697, r10698, r10699, r10700, r10701, r10702, r10703, r10704, r10705, r10706, r10707, r10708, r10709, r10710, r10711, r10712, r10713, r10714, r10715, r10716, r10717, r10718, r10719, r10720, r10721, r10722;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6480);
        mpfr_init(r10667);
        mpfr_init_set_str(r10668, "2", 10, MPFR_RNDN);
        mpfr_init(r10669);
        mpfr_init(r10670);
        mpfr_init(r10671);
        mpfr_init(r10672);
        mpfr_init(r10673);
        mpfr_init(r10674);
        mpfr_init(r10675);
        mpfr_init(r10676);
        mpfr_init(r10677);
        mpfr_init(r10678);
        mpfr_init(r10679);
        mpfr_init(r10680);
        mpfr_init(r10681);
        mpfr_init(r10682);
        mpfr_init(r10683);
        mpfr_init(r10684);
        mpfr_init(r10685);
        mpfr_init(r10686);
        mpfr_init(r10687);
        mpfr_init(r10688);
        mpfr_init(r10689);
        mpfr_init(r10690);
        mpfr_init(r10691);
        mpfr_init(r10692);
        mpfr_init_set_str(r10693, "-1.7774054903267738e+308", 10, MPFR_RNDN);
        mpfr_init(r10694);
        mpfr_init(r10695);
        mpfr_init(r10696);
        mpfr_init(r10697);
        mpfr_init(r10698);
        mpfr_init(r10699);
        mpfr_init(r10700);
        mpfr_init(r10701);
        mpfr_init(r10702);
        mpfr_init_set_str(r10703, "3", 10, MPFR_RNDN);
        mpfr_init(r10704);
        mpfr_init(r10705);
        mpfr_init(r10706);
        mpfr_init_set_str(r10707, "6.942428153254331e+205", 10, MPFR_RNDN);
        mpfr_init(r10708);
        mpfr_init(r10709);
        mpfr_init(r10710);
        mpfr_init(r10711);
        mpfr_init(r10712);
        mpfr_init(r10713);
        mpfr_init(r10714);
        mpfr_init(r10715);
        mpfr_init(r10716);
        mpfr_init(r10717);
        mpfr_init(r10718);
        mpfr_init(r10719);
        mpfr_init_set_str(r10720, "0", 10, MPFR_RNDN);
        mpfr_init(r10721);
        mpfr_init(r10722);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10667, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10669, w, MPFR_RNDN);
        mpfr_mul(r10670, r10668, r10669, MPFR_RNDN);
        mpfr_div(r10671, r10667, r10670, MPFR_RNDN);
        mpfr_set_d(r10672, M, MPFR_RNDN);
        mpfr_abs(r10673, r10672, MPFR_RNDN);
        mpfr_div(r10674, r10667, r10669, MPFR_RNDN);
        mpfr_set_d(r10675, h, MPFR_RNDN);
        mpfr_div(r10676, r10674, r10675, MPFR_RNDN);
        mpfr_set_d(r10677, d, MPFR_RNDN);
        mpfr_set_d(r10678, D, MPFR_RNDN);
        mpfr_div(r10679, r10677, r10678, MPFR_RNDN);
        mpfr_mul(r10680, r10679, r10679, MPFR_RNDN);
        mpfr_mul(r10681, r10676, r10680, MPFR_RNDN);
        mpfr_add(r10682, r10681, r10672, MPFR_RNDN);
        mpfr_sub(r10683, r10681, r10672, MPFR_RNDN);
        mpfr_mul(r10684, r10682, r10683, MPFR_RNDN);
        mpfr_sqrt(r10685, r10684, MPFR_RNDN);
        mpfr_sub(r10686, r10681, r10685, MPFR_RNDN);
        mpfr_cbrt(r10687, r10686, MPFR_RNDN);
        mpfr_mul(r10688, r10687, r10687, MPFR_RNDN);
        mpfr_mul(r10689, r10688, r10687, MPFR_RNDN);
        mpfr_div(r10690, r10673, r10689, MPFR_RNDN);
        mpfr_mul(r10691, r10673, r10690, MPFR_RNDN);
        mpfr_mul(r10692, r10671, r10691, MPFR_RNDN);
        ;
        mpfr_set_si(r10694, mpfr_cmp(r10692, r10693) <= 0, MPFR_RNDN);
        mpfr_mul(r10695, r10669, r10675, MPFR_RNDN);
        mpfr_div(r10696, r10667, r10695, MPFR_RNDN);
        mpfr_mul(r10697, r10696, r10680, MPFR_RNDN);
        mpfr_sub(r10698, r10697, r10672, MPFR_RNDN);
        mpfr_add(r10699, r10672, r10697, MPFR_RNDN);
        mpfr_mul(r10700, r10698, r10699, MPFR_RNDN);
        mpfr_sqrt(r10701, r10700, MPFR_RNDN);
        mpfr_add(r10702, r10701, r10697, MPFR_RNDN);
        ;
        mpfr_pow(r10704, r10702, r10703, MPFR_RNDN);
        mpfr_cbrt(r10705, r10704, MPFR_RNDN);
        mpfr_mul(r10706, r10671, r10705, MPFR_RNDN);
        ;
        mpfr_set_si(r10708, mpfr_cmp(r10692, r10707) <= 0, MPFR_RNDN);
        mpfr_cbrt(r10709, r10676, MPFR_RNDN);
        mpfr_mul(r10710, r10709, r10709, MPFR_RNDN);
        mpfr_mul(r10711, r10709, r10680, MPFR_RNDN);
        mpfr_mul(r10712, r10710, r10711, MPFR_RNDN);
        mpfr_sub(r10713, r10712, r10672, MPFR_RNDN);
        mpfr_mul(r10714, r10682, r10713, MPFR_RNDN);
        mpfr_sqrt(r10715, r10714, MPFR_RNDN);
        mpfr_sub(r10716, r10681, r10715, MPFR_RNDN);
        mpfr_div(r10717, r10673, r10716, MPFR_RNDN);
        mpfr_mul(r10718, r10673, r10717, MPFR_RNDN);
        mpfr_mul(r10719, r10671, r10718, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10708, MPFR_RNDN)) { mpfr_set(r10721, r10719, MPFR_RNDN); } else { mpfr_set(r10721, r10720, MPFR_RNDN); };
        if (mpfr_get_si(r10694, MPFR_RNDN)) { mpfr_set(r10722, r10706, MPFR_RNDN); } else { mpfr_set(r10722, r10721, MPFR_RNDN); };
        return mpfr_get_d(r10722, MPFR_RNDN);
}

static mpfr_t r10723, r10724, r10725, r10726, r10727, r10728, r10729, r10730, r10731, r10732, r10733, r10734, r10735, r10736, r10737, r10738, r10739, r10740, r10741, r10742, r10743, r10744, r10745, r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753, r10754, r10755, r10756, r10757, r10758, r10759, r10760, r10761, r10762, r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6480);
        mpfr_init(r10723);
        mpfr_init_set_str(r10724, "2", 10, MPFR_RNDN);
        mpfr_init(r10725);
        mpfr_init(r10726);
        mpfr_init(r10727);
        mpfr_init(r10728);
        mpfr_init(r10729);
        mpfr_init(r10730);
        mpfr_init(r10731);
        mpfr_init(r10732);
        mpfr_init(r10733);
        mpfr_init(r10734);
        mpfr_init(r10735);
        mpfr_init(r10736);
        mpfr_init(r10737);
        mpfr_init(r10738);
        mpfr_init(r10739);
        mpfr_init(r10740);
        mpfr_init(r10741);
        mpfr_init(r10742);
        mpfr_init(r10743);
        mpfr_init(r10744);
        mpfr_init(r10745);
        mpfr_init(r10746);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init_set_str(r10749, "-1.7774054903267738e+308", 10, MPFR_RNDN);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
        mpfr_init(r10753);
        mpfr_init(r10754);
        mpfr_init(r10755);
        mpfr_init(r10756);
        mpfr_init(r10757);
        mpfr_init(r10758);
        mpfr_init_set_str(r10759, "3", 10, MPFR_RNDN);
        mpfr_init(r10760);
        mpfr_init(r10761);
        mpfr_init(r10762);
        mpfr_init_set_str(r10763, "6.942428153254331e+205", 10, MPFR_RNDN);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init_set_str(r10776, "0", 10, MPFR_RNDN);
        mpfr_init(r10777);
        mpfr_init(r10778);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10723, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10725, w, MPFR_RNDN);
        mpfr_mul(r10726, r10724, r10725, MPFR_RNDN);
        mpfr_div(r10727, r10723, r10726, MPFR_RNDN);
        mpfr_set_d(r10728, M, MPFR_RNDN);
        mpfr_abs(r10729, r10728, MPFR_RNDN);
        mpfr_div(r10730, r10723, r10725, MPFR_RNDN);
        mpfr_set_d(r10731, h, MPFR_RNDN);
        mpfr_div(r10732, r10730, r10731, MPFR_RNDN);
        mpfr_set_d(r10733, d, MPFR_RNDN);
        mpfr_set_d(r10734, D, MPFR_RNDN);
        mpfr_div(r10735, r10733, r10734, MPFR_RNDN);
        mpfr_mul(r10736, r10735, r10735, MPFR_RNDN);
        mpfr_mul(r10737, r10732, r10736, MPFR_RNDN);
        mpfr_add(r10738, r10737, r10728, MPFR_RNDN);
        mpfr_sub(r10739, r10737, r10728, MPFR_RNDN);
        mpfr_mul(r10740, r10738, r10739, MPFR_RNDN);
        mpfr_sqrt(r10741, r10740, MPFR_RNDN);
        mpfr_sub(r10742, r10737, r10741, MPFR_RNDN);
        mpfr_cbrt(r10743, r10742, MPFR_RNDN);
        mpfr_mul(r10744, r10743, r10743, MPFR_RNDN);
        mpfr_mul(r10745, r10744, r10743, MPFR_RNDN);
        mpfr_div(r10746, r10729, r10745, MPFR_RNDN);
        mpfr_mul(r10747, r10729, r10746, MPFR_RNDN);
        mpfr_mul(r10748, r10727, r10747, MPFR_RNDN);
        ;
        mpfr_set_si(r10750, mpfr_cmp(r10748, r10749) <= 0, MPFR_RNDN);
        mpfr_mul(r10751, r10725, r10731, MPFR_RNDN);
        mpfr_div(r10752, r10723, r10751, MPFR_RNDN);
        mpfr_mul(r10753, r10752, r10736, MPFR_RNDN);
        mpfr_sub(r10754, r10753, r10728, MPFR_RNDN);
        mpfr_add(r10755, r10728, r10753, MPFR_RNDN);
        mpfr_mul(r10756, r10754, r10755, MPFR_RNDN);
        mpfr_sqrt(r10757, r10756, MPFR_RNDN);
        mpfr_add(r10758, r10757, r10753, MPFR_RNDN);
        ;
        mpfr_pow(r10760, r10758, r10759, MPFR_RNDN);
        mpfr_cbrt(r10761, r10760, MPFR_RNDN);
        mpfr_mul(r10762, r10727, r10761, MPFR_RNDN);
        ;
        mpfr_set_si(r10764, mpfr_cmp(r10748, r10763) <= 0, MPFR_RNDN);
        mpfr_cbrt(r10765, r10732, MPFR_RNDN);
        mpfr_mul(r10766, r10765, r10765, MPFR_RNDN);
        mpfr_mul(r10767, r10765, r10736, MPFR_RNDN);
        mpfr_mul(r10768, r10766, r10767, MPFR_RNDN);
        mpfr_sub(r10769, r10768, r10728, MPFR_RNDN);
        mpfr_mul(r10770, r10738, r10769, MPFR_RNDN);
        mpfr_sqrt(r10771, r10770, MPFR_RNDN);
        mpfr_sub(r10772, r10737, r10771, MPFR_RNDN);
        mpfr_div(r10773, r10729, r10772, MPFR_RNDN);
        mpfr_mul(r10774, r10729, r10773, MPFR_RNDN);
        mpfr_mul(r10775, r10727, r10774, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10764, MPFR_RNDN)) { mpfr_set(r10777, r10775, MPFR_RNDN); } else { mpfr_set(r10777, r10776, MPFR_RNDN); };
        if (mpfr_get_si(r10750, MPFR_RNDN)) { mpfr_set(r10778, r10762, MPFR_RNDN); } else { mpfr_set(r10778, r10777, MPFR_RNDN); };
        return mpfr_get_d(r10778, MPFR_RNDN);
}

