#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 r10620 = c0;
        float r10621 = 2;
        float r10622 = w;
        float r10623 = r10621 * r10622;
        float r10624 = r10620 / r10623;
        float r10625 = d;
        float r10626 = r10625 * r10625;
        float r10627 = r10620 * r10626;
        float r10628 = h;
        float r10629 = r10622 * r10628;
        float r10630 = D;
        float r10631 = r10630 * r10630;
        float r10632 = r10629 * r10631;
        float r10633 = r10627 / r10632;
        float r10634 = r10633 * r10633;
        float r10635 = M;
        float r10636 = r10635 * r10635;
        float r10637 = r10634 - r10636;
        float r10638 = sqrt(r10637);
        float r10639 = r10633 + r10638;
        float r10640 = r10624 * r10639;
        return r10640;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10641 = c0;
        double r10642 = 2;
        double r10643 = w;
        double r10644 = r10642 * r10643;
        double r10645 = r10641 / r10644;
        double r10646 = d;
        double r10647 = r10646 * r10646;
        double r10648 = r10641 * r10647;
        double r10649 = h;
        double r10650 = r10643 * r10649;
        double r10651 = D;
        double r10652 = r10651 * r10651;
        double r10653 = r10650 * r10652;
        double r10654 = r10648 / r10653;
        double r10655 = r10654 * r10654;
        double r10656 = M;
        double r10657 = r10656 * r10656;
        double r10658 = r10655 - r10657;
        double r10659 = sqrt(r10658);
        double r10660 = r10654 + r10659;
        double r10661 = r10645 * r10660;
        return r10661;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10662 = c0;
        float r10663 = 2;
        float r10664 = w;
        float r10665 = r10663 * r10664;
        float r10666 = r10662 / r10665;
        float r10667 = M;
        float r10668 = fabs(r10667);
        float r10669 = d;
        float r10670 = D;
        float r10671 = r10669 / r10670;
        float r10672 = r10671 * r10671;
        float r10673 = r10662 / r10664;
        float r10674 = h;
        float r10675 = r10673 / r10674;
        float r10676 = r10672 * r10675;
        float r10677 = r10667 * r10667;
        float r10678 = -r10677;
        float r10679 = fma(r10676, r10676, r10678);
        float r10680 = sqrt(r10679);
        float r10681 = r10676 - r10680;
        float r10682 = r10668 / r10681;
        float r10683 = r10668 * r10682;
        float r10684 = r10666 * r10683;
        float r10685 = -1.5389226419397108e+26;
        bool r10686 = r10684 <= r10685;
        float r10687 = -r10667;
        float r10688 = r10667 * r10687;
        float r10689 = fma(r10676, r10676, r10688);
        float r10690 = sqrt(r10689);
        float r10691 = r10676 + r10690;
        float r10692 = 3;
        float r10693 = pow(r10691, r10692);
        float r10694 = cbrt(r10693);
        float r10695 = r10666 * r10694;
        float r10696 = 1.6062188130794447e-44;
        bool r10697 = r10684 <= r10696;
        float r10698 = 0;
        float r10699 = r10697 ? r10684 : r10698;
        float r10700 = r10686 ? r10695 : r10699;
        return r10700;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10701 = c0;
        double r10702 = 2;
        double r10703 = w;
        double r10704 = r10702 * r10703;
        double r10705 = r10701 / r10704;
        double r10706 = M;
        double r10707 = fabs(r10706);
        double r10708 = d;
        double r10709 = D;
        double r10710 = r10708 / r10709;
        double r10711 = r10710 * r10710;
        double r10712 = r10701 / r10703;
        double r10713 = h;
        double r10714 = r10712 / r10713;
        double r10715 = r10711 * r10714;
        double r10716 = r10706 * r10706;
        double r10717 = -r10716;
        double r10718 = fma(r10715, r10715, r10717);
        double r10719 = sqrt(r10718);
        double r10720 = r10715 - r10719;
        double r10721 = r10707 / r10720;
        double r10722 = r10707 * r10721;
        double r10723 = r10705 * r10722;
        double r10724 = -1.5389226419397108e+26;
        bool r10725 = r10723 <= r10724;
        double r10726 = -r10706;
        double r10727 = r10706 * r10726;
        double r10728 = fma(r10715, r10715, r10727);
        double r10729 = sqrt(r10728);
        double r10730 = r10715 + r10729;
        double r10731 = 3;
        double r10732 = pow(r10730, r10731);
        double r10733 = cbrt(r10732);
        double r10734 = r10705 * r10733;
        double r10735 = 1.6062188130794447e-44;
        bool r10736 = r10723 <= r10735;
        double r10737 = 0;
        double r10738 = r10736 ? r10723 : r10737;
        double r10739 = r10725 ? r10734 : r10738;
        return r10739;
}

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 r10740, r10741, r10742, r10743, r10744, r10745, r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753, r10754, r10755, r10756, r10757, r10758, r10759, r10760;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10740);
        mpfr_init_set_str(r10741, "2", 10, MPFR_RNDN);
        mpfr_init(r10742);
        mpfr_init(r10743);
        mpfr_init(r10744);
        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);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10740, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10742, w, MPFR_RNDN);
        mpfr_mul(r10743, r10741, r10742, MPFR_RNDN);
        mpfr_div(r10744, r10740, r10743, MPFR_RNDN);
        mpfr_set_d(r10745, d, MPFR_RNDN);
        mpfr_mul(r10746, r10745, r10745, MPFR_RNDN);
        mpfr_mul(r10747, r10740, r10746, MPFR_RNDN);
        mpfr_set_d(r10748, h, MPFR_RNDN);
        mpfr_mul(r10749, r10742, r10748, MPFR_RNDN);
        mpfr_set_d(r10750, D, MPFR_RNDN);
        mpfr_mul(r10751, r10750, r10750, MPFR_RNDN);
        mpfr_mul(r10752, r10749, r10751, MPFR_RNDN);
        mpfr_div(r10753, r10747, r10752, MPFR_RNDN);
        mpfr_mul(r10754, r10753, r10753, MPFR_RNDN);
        mpfr_set_d(r10755, M, MPFR_RNDN);
        mpfr_mul(r10756, r10755, r10755, MPFR_RNDN);
        mpfr_sub(r10757, r10754, r10756, MPFR_RNDN);
        mpfr_sqrt(r10758, r10757, MPFR_RNDN);
        mpfr_add(r10759, r10753, r10758, MPFR_RNDN);
        mpfr_mul(r10760, r10744, r10759, MPFR_RNDN);
        return mpfr_get_d(r10760, MPFR_RNDN);
}

