#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 r31595 = c0;
        float r31596 = 2;
        float r31597 = w;
        float r31598 = r31596 * r31597;
        float r31599 = r31595 / r31598;
        float r31600 = d;
        float r31601 = r31600 * r31600;
        float r31602 = r31595 * r31601;
        float r31603 = h;
        float r31604 = r31597 * r31603;
        float r31605 = D;
        float r31606 = r31605 * r31605;
        float r31607 = r31604 * r31606;
        float r31608 = r31602 / r31607;
        float r31609 = r31608 * r31608;
        float r31610 = M;
        float r31611 = r31610 * r31610;
        float r31612 = r31609 - r31611;
        float r31613 = sqrt(r31612);
        float r31614 = r31608 + r31613;
        float r31615 = r31599 * r31614;
        return r31615;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r31616 = c0;
        double r31617 = 2;
        double r31618 = w;
        double r31619 = r31617 * r31618;
        double r31620 = r31616 / r31619;
        double r31621 = d;
        double r31622 = r31621 * r31621;
        double r31623 = r31616 * r31622;
        double r31624 = h;
        double r31625 = r31618 * r31624;
        double r31626 = D;
        double r31627 = r31626 * r31626;
        double r31628 = r31625 * r31627;
        double r31629 = r31623 / r31628;
        double r31630 = r31629 * r31629;
        double r31631 = M;
        double r31632 = r31631 * r31631;
        double r31633 = r31630 - r31632;
        double r31634 = sqrt(r31633);
        double r31635 = r31629 + r31634;
        double r31636 = r31620 * r31635;
        return r31636;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r31637 = c0;
        float r31638 = -1.828010956563134e+35;
        bool r31639 = r31637 <= r31638;
        float r31640 = 0;
        float r31641 = -1.5858025515425473e-113;
        bool r31642 = r31637 <= r31641;
        float r31643 = 2;
        float r31644 = w;
        float r31645 = r31643 * r31644;
        float r31646 = r31637 / r31645;
        float r31647 = M;
        float r31648 = 1;
        float r31649 = r31647 / r31648;
        float r31650 = r31637 / r31644;
        float r31651 = h;
        float r31652 = r31650 / r31651;
        float r31653 = d;
        float r31654 = D;
        float r31655 = r31653 / r31654;
        float r31656 = r31655 * r31655;
        float r31657 = r31652 * r31656;
        float r31658 = r31657 * r31657;
        float r31659 = r31647 * r31647;
        float r31660 = r31658 - r31659;
        float r31661 = sqrt(r31660);
        float r31662 = r31657 - r31661;
        float r31663 = r31647 / r31662;
        float r31664 = r31649 * r31663;
        float r31665 = r31646 * r31664;
        float r31666 = r31642 ? r31665 : r31640;
        float r31667 = r31639 ? r31640 : r31666;
        return r31667;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r31668 = c0;
        double r31669 = -1.828010956563134e+35;
        bool r31670 = r31668 <= r31669;
        double r31671 = 0;
        double r31672 = -1.5858025515425473e-113;
        bool r31673 = r31668 <= r31672;
        double r31674 = 2;
        double r31675 = w;
        double r31676 = r31674 * r31675;
        double r31677 = r31668 / r31676;
        double r31678 = M;
        double r31679 = 1;
        double r31680 = r31678 / r31679;
        double r31681 = r31668 / r31675;
        double r31682 = h;
        double r31683 = r31681 / r31682;
        double r31684 = d;
        double r31685 = D;
        double r31686 = r31684 / r31685;
        double r31687 = r31686 * r31686;
        double r31688 = r31683 * r31687;
        double r31689 = r31688 * r31688;
        double r31690 = r31678 * r31678;
        double r31691 = r31689 - r31690;
        double r31692 = sqrt(r31691);
        double r31693 = r31688 - r31692;
        double r31694 = r31678 / r31693;
        double r31695 = r31680 * r31694;
        double r31696 = r31677 * r31695;
        double r31697 = r31673 ? r31696 : r31671;
        double r31698 = r31670 ? r31671 : r31697;
        return r31698;
}

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 r31699, r31700, r31701, r31702, r31703, r31704, r31705, r31706, r31707, r31708, r31709, r31710, r31711, r31712, r31713, r31714, r31715, r31716, r31717, r31718, r31719;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(5264);
        mpfr_init(r31699);
        mpfr_init_set_str(r31700, "2", 10, MPFR_RNDN);
        mpfr_init(r31701);
        mpfr_init(r31702);
        mpfr_init(r31703);
        mpfr_init(r31704);
        mpfr_init(r31705);
        mpfr_init(r31706);
        mpfr_init(r31707);
        mpfr_init(r31708);
        mpfr_init(r31709);
        mpfr_init(r31710);
        mpfr_init(r31711);
        mpfr_init(r31712);
        mpfr_init(r31713);
        mpfr_init(r31714);
        mpfr_init(r31715);
        mpfr_init(r31716);
        mpfr_init(r31717);
        mpfr_init(r31718);
        mpfr_init(r31719);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31699, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r31701, w, MPFR_RNDN);
        mpfr_mul(r31702, r31700, r31701, MPFR_RNDN);
        mpfr_div(r31703, r31699, r31702, MPFR_RNDN);
        mpfr_set_d(r31704, d, MPFR_RNDN);
        mpfr_mul(r31705, r31704, r31704, MPFR_RNDN);
        mpfr_mul(r31706, r31699, r31705, MPFR_RNDN);
        mpfr_set_d(r31707, h, MPFR_RNDN);
        mpfr_mul(r31708, r31701, r31707, MPFR_RNDN);
        mpfr_set_d(r31709, D, MPFR_RNDN);
        mpfr_mul(r31710, r31709, r31709, MPFR_RNDN);
        mpfr_mul(r31711, r31708, r31710, MPFR_RNDN);
        mpfr_div(r31712, r31706, r31711, MPFR_RNDN);
        mpfr_mul(r31713, r31712, r31712, MPFR_RNDN);
        mpfr_set_d(r31714, M, MPFR_RNDN);
        mpfr_mul(r31715, r31714, r31714, MPFR_RNDN);
        mpfr_sub(r31716, r31713, r31715, MPFR_RNDN);
        mpfr_sqrt(r31717, r31716, MPFR_RNDN);
        mpfr_add(r31718, r31712, r31717, MPFR_RNDN);
        mpfr_mul(r31719, r31703, r31718, MPFR_RNDN);
        return mpfr_get_d(r31719, MPFR_RNDN);
}

