#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Henrywood and Agarwal, Equation (12)";

double f_if(float d, float h, float l, float M, float D) {
        float r31510 = d;
        float r31511 = h;
        float r31512 = r31510 / r31511;
        float r31513 = 1;
        float r31514 = 2;
        float r31515 = r31513 / r31514;
        float r31516 = pow(r31512, r31515);
        float r31517 = l;
        float r31518 = r31510 / r31517;
        float r31519 = pow(r31518, r31515);
        float r31520 = r31516 * r31519;
        float r31521 = M;
        float r31522 = D;
        float r31523 = r31521 * r31522;
        float r31524 = r31514 * r31510;
        float r31525 = r31523 / r31524;
        float r31526 = pow(r31525, r31514);
        float r31527 = r31515 * r31526;
        float r31528 = r31511 / r31517;
        float r31529 = r31527 * r31528;
        float r31530 = r31513 - r31529;
        float r31531 = r31520 * r31530;
        return r31531;
}

double f_id(double d, double h, double l, double M, double D) {
        double r31532 = d;
        double r31533 = h;
        double r31534 = r31532 / r31533;
        double r31535 = 1;
        double r31536 = 2;
        double r31537 = r31535 / r31536;
        double r31538 = pow(r31534, r31537);
        double r31539 = l;
        double r31540 = r31532 / r31539;
        double r31541 = pow(r31540, r31537);
        double r31542 = r31538 * r31541;
        double r31543 = M;
        double r31544 = D;
        double r31545 = r31543 * r31544;
        double r31546 = r31536 * r31532;
        double r31547 = r31545 / r31546;
        double r31548 = pow(r31547, r31536);
        double r31549 = r31537 * r31548;
        double r31550 = r31533 / r31539;
        double r31551 = r31549 * r31550;
        double r31552 = r31535 - r31551;
        double r31553 = r31542 * r31552;
        return r31553;
}


double f_of(float d, float h, float l, float M, float D) {
        float r31554 = l;
        float r31555 = 1.1752293688657991e-300;
        bool r31556 = r31554 <= r31555;
        float r31557 = d;
        float r31558 = h;
        float r31559 = r31557 / r31558;
        float r31560 = cbrt(r31559);
        float r31561 = r31560 * r31560;
        float r31562 = 1;
        float r31563 = 2;
        float r31564 = r31562 / r31563;
        float r31565 = pow(r31561, r31564);
        float r31566 = cbrt(r31557);
        float r31567 = r31562 / r31558;
        float r31568 = cbrt(r31567);
        float r31569 = r31566 * r31568;
        float r31570 = pow(r31569, r31564);
        float r31571 = r31565 * r31570;
        float r31572 = r31557 / r31554;
        float r31573 = pow(r31572, r31564);
        float r31574 = r31571 * r31573;
        float r31575 = M;
        float r31576 = D;
        float r31577 = r31575 * r31576;
        float r31578 = r31563 * r31557;
        float r31579 = r31577 / r31578;
        float r31580 = pow(r31579, r31563);
        float r31581 = r31562 * r31580;
        float r31582 = r31581 * r31558;
        float r31583 = r31563 * r31554;
        float r31584 = r31582 / r31583;
        float r31585 = r31562 - r31584;
        float r31586 = r31574 * r31585;
        float r31587 = 4.16807317627252e-141;
        bool r31588 = r31554 <= r31587;
        float r31589 = pow(r31560, r31564);
        float r31590 = r31565 * r31589;
        float r31591 = pow(r31557, r31564);
        float r31592 = r31562 / r31554;
        float r31593 = pow(r31592, r31564);
        float r31594 = r31591 * r31593;
        float r31595 = r31590 * r31594;
        float r31596 = r31595 * r31585;
        float r31597 = pow(r31567, r31564);
        float r31598 = r31591 * r31597;
        float r31599 = r31598 * r31573;
        float r31600 = r31599 * r31585;
        float r31601 = r31588 ? r31596 : r31600;
        float r31602 = r31556 ? r31586 : r31601;
        return r31602;
}

