#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 r26572 = c0;
        float r26573 = 2;
        float r26574 = w;
        float r26575 = r26573 * r26574;
        float r26576 = r26572 / r26575;
        float r26577 = d;
        float r26578 = r26577 * r26577;
        float r26579 = r26572 * r26578;
        float r26580 = h;
        float r26581 = r26574 * r26580;
        float r26582 = D;
        float r26583 = r26582 * r26582;
        float r26584 = r26581 * r26583;
        float r26585 = r26579 / r26584;
        float r26586 = r26585 * r26585;
        float r26587 = M;
        float r26588 = r26587 * r26587;
        float r26589 = r26586 - r26588;
        float r26590 = sqrt(r26589);
        float r26591 = r26585 + r26590;
        float r26592 = r26576 * r26591;
        return r26592;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r26593 = c0;
        double r26594 = 2;
        double r26595 = w;
        double r26596 = r26594 * r26595;
        double r26597 = r26593 / r26596;
        double r26598 = d;
        double r26599 = r26598 * r26598;
        double r26600 = r26593 * r26599;
        double r26601 = h;
        double r26602 = r26595 * r26601;
        double r26603 = D;
        double r26604 = r26603 * r26603;
        double r26605 = r26602 * r26604;
        double r26606 = r26600 / r26605;
        double r26607 = r26606 * r26606;
        double r26608 = M;
        double r26609 = r26608 * r26608;
        double r26610 = r26607 - r26609;
        double r26611 = sqrt(r26610);
        double r26612 = r26606 + r26611;
        double r26613 = r26597 * r26612;
        return r26613;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r26614 = c0;
        float r26615 = 2;
        float r26616 = w;
        float r26617 = r26615 * r26616;
        float r26618 = r26614 / r26617;
        float r26619 = M;
        float r26620 = fabs(r26619);
        float r26621 = r26614 / r26616;
        float r26622 = h;
        float r26623 = r26621 / r26622;
        float r26624 = d;
        float r26625 = D;
        float r26626 = r26624 / r26625;
        float r26627 = r26626 * r26626;
        float r26628 = r26623 * r26627;
        float r26629 = r26628 + r26619;
        float r26630 = r26628 - r26619;
        float r26631 = r26629 * r26630;
        float r26632 = sqrt(r26631);
        float r26633 = r26628 - r26632;
        float r26634 = cbrt(r26633);
        float r26635 = r26620 / r26634;
        float r26636 = r26635 / r26634;
        float r26637 = r26627 * r26623;
        float r26638 = r26637 * r26637;
        float r26639 = r26619 * r26619;
        float r26640 = r26638 - r26639;
        float r26641 = sqrt(r26640);
        float r26642 = r26637 - r26641;
        float r26643 = cbrt(r26642);
        float r26644 = r26620 / r26643;
        float r26645 = r26636 * r26644;
        float r26646 = r26618 * r26645;
        float r26647 = -inf.0;
        bool r26648 = r26646 <= r26647;
        float r26649 = r26614 / r26622;
        float r26650 = r26649 / r26616;
        float r26651 = r26650 * r26627;
        float r26652 = r26651 - r26619;
        float r26653 = r26619 + r26651;
        float r26654 = r26652 * r26653;
        float r26655 = sqrt(r26654);
        float r26656 = r26655 + r26651;
        float r26657 = 3;
        float r26658 = pow(r26656, r26657);
        float r26659 = cbrt(r26658);
        float r26660 = r26618 * r26659;
        float r26661 = 4.5022642589937794e-229;
        bool r26662 = r26646 <= r26661;
        float r26663 = 0;
        float r26664 = r26662 ? r26646 : r26663;
        float r26665 = r26648 ? r26660 : r26664;
        return r26665;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r26666 = c0;
        double r26667 = 2;
        double r26668 = w;
        double r26669 = r26667 * r26668;
        double r26670 = r26666 / r26669;
        double r26671 = M;
        double r26672 = fabs(r26671);
        double r26673 = r26666 / r26668;
        double r26674 = h;
        double r26675 = r26673 / r26674;
        double r26676 = d;
        double r26677 = D;
        double r26678 = r26676 / r26677;
        double r26679 = r26678 * r26678;
        double r26680 = r26675 * r26679;
        double r26681 = r26680 + r26671;
        double r26682 = r26680 - r26671;
        double r26683 = r26681 * r26682;
        double r26684 = sqrt(r26683);
        double r26685 = r26680 - r26684;
        double r26686 = cbrt(r26685);
        double r26687 = r26672 / r26686;
        double r26688 = r26687 / r26686;
        double r26689 = r26679 * r26675;
        double r26690 = r26689 * r26689;
        double r26691 = r26671 * r26671;
        double r26692 = r26690 - r26691;
        double r26693 = sqrt(r26692);
        double r26694 = r26689 - r26693;
        double r26695 = cbrt(r26694);
        double r26696 = r26672 / r26695;
        double r26697 = r26688 * r26696;
        double r26698 = r26670 * r26697;
        double r26699 = -inf.0;
        bool r26700 = r26698 <= r26699;
        double r26701 = r26666 / r26674;
        double r26702 = r26701 / r26668;
        double r26703 = r26702 * r26679;
        double r26704 = r26703 - r26671;
        double r26705 = r26671 + r26703;
        double r26706 = r26704 * r26705;
        double r26707 = sqrt(r26706);
        double r26708 = r26707 + r26703;
        double r26709 = 3;
        double r26710 = pow(r26708, r26709);
        double r26711 = cbrt(r26710);
        double r26712 = r26670 * r26711;
        double r26713 = 4.5022642589937794e-229;
        bool r26714 = r26698 <= r26713;
        double r26715 = 0;
        double r26716 = r26714 ? r26698 : r26715;
        double r26717 = r26700 ? r26712 : r26716;
        return r26717;
}

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 r26718, r26719, r26720, r26721, r26722, r26723, r26724, r26725, r26726, r26727, r26728, r26729, r26730, r26731, r26732, r26733, r26734, r26735, r26736, r26737, r26738;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26718);
        mpfr_init_set_str(r26719, "2", 10, MPFR_RNDN);
        mpfr_init(r26720);
        mpfr_init(r26721);
        mpfr_init(r26722);
        mpfr_init(r26723);
        mpfr_init(r26724);
        mpfr_init(r26725);
        mpfr_init(r26726);
        mpfr_init(r26727);
        mpfr_init(r26728);
        mpfr_init(r26729);
        mpfr_init(r26730);
        mpfr_init(r26731);
        mpfr_init(r26732);
        mpfr_init(r26733);
        mpfr_init(r26734);
        mpfr_init(r26735);
        mpfr_init(r26736);
        mpfr_init(r26737);
        mpfr_init(r26738);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26718, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26720, w, MPFR_RNDN);
        mpfr_mul(r26721, r26719, r26720, MPFR_RNDN);
        mpfr_div(r26722, r26718, r26721, MPFR_RNDN);
        mpfr_set_d(r26723, d, MPFR_RNDN);
        mpfr_mul(r26724, r26723, r26723, MPFR_RNDN);
        mpfr_mul(r26725, r26718, r26724, MPFR_RNDN);
        mpfr_set_d(r26726, h, MPFR_RNDN);
        mpfr_mul(r26727, r26720, r26726, MPFR_RNDN);
        mpfr_set_d(r26728, D, MPFR_RNDN);
        mpfr_mul(r26729, r26728, r26728, MPFR_RNDN);
        mpfr_mul(r26730, r26727, r26729, MPFR_RNDN);
        mpfr_div(r26731, r26725, r26730, MPFR_RNDN);
        mpfr_mul(r26732, r26731, r26731, MPFR_RNDN);
        mpfr_set_d(r26733, M, MPFR_RNDN);
        mpfr_mul(r26734, r26733, r26733, MPFR_RNDN);
        mpfr_sub(r26735, r26732, r26734, MPFR_RNDN);
        mpfr_sqrt(r26736, r26735, MPFR_RNDN);
        mpfr_add(r26737, r26731, r26736, MPFR_RNDN);
        mpfr_mul(r26738, r26722, r26737, MPFR_RNDN);
        return mpfr_get_d(r26738, MPFR_RNDN);
}