static mpfr_t r31720, r31721, r31722, r31723, r31724, r31725, r31726, r31727, r31728, r31729, r31730, r31731, r31732, r31733, r31734, r31735, r31736, r31737, r31738, r31739, r31740, r31741, r31742, r31743, r31744, r31745, r31746, r31747, r31748, r31749, r31750;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(5264);
        mpfr_init(r31720);
        mpfr_init_set_str(r31721, "-1.828010956563134e+35", 10, MPFR_RNDN);
        mpfr_init(r31722);
        mpfr_init_set_str(r31723, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r31724, "-1.5858025515425473e-113", 10, MPFR_RNDN);
        mpfr_init(r31725);
        mpfr_init_set_str(r31726, "2", 10, MPFR_RNDN);
        mpfr_init(r31727);
        mpfr_init(r31728);
        mpfr_init(r31729);
        mpfr_init(r31730);
        mpfr_init_set_str(r31731, "1", 10, MPFR_RNDN);
        mpfr_init(r31732);
        mpfr_init(r31733);
        mpfr_init(r31734);
        mpfr_init(r31735);
        mpfr_init(r31736);
        mpfr_init(r31737);
        mpfr_init(r31738);
        mpfr_init(r31739);
        mpfr_init(r31740);
        mpfr_init(r31741);
        mpfr_init(r31742);
        mpfr_init(r31743);
        mpfr_init(r31744);
        mpfr_init(r31745);
        mpfr_init(r31746);
        mpfr_init(r31747);
        mpfr_init(r31748);
        mpfr_init(r31749);
        mpfr_init(r31750);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31720, c0, MPFR_RNDN);
        ;
        mpfr_set_si(r31722, mpfr_cmp(r31720, r31721) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r31725, mpfr_cmp(r31720, r31724) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r31727, w, MPFR_RNDN);
        mpfr_mul(r31728, r31726, r31727, MPFR_RNDN);
        mpfr_div(r31729, r31720, r31728, MPFR_RNDN);
        mpfr_set_d(r31730, M, MPFR_RNDN);
        ;
        mpfr_div(r31732, r31730, r31731, MPFR_RNDN);
        mpfr_div(r31733, r31720, r31727, MPFR_RNDN);
        mpfr_set_d(r31734, h, MPFR_RNDN);
        mpfr_div(r31735, r31733, r31734, MPFR_RNDN);
        mpfr_set_d(r31736, d, MPFR_RNDN);
        mpfr_set_d(r31737, D, MPFR_RNDN);
        mpfr_div(r31738, r31736, r31737, MPFR_RNDN);
        mpfr_mul(r31739, r31738, r31738, MPFR_RNDN);
        mpfr_mul(r31740, r31735, r31739, MPFR_RNDN);
        mpfr_mul(r31741, r31740, r31740, MPFR_RNDN);
        mpfr_mul(r31742, r31730, r31730, MPFR_RNDN);
        mpfr_sub(r31743, r31741, r31742, MPFR_RNDN);
        mpfr_sqrt(r31744, r31743, MPFR_RNDN);
        mpfr_sub(r31745, r31740, r31744, MPFR_RNDN);
        mpfr_div(r31746, r31730, r31745, MPFR_RNDN);
        mpfr_mul(r31747, r31732, r31746, MPFR_RNDN);
        mpfr_mul(r31748, r31729, r31747, MPFR_RNDN);
        if (mpfr_get_si(r31725, MPFR_RNDN)) { mpfr_set(r31749, r31748, MPFR_RNDN); } else { mpfr_set(r31749, r31723, MPFR_RNDN); };
        if (mpfr_get_si(r31722, MPFR_RNDN)) { mpfr_set(r31750, r31723, MPFR_RNDN); } else { mpfr_set(r31750, r31749, MPFR_RNDN); };
        return mpfr_get_d(r31750, MPFR_RNDN);
}