double f_od(double d, double h, double l, double M, double D) {
        double r31603 = l;
        double r31604 = 1.1752293688657991e-300;
        bool r31605 = r31603 <= r31604;
        double r31606 = d;
        double r31607 = h;
        double r31608 = r31606 / r31607;
        double r31609 = cbrt(r31608);
        double r31610 = r31609 * r31609;
        double r31611 = 1;
        double r31612 = 2;
        double r31613 = r31611 / r31612;
        double r31614 = pow(r31610, r31613);
        double r31615 = cbrt(r31606);
        double r31616 = r31611 / r31607;
        double r31617 = cbrt(r31616);
        double r31618 = r31615 * r31617;
        double r31619 = pow(r31618, r31613);
        double r31620 = r31614 * r31619;
        double r31621 = r31606 / r31603;
        double r31622 = pow(r31621, r31613);
        double r31623 = r31620 * r31622;
        double r31624 = M;
        double r31625 = D;
        double r31626 = r31624 * r31625;
        double r31627 = r31612 * r31606;
        double r31628 = r31626 / r31627;
        double r31629 = pow(r31628, r31612);
        double r31630 = r31611 * r31629;
        double r31631 = r31630 * r31607;
        double r31632 = r31612 * r31603;
        double r31633 = r31631 / r31632;
        double r31634 = r31611 - r31633;
        double r31635 = r31623 * r31634;
        double r31636 = 4.16807317627252e-141;
        bool r31637 = r31603 <= r31636;
        double r31638 = pow(r31609, r31613);
        double r31639 = r31614 * r31638;
        double r31640 = pow(r31606, r31613);
        double r31641 = r31611 / r31603;
        double r31642 = pow(r31641, r31613);
        double r31643 = r31640 * r31642;
        double r31644 = r31639 * r31643;
        double r31645 = r31644 * r31634;
        double r31646 = pow(r31616, r31613);
        double r31647 = r31640 * r31646;
        double r31648 = r31647 * r31622;
        double r31649 = r31648 * r31634;
        double r31650 = r31637 ? r31645 : r31649;
        double r31651 = r31605 ? r31635 : r31650;
        return r31651;
}

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 r31652, r31653, r31654, r31655, r31656, r31657, r31658, r31659, r31660, r31661, r31662, r31663, r31664, r31665, r31666, r31667, r31668, r31669, r31670, r31671, r31672, r31673;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r31652);
        mpfr_init(r31653);
        mpfr_init(r31654);
        mpfr_init_set_str(r31655, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31656, "2", 10, MPFR_RNDN);
        mpfr_init(r31657);
        mpfr_init(r31658);
        mpfr_init(r31659);
        mpfr_init(r31660);
        mpfr_init(r31661);
        mpfr_init(r31662);
        mpfr_init(r31663);
        mpfr_init(r31664);
        mpfr_init(r31665);
        mpfr_init(r31666);
        mpfr_init(r31667);
        mpfr_init(r31668);
        mpfr_init(r31669);
        mpfr_init(r31670);
        mpfr_init(r31671);
        mpfr_init(r31672);
        mpfr_init(r31673);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31652, d, MPFR_RNDN);
        mpfr_set_d(r31653, h, MPFR_RNDN);
        mpfr_div(r31654, r31652, r31653, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31657, r31655, r31656, MPFR_RNDN);
        mpfr_pow(r31658, r31654, r31657, MPFR_RNDN);
        mpfr_set_d(r31659, l, MPFR_RNDN);
        mpfr_div(r31660, r31652, r31659, MPFR_RNDN);
        mpfr_pow(r31661, r31660, r31657, MPFR_RNDN);
        mpfr_mul(r31662, r31658, r31661, MPFR_RNDN);
        mpfr_set_d(r31663, M, MPFR_RNDN);
        mpfr_set_d(r31664, D, MPFR_RNDN);
        mpfr_mul(r31665, r31663, r31664, MPFR_RNDN);
        mpfr_mul(r31666, r31656, r31652, MPFR_RNDN);
        mpfr_div(r31667, r31665, r31666, MPFR_RNDN);
        mpfr_pow(r31668, r31667, r31656, MPFR_RNDN);
        mpfr_mul(r31669, r31657, r31668, MPFR_RNDN);
        mpfr_div(r31670, r31653, r31659, MPFR_RNDN);
        mpfr_mul(r31671, r31669, r31670, MPFR_RNDN);
        mpfr_sub(r31672, r31655, r31671, MPFR_RNDN);
        mpfr_mul(r31673, r31662, r31672, MPFR_RNDN);
        return mpfr_get_d(r31673, MPFR_RNDN);
}