static mpfr_t r26739, r26740, r26741, r26742, r26743, r26744, r26745, r26746, r26747, r26748, r26749, r26750, r26751, r26752, r26753, r26754, r26755, r26756, r26757, r26758, r26759, r26760, r26761, r26762, r26763, r26764, r26765, r26766, r26767, r26768, r26769, r26770, r26771, r26772, r26773, r26774, r26775, r26776, r26777, r26778, r26779, r26780, r26781, r26782, r26783, r26784, r26785, r26786, r26787, r26788, r26789, r26790;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26739);
        mpfr_init_set_str(r26740, "2", 10, MPFR_RNDN);
        mpfr_init(r26741);
        mpfr_init(r26742);
        mpfr_init(r26743);
        mpfr_init(r26744);
        mpfr_init(r26745);
        mpfr_init(r26746);
        mpfr_init(r26747);
        mpfr_init(r26748);
        mpfr_init(r26749);
        mpfr_init(r26750);
        mpfr_init(r26751);
        mpfr_init(r26752);
        mpfr_init(r26753);
        mpfr_init(r26754);
        mpfr_init(r26755);
        mpfr_init(r26756);
        mpfr_init(r26757);
        mpfr_init(r26758);
        mpfr_init(r26759);
        mpfr_init(r26760);
        mpfr_init(r26761);
        mpfr_init(r26762);
        mpfr_init(r26763);
        mpfr_init(r26764);
        mpfr_init(r26765);
        mpfr_init(r26766);
        mpfr_init(r26767);
        mpfr_init(r26768);
        mpfr_init(r26769);
        mpfr_init(r26770);
        mpfr_init(r26771);
        mpfr_init_set_str(r26772, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r26773);
        mpfr_init(r26774);
        mpfr_init(r26775);
        mpfr_init(r26776);
        mpfr_init(r26777);
        mpfr_init(r26778);
        mpfr_init(r26779);
        mpfr_init(r26780);
        mpfr_init(r26781);
        mpfr_init_set_str(r26782, "3", 10, MPFR_RNDN);
        mpfr_init(r26783);
        mpfr_init(r26784);
        mpfr_init(r26785);
        mpfr_init_set_str(r26786, "4.5022642589937794e-229", 10, MPFR_RNDN);
        mpfr_init(r26787);
        mpfr_init_set_str(r26788, "0", 10, MPFR_RNDN);
        mpfr_init(r26789);
        mpfr_init(r26790);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26739, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26741, w, MPFR_RNDN);
        mpfr_mul(r26742, r26740, r26741, MPFR_RNDN);
        mpfr_div(r26743, r26739, r26742, MPFR_RNDN);
        mpfr_set_d(r26744, M, MPFR_RNDN);
        mpfr_abs(r26745, r26744, MPFR_RNDN);
        mpfr_div(r26746, r26739, r26741, MPFR_RNDN);
        mpfr_set_d(r26747, h, MPFR_RNDN);
        mpfr_div(r26748, r26746, r26747, MPFR_RNDN);
        mpfr_set_d(r26749, d, MPFR_RNDN);
        mpfr_set_d(r26750, D, MPFR_RNDN);
        mpfr_div(r26751, r26749, r26750, MPFR_RNDN);
        mpfr_mul(r26752, r26751, r26751, MPFR_RNDN);
        mpfr_mul(r26753, r26748, r26752, MPFR_RNDN);
        mpfr_add(r26754, r26753, r26744, MPFR_RNDN);
        mpfr_sub(r26755, r26753, r26744, MPFR_RNDN);
        mpfr_mul(r26756, r26754, r26755, MPFR_RNDN);
        mpfr_sqrt(r26757, r26756, MPFR_RNDN);
        mpfr_sub(r26758, r26753, r26757, MPFR_RNDN);
        mpfr_cbrt(r26759, r26758, MPFR_RNDN);
        mpfr_div(r26760, r26745, r26759, MPFR_RNDN);
        mpfr_div(r26761, r26760, r26759, MPFR_RNDN);
        mpfr_mul(r26762, r26752, r26748, MPFR_RNDN);
        mpfr_mul(r26763, r26762, r26762, MPFR_RNDN);
        mpfr_mul(r26764, r26744, r26744, MPFR_RNDN);
        mpfr_sub(r26765, r26763, r26764, MPFR_RNDN);
        mpfr_sqrt(r26766, r26765, MPFR_RNDN);
        mpfr_sub(r26767, r26762, r26766, MPFR_RNDN);
        mpfr_cbrt(r26768, r26767, MPFR_RNDN);
        mpfr_div(r26769, r26745, r26768, MPFR_RNDN);
        mpfr_mul(r26770, r26761, r26769, MPFR_RNDN);
        mpfr_mul(r26771, r26743, r26770, MPFR_RNDN);
        ;
        mpfr_set_si(r26773, mpfr_cmp(r26771, r26772) <= 0, MPFR_RNDN);
        mpfr_div(r26774, r26739, r26747, MPFR_RNDN);
        mpfr_div(r26775, r26774, r26741, MPFR_RNDN);
        mpfr_mul(r26776, r26775, r26752, MPFR_RNDN);
        mpfr_sub(r26777, r26776, r26744, MPFR_RNDN);
        mpfr_add(r26778, r26744, r26776, MPFR_RNDN);
        mpfr_mul(r26779, r26777, r26778, MPFR_RNDN);
        mpfr_sqrt(r26780, r26779, MPFR_RNDN);
        mpfr_add(r26781, r26780, r26776, MPFR_RNDN);
        ;
        mpfr_pow(r26783, r26781, r26782, MPFR_RNDN);
        mpfr_cbrt(r26784, r26783, MPFR_RNDN);
        mpfr_mul(r26785, r26743, r26784, MPFR_RNDN);
        ;
        mpfr_set_si(r26787, mpfr_cmp(r26771, r26786) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26787, MPFR_RNDN)) { mpfr_set(r26789, r26771, MPFR_RNDN); } else { mpfr_set(r26789, r26788, MPFR_RNDN); };
        if (mpfr_get_si(r26773, MPFR_RNDN)) { mpfr_set(r26790, r26785, MPFR_RNDN); } else { mpfr_set(r26790, r26789, MPFR_RNDN); };
        return mpfr_get_d(r26790, MPFR_RNDN);
}

