#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 r10594 = c0;
        float r10595 = 2;
        float r10596 = w;
        float r10597 = r10595 * r10596;
        float r10598 = r10594 / r10597;
        float r10599 = d;
        float r10600 = r10599 * r10599;
        float r10601 = r10594 * r10600;
        float r10602 = h;
        float r10603 = r10596 * r10602;
        float r10604 = D;
        float r10605 = r10604 * r10604;
        float r10606 = r10603 * r10605;
        float r10607 = r10601 / r10606;
        float r10608 = r10607 * r10607;
        float r10609 = M;
        float r10610 = r10609 * r10609;
        float r10611 = r10608 - r10610;
        float r10612 = sqrt(r10611);
        float r10613 = r10607 + r10612;
        float r10614 = r10598 * r10613;
        return r10614;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10615 = c0;
        double r10616 = 2;
        double r10617 = w;
        double r10618 = r10616 * r10617;
        double r10619 = r10615 / r10618;
        double r10620 = d;
        double r10621 = r10620 * r10620;
        double r10622 = r10615 * r10621;
        double r10623 = h;
        double r10624 = r10617 * r10623;
        double r10625 = D;
        double r10626 = r10625 * r10625;
        double r10627 = r10624 * r10626;
        double r10628 = r10622 / r10627;
        double r10629 = r10628 * r10628;
        double r10630 = M;
        double r10631 = r10630 * r10630;
        double r10632 = r10629 - r10631;
        double r10633 = sqrt(r10632);
        double r10634 = r10628 + r10633;
        double r10635 = r10619 * r10634;
        return r10635;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10636 = c0;
        float r10637 = 2;
        float r10638 = w;
        float r10639 = r10637 * r10638;
        float r10640 = r10636 / r10639;
        float r10641 = d;
        float r10642 = D;
        float r10643 = r10641 / r10642;
        float r10644 = r10643 * r10643;
        float r10645 = r10636 / r10638;
        float r10646 = h;
        float r10647 = r10645 / r10646;
        float r10648 = r10644 * r10647;
        float r10649 = M;
        float r10650 = -r10649;
        float r10651 = r10649 * r10650;
        float r10652 = fma(r10648, r10648, r10651);
        float r10653 = sqrt(r10652);
        float r10654 = r10648 + r10653;
        float r10655 = 3;
        float r10656 = pow(r10654, r10655);
        float r10657 = cbrt(r10656);
        float r10658 = r10640 * r10657;
        float r10659 = -2.4395159806034355e-254;
        bool r10660 = r10658 <= r10659;
        float r10661 = 1.7448376482148038e-174;
        bool r10662 = r10658 <= r10661;
        float r10663 = r10637 / r10649;
        float r10664 = r10649 / r10638;
        float r10665 = r10663 / r10664;
        float r10666 = r10636 / r10665;
        float r10667 = r10649 * r10649;
        float r10668 = -r10667;
        float r10669 = fma(r10648, r10648, r10668);
        float r10670 = sqrt(r10669);
        float r10671 = r10648 - r10670;
        float r10672 = r10666 / r10671;
        float r10673 = 2.763585598570706e+282;
        bool r10674 = r10658 <= r10673;
        float r10675 = 0;
        float r10676 = r10674 ? r10658 : r10675;
        float r10677 = r10662 ? r10672 : r10676;
        float r10678 = r10660 ? r10658 : r10677;
        return r10678;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10679 = c0;
        double r10680 = 2;
        double r10681 = w;
        double r10682 = r10680 * r10681;
        double r10683 = r10679 / r10682;
        double r10684 = d;
        double r10685 = D;
        double r10686 = r10684 / r10685;
        double r10687 = r10686 * r10686;
        double r10688 = r10679 / r10681;
        double r10689 = h;
        double r10690 = r10688 / r10689;
        double r10691 = r10687 * r10690;
        double r10692 = M;
        double r10693 = -r10692;
        double r10694 = r10692 * r10693;
        double r10695 = fma(r10691, r10691, r10694);
        double r10696 = sqrt(r10695);
        double r10697 = r10691 + r10696;
        double r10698 = 3;
        double r10699 = pow(r10697, r10698);
        double r10700 = cbrt(r10699);
        double r10701 = r10683 * r10700;
        double r10702 = -2.4395159806034355e-254;
        bool r10703 = r10701 <= r10702;
        double r10704 = 1.7448376482148038e-174;
        bool r10705 = r10701 <= r10704;
        double r10706 = r10680 / r10692;
        double r10707 = r10692 / r10681;
        double r10708 = r10706 / r10707;
        double r10709 = r10679 / r10708;
        double r10710 = r10692 * r10692;
        double r10711 = -r10710;
        double r10712 = fma(r10691, r10691, r10711);
        double r10713 = sqrt(r10712);
        double r10714 = r10691 - r10713;
        double r10715 = r10709 / r10714;
        double r10716 = 2.763585598570706e+282;
        bool r10717 = r10701 <= r10716;
        double r10718 = 0;
        double r10719 = r10717 ? r10701 : r10718;
        double r10720 = r10705 ? r10715 : r10719;
        double r10721 = r10703 ? r10701 : r10720;
        return r10721;
}

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 r10722, r10723, r10724, r10725, r10726, r10727, r10728, r10729, r10730, r10731, r10732, r10733, r10734, r10735, r10736, r10737, r10738, r10739, r10740, r10741, r10742;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10722);
        mpfr_init_set_str(r10723, "2", 10, MPFR_RNDN);
        mpfr_init(r10724);
        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);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10722, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10724, w, MPFR_RNDN);
        mpfr_mul(r10725, r10723, r10724, MPFR_RNDN);
        mpfr_div(r10726, r10722, r10725, MPFR_RNDN);
        mpfr_set_d(r10727, d, MPFR_RNDN);
        mpfr_mul(r10728, r10727, r10727, MPFR_RNDN);
        mpfr_mul(r10729, r10722, r10728, MPFR_RNDN);
        mpfr_set_d(r10730, h, MPFR_RNDN);
        mpfr_mul(r10731, r10724, r10730, MPFR_RNDN);
        mpfr_set_d(r10732, D, MPFR_RNDN);
        mpfr_mul(r10733, r10732, r10732, MPFR_RNDN);
        mpfr_mul(r10734, r10731, r10733, MPFR_RNDN);
        mpfr_div(r10735, r10729, r10734, MPFR_RNDN);
        mpfr_mul(r10736, r10735, r10735, MPFR_RNDN);
        mpfr_set_d(r10737, M, MPFR_RNDN);
        mpfr_mul(r10738, r10737, r10737, MPFR_RNDN);
        mpfr_sub(r10739, r10736, r10738, MPFR_RNDN);
        mpfr_sqrt(r10740, r10739, MPFR_RNDN);
        mpfr_add(r10741, r10735, r10740, MPFR_RNDN);
        mpfr_mul(r10742, r10726, r10741, MPFR_RNDN);
        return mpfr_get_d(r10742, MPFR_RNDN);
}