static mpfr_t r31674, r31675, r31676, r31677, r31678, r31679, r31680, r31681, r31682, r31683, r31684, r31685, r31686, r31687, r31688, r31689, r31690, r31691, r31692, r31693, r31694, r31695, r31696, r31697, r31698, r31699, r31700, r31701, r31702, r31703, r31704, r31705, r31706, r31707, r31708, r31709, r31710, r31711, r31712, r31713, r31714, r31715, r31716, r31717, r31718, r31719, r31720, r31721, r31722;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31674);
        mpfr_init_set_str(r31675, "1.1752293688657991e-300", 10, MPFR_RNDN);
        mpfr_init(r31676);
        mpfr_init(r31677);
        mpfr_init(r31678);
        mpfr_init(r31679);
        mpfr_init(r31680);
        mpfr_init(r31681);
        mpfr_init_set_str(r31682, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31683, "2", 10, MPFR_RNDN);
        mpfr_init(r31684);
        mpfr_init(r31685);
        mpfr_init(r31686);
        mpfr_init(r31687);
        mpfr_init(r31688);
        mpfr_init(r31689);
        mpfr_init(r31690);
        mpfr_init(r31691);
        mpfr_init(r31692);
        mpfr_init(r31693);
        mpfr_init(r31694);
        mpfr_init(r31695);
        mpfr_init(r31696);
        mpfr_init(r31697);
        mpfr_init(r31698);
        mpfr_init(r31699);
        mpfr_init(r31700);
        mpfr_init(r31701);
        mpfr_init(r31702);
        mpfr_init(r31703);
        mpfr_init(r31704);
        mpfr_init(r31705);
        mpfr_init(r31706);
        mpfr_init_set_str(r31707, "4.16807317627252e-141", 10, MPFR_RNDN);
        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);
        mpfr_init(r31720);
        mpfr_init(r31721);
        mpfr_init(r31722);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31674, l, MPFR_RNDN);
        ;
        mpfr_set_si(r31676, mpfr_cmp(r31674, r31675) <= 0, MPFR_RNDN);
        mpfr_set_d(r31677, d, MPFR_RNDN);
        mpfr_set_d(r31678, h, MPFR_RNDN);
        mpfr_div(r31679, r31677, r31678, MPFR_RNDN);
        mpfr_cbrt(r31680, r31679, MPFR_RNDN);
        mpfr_mul(r31681, r31680, r31680, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31684, r31682, r31683, MPFR_RNDN);
        mpfr_pow(r31685, r31681, r31684, MPFR_RNDN);
        mpfr_cbrt(r31686, r31677, MPFR_RNDN);
        mpfr_div(r31687, r31682, r31678, MPFR_RNDN);
        mpfr_cbrt(r31688, r31687, MPFR_RNDN);
        mpfr_mul(r31689, r31686, r31688, MPFR_RNDN);
        mpfr_pow(r31690, r31689, r31684, MPFR_RNDN);
        mpfr_mul(r31691, r31685, r31690, MPFR_RNDN);
        mpfr_div(r31692, r31677, r31674, MPFR_RNDN);
        mpfr_pow(r31693, r31692, r31684, MPFR_RNDN);
        mpfr_mul(r31694, r31691, r31693, MPFR_RNDN);
        mpfr_set_d(r31695, M, MPFR_RNDN);
        mpfr_set_d(r31696, D, MPFR_RNDN);
        mpfr_mul(r31697, r31695, r31696, MPFR_RNDN);
        mpfr_mul(r31698, r31683, r31677, MPFR_RNDN);
        mpfr_div(r31699, r31697, r31698, MPFR_RNDN);
        mpfr_pow(r31700, r31699, r31683, MPFR_RNDN);
        mpfr_mul(r31701, r31682, r31700, MPFR_RNDN);
        mpfr_mul(r31702, r31701, r31678, MPFR_RNDN);
        mpfr_mul(r31703, r31683, r31674, MPFR_RNDN);
        mpfr_div(r31704, r31702, r31703, MPFR_RNDN);
        mpfr_sub(r31705, r31682, r31704, MPFR_RNDN);
        mpfr_mul(r31706, r31694, r31705, MPFR_RNDN);
        ;
        mpfr_set_si(r31708, mpfr_cmp(r31674, r31707) <= 0, MPFR_RNDN);
        mpfr_pow(r31709, r31680, r31684, MPFR_RNDN);
        mpfr_mul(r31710, r31685, r31709, MPFR_RNDN);
        mpfr_pow(r31711, r31677, r31684, MPFR_RNDN);
        mpfr_div(r31712, r31682, r31674, MPFR_RNDN);
        mpfr_pow(r31713, r31712, r31684, MPFR_RNDN);
        mpfr_mul(r31714, r31711, r31713, MPFR_RNDN);
        mpfr_mul(r31715, r31710, r31714, MPFR_RNDN);
        mpfr_mul(r31716, r31715, r31705, MPFR_RNDN);
        mpfr_pow(r31717, r31687, r31684, MPFR_RNDN);
        mpfr_mul(r31718, r31711, r31717, MPFR_RNDN);
        mpfr_mul(r31719, r31718, r31693, MPFR_RNDN);
        mpfr_mul(r31720, r31719, r31705, MPFR_RNDN);
        if (mpfr_get_si(r31708, MPFR_RNDN)) { mpfr_set(r31721, r31716, MPFR_RNDN); } else { mpfr_set(r31721, r31720, MPFR_RNDN); };
        if (mpfr_get_si(r31676, MPFR_RNDN)) { mpfr_set(r31722, r31706, MPFR_RNDN); } else { mpfr_set(r31722, r31721, MPFR_RNDN); };
        return mpfr_get_d(r31722, MPFR_RNDN);
}