static mpfr_t 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, r10786, r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10761);
        mpfr_init_set_str(r10762, "2", 10, MPFR_RNDN);
        mpfr_init(r10763);
        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(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init(r10780);
        mpfr_init(r10781);
        mpfr_init(r10782);
        mpfr_init(r10783);
        mpfr_init_set_str(r10784, "-1.5389226419397108e+26", 10, MPFR_RNDN);
        mpfr_init(r10785);
        mpfr_init(r10786);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init_set_str(r10791, "3", 10, MPFR_RNDN);
        mpfr_init(r10792);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init_set_str(r10795, "1.6062188130794447e-44", 10, MPFR_RNDN);
        mpfr_init(r10796);
        mpfr_init_set_str(r10797, "0", 10, MPFR_RNDN);
        mpfr_init(r10798);
        mpfr_init(r10799);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10761, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10763, w, MPFR_RNDN);
        mpfr_mul(r10764, r10762, r10763, MPFR_RNDN);
        mpfr_div(r10765, r10761, r10764, MPFR_RNDN);
        mpfr_set_d(r10766, M, MPFR_RNDN);
        mpfr_abs(r10767, r10766, MPFR_RNDN);
        mpfr_set_d(r10768, d, MPFR_RNDN);
        mpfr_set_d(r10769, D, MPFR_RNDN);
        mpfr_div(r10770, r10768, r10769, MPFR_RNDN);
        mpfr_mul(r10771, r10770, r10770, MPFR_RNDN);
        mpfr_div(r10772, r10761, r10763, MPFR_RNDN);
        mpfr_set_d(r10773, h, MPFR_RNDN);
        mpfr_div(r10774, r10772, r10773, MPFR_RNDN);
        mpfr_mul(r10775, r10771, r10774, MPFR_RNDN);
        mpfr_mul(r10776, r10766, r10766, MPFR_RNDN);
        mpfr_neg(r10777, r10776, MPFR_RNDN);
        mpfr_fma(r10778, r10775, r10775, r10777, MPFR_RNDN);
        mpfr_sqrt(r10779, r10778, MPFR_RNDN);
        mpfr_sub(r10780, r10775, r10779, MPFR_RNDN);
        mpfr_div(r10781, r10767, r10780, MPFR_RNDN);
        mpfr_mul(r10782, r10767, r10781, MPFR_RNDN);
        mpfr_mul(r10783, r10765, r10782, MPFR_RNDN);
        ;
        mpfr_set_si(r10785, mpfr_cmp(r10783, r10784) <= 0, MPFR_RNDN);
        mpfr_neg(r10786, r10766, MPFR_RNDN);
        mpfr_mul(r10787, r10766, r10786, MPFR_RNDN);
        mpfr_fma(r10788, r10775, r10775, r10787, MPFR_RNDN);
        mpfr_sqrt(r10789, r10788, MPFR_RNDN);
        mpfr_add(r10790, r10775, r10789, MPFR_RNDN);
        ;
        mpfr_pow(r10792, r10790, r10791, MPFR_RNDN);
        mpfr_cbrt(r10793, r10792, MPFR_RNDN);
        mpfr_mul(r10794, r10765, r10793, MPFR_RNDN);
        ;
        mpfr_set_si(r10796, mpfr_cmp(r10783, r10795) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10796, MPFR_RNDN)) { mpfr_set(r10798, r10783, MPFR_RNDN); } else { mpfr_set(r10798, r10797, MPFR_RNDN); };
        if (mpfr_get_si(r10785, MPFR_RNDN)) { mpfr_set(r10799, r10794, MPFR_RNDN); } else { mpfr_set(r10799, r10798, MPFR_RNDN); };
        return mpfr_get_d(r10799, MPFR_RNDN);
}