static mpfr_t 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, r10779, r10780, r10781, r10782, r10783, r10784, r10785;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10743);
        mpfr_init_set_str(r10744, "2", 10, MPFR_RNDN);
        mpfr_init(r10745);
        mpfr_init(r10746);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init(r10749);
        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(r10759);
        mpfr_init(r10760);
        mpfr_init(r10761);
        mpfr_init_set_str(r10762, "3", 10, MPFR_RNDN);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init_set_str(r10766, "-2.4395159806034355e-254", 10, MPFR_RNDN);
        mpfr_init(r10767);
        mpfr_init_set_str(r10768, "1.7448376482148038e-174", 10, MPFR_RNDN);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init_set_str(r10780, "2.763585598570706e+282", 10, MPFR_RNDN);
        mpfr_init(r10781);
        mpfr_init_set_str(r10782, "0", 10, MPFR_RNDN);
        mpfr_init(r10783);
        mpfr_init(r10784);
        mpfr_init(r10785);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10743, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10745, w, MPFR_RNDN);
        mpfr_mul(r10746, r10744, r10745, MPFR_RNDN);
        mpfr_div(r10747, r10743, r10746, MPFR_RNDN);
        mpfr_set_d(r10748, d, MPFR_RNDN);
        mpfr_set_d(r10749, D, MPFR_RNDN);
        mpfr_div(r10750, r10748, r10749, MPFR_RNDN);
        mpfr_mul(r10751, r10750, r10750, MPFR_RNDN);
        mpfr_div(r10752, r10743, r10745, MPFR_RNDN);
        mpfr_set_d(r10753, h, MPFR_RNDN);
        mpfr_div(r10754, r10752, r10753, MPFR_RNDN);
        mpfr_mul(r10755, r10751, r10754, MPFR_RNDN);
        mpfr_set_d(r10756, M, MPFR_RNDN);
        mpfr_neg(r10757, r10756, MPFR_RNDN);
        mpfr_mul(r10758, r10756, r10757, MPFR_RNDN);
        mpfr_fma(r10759, r10755, r10755, r10758, MPFR_RNDN);
        mpfr_sqrt(r10760, r10759, MPFR_RNDN);
        mpfr_add(r10761, r10755, r10760, MPFR_RNDN);
        ;
        mpfr_pow(r10763, r10761, r10762, MPFR_RNDN);
        mpfr_cbrt(r10764, r10763, MPFR_RNDN);
        mpfr_mul(r10765, r10747, r10764, MPFR_RNDN);
        ;
        mpfr_set_si(r10767, mpfr_cmp(r10765, r10766) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10769, mpfr_cmp(r10765, r10768) <= 0, MPFR_RNDN);
        mpfr_div(r10770, r10744, r10756, MPFR_RNDN);
        mpfr_div(r10771, r10756, r10745, MPFR_RNDN);
        mpfr_div(r10772, r10770, r10771, MPFR_RNDN);
        mpfr_div(r10773, r10743, r10772, MPFR_RNDN);
        mpfr_mul(r10774, r10756, r10756, MPFR_RNDN);
        mpfr_neg(r10775, r10774, MPFR_RNDN);
        mpfr_fma(r10776, r10755, r10755, r10775, MPFR_RNDN);
        mpfr_sqrt(r10777, r10776, MPFR_RNDN);
        mpfr_sub(r10778, r10755, r10777, MPFR_RNDN);
        mpfr_div(r10779, r10773, r10778, MPFR_RNDN);
        ;
        mpfr_set_si(r10781, mpfr_cmp(r10765, r10780) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10781, MPFR_RNDN)) { mpfr_set(r10783, r10765, MPFR_RNDN); } else { mpfr_set(r10783, r10782, MPFR_RNDN); };
        if (mpfr_get_si(r10769, MPFR_RNDN)) { mpfr_set(r10784, r10779, MPFR_RNDN); } else { mpfr_set(r10784, r10783, MPFR_RNDN); };
        if (mpfr_get_si(r10767, MPFR_RNDN)) { mpfr_set(r10785, r10765, MPFR_RNDN); } else { mpfr_set(r10785, r10784, MPFR_RNDN); };
        return mpfr_get_d(r10785, MPFR_RNDN);
}