static mpfr_t r31751, r31752, r31753, r31754, r31755, r31756, r31757, r31758, r31759, r31760, r31761, r31762, r31763, r31764, r31765, r31766, r31767, r31768, r31769, r31770, r31771, r31772, r31773, r31774, r31775, r31776, r31777, r31778, r31779, r31780, r31781;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(5264);
        mpfr_init(r31751);
        mpfr_init_set_str(r31752, "-1.828010956563134e+35", 10, MPFR_RNDN);
        mpfr_init(r31753);
        mpfr_init_set_str(r31754, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r31755, "-1.5858025515425473e-113", 10, MPFR_RNDN);
        mpfr_init(r31756);
        mpfr_init_set_str(r31757, "2", 10, MPFR_RNDN);
        mpfr_init(r31758);
        mpfr_init(r31759);
        mpfr_init(r31760);
        mpfr_init(r31761);
        mpfr_init_set_str(r31762, "1", 10, MPFR_RNDN);
        mpfr_init(r31763);
        mpfr_init(r31764);
        mpfr_init(r31765);
        mpfr_init(r31766);
        mpfr_init(r31767);
        mpfr_init(r31768);
        mpfr_init(r31769);
        mpfr_init(r31770);
        mpfr_init(r31771);
        mpfr_init(r31772);
        mpfr_init(r31773);
        mpfr_init(r31774);
        mpfr_init(r31775);
        mpfr_init(r31776);
        mpfr_init(r31777);
        mpfr_init(r31778);
        mpfr_init(r31779);
        mpfr_init(r31780);
        mpfr_init(r31781);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31751, c0, MPFR_RNDN);
        ;
        mpfr_set_si(r31753, mpfr_cmp(r31751, r31752) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r31756, mpfr_cmp(r31751, r31755) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r31758, w, MPFR_RNDN);
        mpfr_mul(r31759, r31757, r31758, MPFR_RNDN);
        mpfr_div(r31760, r31751, r31759, MPFR_RNDN);
        mpfr_set_d(r31761, M, MPFR_RNDN);
        ;
        mpfr_div(r31763, r31761, r31762, MPFR_RNDN);
        mpfr_div(r31764, r31751, r31758, MPFR_RNDN);
        mpfr_set_d(r31765, h, MPFR_RNDN);
        mpfr_div(r31766, r31764, r31765, MPFR_RNDN);
        mpfr_set_d(r31767, d, MPFR_RNDN);
        mpfr_set_d(r31768, D, MPFR_RNDN);
        mpfr_div(r31769, r31767, r31768, MPFR_RNDN);
        mpfr_mul(r31770, r31769, r31769, MPFR_RNDN);
        mpfr_mul(r31771, r31766, r31770, MPFR_RNDN);
        mpfr_mul(r31772, r31771, r31771, MPFR_RNDN);
        mpfr_mul(r31773, r31761, r31761, MPFR_RNDN);
        mpfr_sub(r31774, r31772, r31773, MPFR_RNDN);
        mpfr_sqrt(r31775, r31774, MPFR_RNDN);
        mpfr_sub(r31776, r31771, r31775, MPFR_RNDN);
        mpfr_div(r31777, r31761, r31776, MPFR_RNDN);
        mpfr_mul(r31778, r31763, r31777, MPFR_RNDN);
        mpfr_mul(r31779, r31760, r31778, MPFR_RNDN);
        if (mpfr_get_si(r31756, MPFR_RNDN)) { mpfr_set(r31780, r31779, MPFR_RNDN); } else { mpfr_set(r31780, r31754, MPFR_RNDN); };
        if (mpfr_get_si(r31753, MPFR_RNDN)) { mpfr_set(r31781, r31754, MPFR_RNDN); } else { mpfr_set(r31781, r31780, MPFR_RNDN); };
        return mpfr_get_d(r31781, MPFR_RNDN);
}