static mpfr_t 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, r10829, r10830, r10831, r10832, r10833, r10834, r10835, r10836, r10837, r10838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6992);
        mpfr_init(r10800);
        mpfr_init_set_str(r10801, "2", 10, MPFR_RNDN);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init(r10808);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        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, "-1.5389226419397108e+26", 10, MPFR_RNDN);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init(r10828);
        mpfr_init(r10829);
        mpfr_init_set_str(r10830, "3", 10, MPFR_RNDN);
        mpfr_init(r10831);
        mpfr_init(r10832);
        mpfr_init(r10833);
        mpfr_init_set_str(r10834, "1.6062188130794447e-44", 10, MPFR_RNDN);
        mpfr_init(r10835);
        mpfr_init_set_str(r10836, "0", 10, MPFR_RNDN);
        mpfr_init(r10837);
        mpfr_init(r10838);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10800, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10802, w, MPFR_RNDN);
        mpfr_mul(r10803, r10801, r10802, MPFR_RNDN);
        mpfr_div(r10804, r10800, r10803, MPFR_RNDN);
        mpfr_set_d(r10805, M, MPFR_RNDN);
        mpfr_abs(r10806, r10805, MPFR_RNDN);
        mpfr_set_d(r10807, d, MPFR_RNDN);
        mpfr_set_d(r10808, D, MPFR_RNDN);
        mpfr_div(r10809, r10807, r10808, MPFR_RNDN);
        mpfr_mul(r10810, r10809, r10809, MPFR_RNDN);
        mpfr_div(r10811, r10800, r10802, MPFR_RNDN);
        mpfr_set_d(r10812, h, MPFR_RNDN);
        mpfr_div(r10813, r10811, r10812, MPFR_RNDN);
        mpfr_mul(r10814, r10810, r10813, MPFR_RNDN);
        mpfr_mul(r10815, r10805, r10805, MPFR_RNDN);
        mpfr_neg(r10816, r10815, MPFR_RNDN);
        mpfr_fma(r10817, r10814, r10814, r10816, MPFR_RNDN);
        mpfr_sqrt(r10818, r10817, MPFR_RNDN);
        mpfr_sub(r10819, r10814, r10818, MPFR_RNDN);
        mpfr_div(r10820, r10806, r10819, MPFR_RNDN);
        mpfr_mul(r10821, r10806, r10820, MPFR_RNDN);
        mpfr_mul(r10822, r10804, r10821, MPFR_RNDN);
        ;
        mpfr_set_si(r10824, mpfr_cmp(r10822, r10823) <= 0, MPFR_RNDN);
        mpfr_neg(r10825, r10805, MPFR_RNDN);
        mpfr_mul(r10826, r10805, r10825, MPFR_RNDN);
        mpfr_fma(r10827, r10814, r10814, r10826, MPFR_RNDN);
        mpfr_sqrt(r10828, r10827, MPFR_RNDN);
        mpfr_add(r10829, r10814, r10828, MPFR_RNDN);
        ;
        mpfr_pow(r10831, r10829, r10830, MPFR_RNDN);
        mpfr_cbrt(r10832, r10831, MPFR_RNDN);
        mpfr_mul(r10833, r10804, r10832, MPFR_RNDN);
        ;
        mpfr_set_si(r10835, mpfr_cmp(r10822, r10834) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10835, MPFR_RNDN)) { mpfr_set(r10837, r10822, MPFR_RNDN); } else { mpfr_set(r10837, r10836, MPFR_RNDN); };
        if (mpfr_get_si(r10824, MPFR_RNDN)) { mpfr_set(r10838, r10833, MPFR_RNDN); } else { mpfr_set(r10838, r10837, MPFR_RNDN); };
        return mpfr_get_d(r10838, MPFR_RNDN);
}