static mpfr_t r10786, r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819, r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827, r10828;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10786);
        mpfr_init_set_str(r10787, "2", 10, MPFR_RNDN);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init(r10796);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
        mpfr_init_set_str(r10805, "3", 10, MPFR_RNDN);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init(r10808);
        mpfr_init_set_str(r10809, "-2.4395159806034355e-254", 10, MPFR_RNDN);
        mpfr_init(r10810);
        mpfr_init_set_str(r10811, "1.7448376482148038e-174", 10, MPFR_RNDN);
        mpfr_init(r10812);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init(r10819);
        mpfr_init(r10820);
        mpfr_init(r10821);
        mpfr_init(r10822);
        mpfr_init_set_str(r10823, "2.763585598570706e+282", 10, MPFR_RNDN);
        mpfr_init(r10824);
        mpfr_init_set_str(r10825, "0", 10, MPFR_RNDN);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init(r10828);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10786, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10788, w, MPFR_RNDN);
        mpfr_mul(r10789, r10787, r10788, MPFR_RNDN);
        mpfr_div(r10790, r10786, r10789, MPFR_RNDN);
        mpfr_set_d(r10791, d, MPFR_RNDN);
        mpfr_set_d(r10792, D, MPFR_RNDN);
        mpfr_div(r10793, r10791, r10792, MPFR_RNDN);
        mpfr_mul(r10794, r10793, r10793, MPFR_RNDN);
        mpfr_div(r10795, r10786, r10788, MPFR_RNDN);
        mpfr_set_d(r10796, h, MPFR_RNDN);
        mpfr_div(r10797, r10795, r10796, MPFR_RNDN);
        mpfr_mul(r10798, r10794, r10797, MPFR_RNDN);
        mpfr_set_d(r10799, M, MPFR_RNDN);
        mpfr_neg(r10800, r10799, MPFR_RNDN);
        mpfr_mul(r10801, r10799, r10800, MPFR_RNDN);
        mpfr_fma(r10802, r10798, r10798, r10801, MPFR_RNDN);
        mpfr_sqrt(r10803, r10802, MPFR_RNDN);
        mpfr_add(r10804, r10798, r10803, MPFR_RNDN);
        ;
        mpfr_pow(r10806, r10804, r10805, MPFR_RNDN);
        mpfr_cbrt(r10807, r10806, MPFR_RNDN);
        mpfr_mul(r10808, r10790, r10807, MPFR_RNDN);
        ;
        mpfr_set_si(r10810, mpfr_cmp(r10808, r10809) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10812, mpfr_cmp(r10808, r10811) <= 0, MPFR_RNDN);
        mpfr_div(r10813, r10787, r10799, MPFR_RNDN);
        mpfr_div(r10814, r10799, r10788, MPFR_RNDN);
        mpfr_div(r10815, r10813, r10814, MPFR_RNDN);
        mpfr_div(r10816, r10786, r10815, MPFR_RNDN);
        mpfr_mul(r10817, r10799, r10799, MPFR_RNDN);
        mpfr_neg(r10818, r10817, MPFR_RNDN);
        mpfr_fma(r10819, r10798, r10798, r10818, MPFR_RNDN);
        mpfr_sqrt(r10820, r10819, MPFR_RNDN);
        mpfr_sub(r10821, r10798, r10820, MPFR_RNDN);
        mpfr_div(r10822, r10816, r10821, MPFR_RNDN);
        ;
        mpfr_set_si(r10824, mpfr_cmp(r10808, r10823) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10824, MPFR_RNDN)) { mpfr_set(r10826, r10808, MPFR_RNDN); } else { mpfr_set(r10826, r10825, MPFR_RNDN); };
        if (mpfr_get_si(r10812, MPFR_RNDN)) { mpfr_set(r10827, r10822, MPFR_RNDN); } else { mpfr_set(r10827, r10826, MPFR_RNDN); };
        if (mpfr_get_si(r10810, MPFR_RNDN)) { mpfr_set(r10828, r10808, MPFR_RNDN); } else { mpfr_set(r10828, r10827, MPFR_RNDN); };
        return mpfr_get_d(r10828, MPFR_RNDN);
}