static mpfr_t 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, r31751, r31752, r31753, r31754, r31755, r31756, r31757, r31758, r31759, r31760, r31761, r31762, r31763, r31764, r31765, r31766, r31767, r31768, r31769, r31770, r31771;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31723);
        mpfr_init_set_str(r31724, "1.1752293688657991e-300", 10, MPFR_RNDN);
        mpfr_init(r31725);
        mpfr_init(r31726);
        mpfr_init(r31727);
        mpfr_init(r31728);
        mpfr_init(r31729);
        mpfr_init(r31730);
        mpfr_init_set_str(r31731, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31732, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r31751);
        mpfr_init(r31752);
        mpfr_init(r31753);
        mpfr_init(r31754);
        mpfr_init(r31755);
        mpfr_init_set_str(r31756, "4.16807317627252e-141", 10, MPFR_RNDN);
        mpfr_init(r31757);
        mpfr_init(r31758);
        mpfr_init(r31759);
        mpfr_init(r31760);
        mpfr_init(r31761);
        mpfr_init(r31762);
        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);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r31723, l, MPFR_RNDN);
        ;
        mpfr_set_si(r31725, mpfr_cmp(r31723, r31724) <= 0, MPFR_RNDN);
        mpfr_set_d(r31726, d, MPFR_RNDN);
        mpfr_set_d(r31727, h, MPFR_RNDN);
        mpfr_div(r31728, r31726, r31727, MPFR_RNDN);
        mpfr_cbrt(r31729, r31728, MPFR_RNDN);
        mpfr_mul(r31730, r31729, r31729, MPFR_RNDN);
        ;
        ;
        mpfr_div(r31733, r31731, r31732, MPFR_RNDN);
        mpfr_pow(r31734, r31730, r31733, MPFR_RNDN);
        mpfr_cbrt(r31735, r31726, MPFR_RNDN);
        mpfr_div(r31736, r31731, r31727, MPFR_RNDN);
        mpfr_cbrt(r31737, r31736, MPFR_RNDN);
        mpfr_mul(r31738, r31735, r31737, MPFR_RNDN);
        mpfr_pow(r31739, r31738, r31733, MPFR_RNDN);
        mpfr_mul(r31740, r31734, r31739, MPFR_RNDN);
        mpfr_div(r31741, r31726, r31723, MPFR_RNDN);
        mpfr_pow(r31742, r31741, r31733, MPFR_RNDN);
        mpfr_mul(r31743, r31740, r31742, MPFR_RNDN);
        mpfr_set_d(r31744, M, MPFR_RNDN);
        mpfr_set_d(r31745, D, MPFR_RNDN);
        mpfr_mul(r31746, r31744, r31745, MPFR_RNDN);
        mpfr_mul(r31747, r31732, r31726, MPFR_RNDN);
        mpfr_div(r31748, r31746, r31747, MPFR_RNDN);
        mpfr_pow(r31749, r31748, r31732, MPFR_RNDN);
        mpfr_mul(r31750, r31731, r31749, MPFR_RNDN);
        mpfr_mul(r31751, r31750, r31727, MPFR_RNDN);
        mpfr_mul(r31752, r31732, r31723, MPFR_RNDN);
        mpfr_div(r31753, r31751, r31752, MPFR_RNDN);
        mpfr_sub(r31754, r31731, r31753, MPFR_RNDN);
        mpfr_mul(r31755, r31743, r31754, MPFR_RNDN);
        ;
        mpfr_set_si(r31757, mpfr_cmp(r31723, r31756) <= 0, MPFR_RNDN);
        mpfr_pow(r31758, r31729, r31733, MPFR_RNDN);
        mpfr_mul(r31759, r31734, r31758, MPFR_RNDN);
        mpfr_pow(r31760, r31726, r31733, MPFR_RNDN);
        mpfr_div(r31761, r31731, r31723, MPFR_RNDN);
        mpfr_pow(r31762, r31761, r31733, MPFR_RNDN);
        mpfr_mul(r31763, r31760, r31762, MPFR_RNDN);
        mpfr_mul(r31764, r31759, r31763, MPFR_RNDN);
        mpfr_mul(r31765, r31764, r31754, MPFR_RNDN);
        mpfr_pow(r31766, r31736, r31733, MPFR_RNDN);
        mpfr_mul(r31767, r31760, r31766, MPFR_RNDN);
        mpfr_mul(r31768, r31767, r31742, MPFR_RNDN);
        mpfr_mul(r31769, r31768, r31754, MPFR_RNDN);
        if (mpfr_get_si(r31757, MPFR_RNDN)) { mpfr_set(r31770, r31765, MPFR_RNDN); } else { mpfr_set(r31770, r31769, MPFR_RNDN); };
        if (mpfr_get_si(r31725, MPFR_RNDN)) { mpfr_set(r31771, r31755, MPFR_RNDN); } else { mpfr_set(r31771, r31770, MPFR_RNDN); };
        return mpfr_get_d(r31771, MPFR_RNDN);
}