static mpfr_t r26791, r26792, r26793, r26794, r26795, r26796, r26797, r26798, r26799, r26800, r26801, r26802, r26803, r26804, r26805, r26806, r26807, r26808, r26809, r26810, r26811, r26812, r26813, r26814, r26815, r26816, r26817, r26818, r26819, r26820, r26821, r26822, r26823, r26824, r26825, r26826, r26827, r26828, r26829, r26830, r26831, r26832, r26833, r26834, r26835, r26836, r26837, r26838, r26839, r26840, r26841, r26842;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26791);
        mpfr_init_set_str(r26792, "2", 10, MPFR_RNDN);
        mpfr_init(r26793);
        mpfr_init(r26794);
        mpfr_init(r26795);
        mpfr_init(r26796);
        mpfr_init(r26797);
        mpfr_init(r26798);
        mpfr_init(r26799);
        mpfr_init(r26800);
        mpfr_init(r26801);
        mpfr_init(r26802);
        mpfr_init(r26803);
        mpfr_init(r26804);
        mpfr_init(r26805);
        mpfr_init(r26806);
        mpfr_init(r26807);
        mpfr_init(r26808);
        mpfr_init(r26809);
        mpfr_init(r26810);
        mpfr_init(r26811);
        mpfr_init(r26812);
        mpfr_init(r26813);
        mpfr_init(r26814);
        mpfr_init(r26815);
        mpfr_init(r26816);
        mpfr_init(r26817);
        mpfr_init(r26818);
        mpfr_init(r26819);
        mpfr_init(r26820);
        mpfr_init(r26821);
        mpfr_init(r26822);
        mpfr_init(r26823);
        mpfr_init_set_str(r26824, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r26825);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
        mpfr_init(r26829);
        mpfr_init(r26830);
        mpfr_init(r26831);
        mpfr_init(r26832);
        mpfr_init(r26833);
        mpfr_init_set_str(r26834, "3", 10, MPFR_RNDN);
        mpfr_init(r26835);
        mpfr_init(r26836);
        mpfr_init(r26837);
        mpfr_init_set_str(r26838, "4.5022642589937794e-229", 10, MPFR_RNDN);
        mpfr_init(r26839);
        mpfr_init_set_str(r26840, "0", 10, MPFR_RNDN);
        mpfr_init(r26841);
        mpfr_init(r26842);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26791, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26793, w, MPFR_RNDN);
        mpfr_mul(r26794, r26792, r26793, MPFR_RNDN);
        mpfr_div(r26795, r26791, r26794, MPFR_RNDN);
        mpfr_set_d(r26796, M, MPFR_RNDN);
        mpfr_abs(r26797, r26796, MPFR_RNDN);
        mpfr_div(r26798, r26791, r26793, MPFR_RNDN);
        mpfr_set_d(r26799, h, MPFR_RNDN);
        mpfr_div(r26800, r26798, r26799, MPFR_RNDN);
        mpfr_set_d(r26801, d, MPFR_RNDN);
        mpfr_set_d(r26802, D, MPFR_RNDN);
        mpfr_div(r26803, r26801, r26802, MPFR_RNDN);
        mpfr_mul(r26804, r26803, r26803, MPFR_RNDN);
        mpfr_mul(r26805, r26800, r26804, MPFR_RNDN);
        mpfr_add(r26806, r26805, r26796, MPFR_RNDN);
        mpfr_sub(r26807, r26805, r26796, MPFR_RNDN);
        mpfr_mul(r26808, r26806, r26807, MPFR_RNDN);
        mpfr_sqrt(r26809, r26808, MPFR_RNDN);
        mpfr_sub(r26810, r26805, r26809, MPFR_RNDN);
        mpfr_cbrt(r26811, r26810, MPFR_RNDN);
        mpfr_div(r26812, r26797, r26811, MPFR_RNDN);
        mpfr_div(r26813, r26812, r26811, MPFR_RNDN);
        mpfr_mul(r26814, r26804, r26800, MPFR_RNDN);
        mpfr_mul(r26815, r26814, r26814, MPFR_RNDN);
        mpfr_mul(r26816, r26796, r26796, MPFR_RNDN);
        mpfr_sub(r26817, r26815, r26816, MPFR_RNDN);
        mpfr_sqrt(r26818, r26817, MPFR_RNDN);
        mpfr_sub(r26819, r26814, r26818, MPFR_RNDN);
        mpfr_cbrt(r26820, r26819, MPFR_RNDN);
        mpfr_div(r26821, r26797, r26820, MPFR_RNDN);
        mpfr_mul(r26822, r26813, r26821, MPFR_RNDN);
        mpfr_mul(r26823, r26795, r26822, MPFR_RNDN);
        ;
        mpfr_set_si(r26825, mpfr_cmp(r26823, r26824) <= 0, MPFR_RNDN);
        mpfr_div(r26826, r26791, r26799, MPFR_RNDN);
        mpfr_div(r26827, r26826, r26793, MPFR_RNDN);
        mpfr_mul(r26828, r26827, r26804, MPFR_RNDN);
        mpfr_sub(r26829, r26828, r26796, MPFR_RNDN);
        mpfr_add(r26830, r26796, r26828, MPFR_RNDN);
        mpfr_mul(r26831, r26829, r26830, MPFR_RNDN);
        mpfr_sqrt(r26832, r26831, MPFR_RNDN);
        mpfr_add(r26833, r26832, r26828, MPFR_RNDN);
        ;
        mpfr_pow(r26835, r26833, r26834, MPFR_RNDN);
        mpfr_cbrt(r26836, r26835, MPFR_RNDN);
        mpfr_mul(r26837, r26795, r26836, MPFR_RNDN);
        ;
        mpfr_set_si(r26839, mpfr_cmp(r26823, r26838) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26839, MPFR_RNDN)) { mpfr_set(r26841, r26823, MPFR_RNDN); } else { mpfr_set(r26841, r26840, MPFR_RNDN); };
        if (mpfr_get_si(r26825, MPFR_RNDN)) { mpfr_set(r26842, r26837, MPFR_RNDN); } else { mpfr_set(r26842, r26841, MPFR_RNDN); };
        return mpfr_get_d(r26842, MPFR_RNDN);
}

