#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 r26555 = d;
        float r26556 = h;
        float r26557 = r26555 / r26556;
        float r26558 = 1;
        float r26559 = 2;
        float r26560 = r26558 / r26559;
        float r26561 = pow(r26557, r26560);
        float r26562 = l;
        float r26563 = r26555 / r26562;
        float r26564 = pow(r26563, r26560);
        float r26565 = r26561 * r26564;
        float r26566 = M;
        float r26567 = D;
        float r26568 = r26566 * r26567;
        float r26569 = r26559 * r26555;
        float r26570 = r26568 / r26569;
        float r26571 = pow(r26570, r26559);
        float r26572 = r26560 * r26571;
        float r26573 = r26556 / r26562;
        float r26574 = r26572 * r26573;
        float r26575 = r26558 - r26574;
        float r26576 = r26565 * r26575;
        return r26576;
}

double f_id(double d, double h, double l, double M, double D) {
        double r26577 = d;
        double r26578 = h;
        double r26579 = r26577 / r26578;
        double r26580 = 1;
        double r26581 = 2;
        double r26582 = r26580 / r26581;
        double r26583 = pow(r26579, r26582);
        double r26584 = l;
        double r26585 = r26577 / r26584;
        double r26586 = pow(r26585, r26582);
        double r26587 = r26583 * r26586;
        double r26588 = M;
        double r26589 = D;
        double r26590 = r26588 * r26589;
        double r26591 = r26581 * r26577;
        double r26592 = r26590 / r26591;
        double r26593 = pow(r26592, r26581);
        double r26594 = r26582 * r26593;
        double r26595 = r26578 / r26584;
        double r26596 = r26594 * r26595;
        double r26597 = r26580 - r26596;
        double r26598 = r26587 * r26597;
        return r26598;
}


double f_of(float d, float h, float l, float M, float D) {
        float r26599 = l;
        float r26600 = 1.85432241176355e-310;
        bool r26601 = r26599 <= r26600;
        float r26602 = 1;
        float r26603 = h;
        float r26604 = M;
        float r26605 = D;
        float r26606 = r26604 * r26605;
        float r26607 = d;
        float r26608 = 2;
        float r26609 = r26607 * r26608;
        float r26610 = r26606 / r26609;
        float r26611 = pow(r26610, r26608);
        float r26612 = r26603 * r26611;
        float r26613 = r26608 * r26599;
        float r26614 = r26612 / r26613;
        float r26615 = r26602 - r26614;
        float r26616 = 1/2;
        float r26617 = -1;
        float r26618 = r26617 / r26599;
        float r26619 = log(r26618);
        float r26620 = r26617 / r26607;
        float r26621 = log(r26620);
        float r26622 = r26619 - r26621;
        float r26623 = r26616 * r26622;
        float r26624 = exp(r26623);
        float r26625 = r26607 / r26603;
        float r26626 = r26602 / r26608;
        float r26627 = pow(r26625, r26626);
        float r26628 = r26624 * r26627;
        float r26629 = r26615 * r26628;
        float r26630 = 3.532898982346642e-76;
        bool r26631 = r26599 <= r26630;
        float r26632 = r26602 / r26599;
        float r26633 = pow(r26632, r26626);
        float r26634 = pow(r26607, r26626);
        float r26635 = r26633 * r26634;
        float r26636 = r26627 * r26635;
        float r26637 = r26636 * r26615;
        float r26638 = r26611 * r26626;
        float r26639 = r26603 / r26599;
        float r26640 = r26638 * r26639;
        float r26641 = r26602 - r26640;
        float r26642 = r26607 / r26599;
        float r26643 = pow(r26642, r26626);
        float r26644 = r26602 / r26603;
        float r26645 = pow(r26644, r26626);
        float r26646 = r26634 * r26645;
        float r26647 = r26643 * r26646;
        float r26648 = r26641 * r26647;
        float r26649 = r26631 ? r26637 : r26648;
        float r26650 = r26601 ? r26629 : r26649;
        return r26650;
}

double f_od(double d, double h, double l, double M, double D) {
        double r26651 = l;
        double r26652 = 1.85432241176355e-310;
        bool r26653 = r26651 <= r26652;
        double r26654 = 1;
        double r26655 = h;
        double r26656 = M;
        double r26657 = D;
        double r26658 = r26656 * r26657;
        double r26659 = d;
        double r26660 = 2;
        double r26661 = r26659 * r26660;
        double r26662 = r26658 / r26661;
        double r26663 = pow(r26662, r26660);
        double r26664 = r26655 * r26663;
        double r26665 = r26660 * r26651;
        double r26666 = r26664 / r26665;
        double r26667 = r26654 - r26666;
        double r26668 = 1/2;
        double r26669 = -1;
        double r26670 = r26669 / r26651;
        double r26671 = log(r26670);
        double r26672 = r26669 / r26659;
        double r26673 = log(r26672);
        double r26674 = r26671 - r26673;
        double r26675 = r26668 * r26674;
        double r26676 = exp(r26675);
        double r26677 = r26659 / r26655;
        double r26678 = r26654 / r26660;
        double r26679 = pow(r26677, r26678);
        double r26680 = r26676 * r26679;
        double r26681 = r26667 * r26680;
        double r26682 = 3.532898982346642e-76;
        bool r26683 = r26651 <= r26682;
        double r26684 = r26654 / r26651;
        double r26685 = pow(r26684, r26678);
        double r26686 = pow(r26659, r26678);
        double r26687 = r26685 * r26686;
        double r26688 = r26679 * r26687;
        double r26689 = r26688 * r26667;
        double r26690 = r26663 * r26678;
        double r26691 = r26655 / r26651;
        double r26692 = r26690 * r26691;
        double r26693 = r26654 - r26692;
        double r26694 = r26659 / r26651;
        double r26695 = pow(r26694, r26678);
        double r26696 = r26654 / r26655;
        double r26697 = pow(r26696, r26678);
        double r26698 = r26686 * r26697;
        double r26699 = r26695 * r26698;
        double r26700 = r26693 * r26699;
        double r26701 = r26683 ? r26689 : r26700;
        double r26702 = r26653 ? r26681 : r26701;
        return r26702;
}

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 r26703, r26704, r26705, r26706, r26707, r26708, r26709, r26710, r26711, r26712, r26713, r26714, r26715, r26716, r26717, r26718, r26719, r26720, r26721, r26722, r26723, r26724;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26703);
        mpfr_init(r26704);
        mpfr_init(r26705);
        mpfr_init_set_str(r26706, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26707, "2", 10, MPFR_RNDN);
        mpfr_init(r26708);
        mpfr_init(r26709);
        mpfr_init(r26710);
        mpfr_init(r26711);
        mpfr_init(r26712);
        mpfr_init(r26713);
        mpfr_init(r26714);
        mpfr_init(r26715);
        mpfr_init(r26716);
        mpfr_init(r26717);
        mpfr_init(r26718);
        mpfr_init(r26719);
        mpfr_init(r26720);
        mpfr_init(r26721);
        mpfr_init(r26722);
        mpfr_init(r26723);
        mpfr_init(r26724);
}

double f_im(double d, double h, double l, double M, double D) {
        mpfr_set_d(r26703, d, MPFR_RNDN);
        mpfr_set_d(r26704, h, MPFR_RNDN);
        mpfr_div(r26705, r26703, r26704, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26708, r26706, r26707, MPFR_RNDN);
        mpfr_pow(r26709, r26705, r26708, MPFR_RNDN);
        mpfr_set_d(r26710, l, MPFR_RNDN);
        mpfr_div(r26711, r26703, r26710, MPFR_RNDN);
        mpfr_pow(r26712, r26711, r26708, MPFR_RNDN);
        mpfr_mul(r26713, r26709, r26712, MPFR_RNDN);
        mpfr_set_d(r26714, M, MPFR_RNDN);
        mpfr_set_d(r26715, D, MPFR_RNDN);
        mpfr_mul(r26716, r26714, r26715, MPFR_RNDN);
        mpfr_mul(r26717, r26707, r26703, MPFR_RNDN);
        mpfr_div(r26718, r26716, r26717, MPFR_RNDN);
        mpfr_pow(r26719, r26718, r26707, MPFR_RNDN);
        mpfr_mul(r26720, r26708, r26719, MPFR_RNDN);
        mpfr_div(r26721, r26704, r26710, MPFR_RNDN);
        mpfr_mul(r26722, r26720, r26721, MPFR_RNDN);
        mpfr_sub(r26723, r26706, r26722, MPFR_RNDN);
        mpfr_mul(r26724, r26713, r26723, MPFR_RNDN);
        return mpfr_get_d(r26724, MPFR_RNDN);
}

static mpfr_t r26725, r26726, r26727, r26728, r26729, r26730, r26731, r26732, r26733, r26734, r26735, r26736, r26737, r26738, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26725);
        mpfr_init_set_str(r26726, "1.85432241176355e-310", 10, MPFR_RNDN);
        mpfr_init(r26727);
        mpfr_init_set_str(r26728, "1", 10, MPFR_RNDN);
        mpfr_init(r26729);
        mpfr_init(r26730);
        mpfr_init(r26731);
        mpfr_init(r26732);
        mpfr_init(r26733);
        mpfr_init_set_str(r26734, "2", 10, MPFR_RNDN);
        mpfr_init(r26735);
        mpfr_init(r26736);
        mpfr_init(r26737);
        mpfr_init(r26738);
        mpfr_init(r26739);
        mpfr_init(r26740);
        mpfr_init(r26741);
        mpfr_init_set_str(r26742, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26743, "-1", 10, MPFR_RNDN);
        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_set_str(r26756, "3.532898982346642e-76", 10, MPFR_RNDN);
        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(r26772);
        mpfr_init(r26773);
        mpfr_init(r26774);
        mpfr_init(r26775);
        mpfr_init(r26776);
}

double f_fm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r26725, l, MPFR_RNDN);
        ;
        mpfr_set_si(r26727, mpfr_cmp(r26725, r26726) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26729, h, MPFR_RNDN);
        mpfr_set_d(r26730, M, MPFR_RNDN);
        mpfr_set_d(r26731, D, MPFR_RNDN);
        mpfr_mul(r26732, r26730, r26731, MPFR_RNDN);
        mpfr_set_d(r26733, d, MPFR_RNDN);
        ;
        mpfr_mul(r26735, r26733, r26734, MPFR_RNDN);
        mpfr_div(r26736, r26732, r26735, MPFR_RNDN);
        mpfr_pow(r26737, r26736, r26734, MPFR_RNDN);
        mpfr_mul(r26738, r26729, r26737, MPFR_RNDN);
        mpfr_mul(r26739, r26734, r26725, MPFR_RNDN);
        mpfr_div(r26740, r26738, r26739, MPFR_RNDN);
        mpfr_sub(r26741, r26728, r26740, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26744, r26743, r26725, MPFR_RNDN);
        mpfr_log(r26745, r26744, MPFR_RNDN);
        mpfr_div(r26746, r26743, r26733, MPFR_RNDN);
        mpfr_log(r26747, r26746, MPFR_RNDN);
        mpfr_sub(r26748, r26745, r26747, MPFR_RNDN);
        mpfr_mul(r26749, r26742, r26748, MPFR_RNDN);
        mpfr_exp(r26750, r26749, MPFR_RNDN);
        mpfr_div(r26751, r26733, r26729, MPFR_RNDN);
        mpfr_div(r26752, r26728, r26734, MPFR_RNDN);
        mpfr_pow(r26753, r26751, r26752, MPFR_RNDN);
        mpfr_mul(r26754, r26750, r26753, MPFR_RNDN);
        mpfr_mul(r26755, r26741, r26754, MPFR_RNDN);
        ;
        mpfr_set_si(r26757, mpfr_cmp(r26725, r26756) <= 0, MPFR_RNDN);
        mpfr_div(r26758, r26728, r26725, MPFR_RNDN);
        mpfr_pow(r26759, r26758, r26752, MPFR_RNDN);
        mpfr_pow(r26760, r26733, r26752, MPFR_RNDN);
        mpfr_mul(r26761, r26759, r26760, MPFR_RNDN);
        mpfr_mul(r26762, r26753, r26761, MPFR_RNDN);
        mpfr_mul(r26763, r26762, r26741, MPFR_RNDN);
        mpfr_mul(r26764, r26737, r26752, MPFR_RNDN);
        mpfr_div(r26765, r26729, r26725, MPFR_RNDN);
        mpfr_mul(r26766, r26764, r26765, MPFR_RNDN);
        mpfr_sub(r26767, r26728, r26766, MPFR_RNDN);
        mpfr_div(r26768, r26733, r26725, MPFR_RNDN);
        mpfr_pow(r26769, r26768, r26752, MPFR_RNDN);
        mpfr_div(r26770, r26728, r26729, MPFR_RNDN);
        mpfr_pow(r26771, r26770, r26752, MPFR_RNDN);
        mpfr_mul(r26772, r26760, r26771, MPFR_RNDN);
        mpfr_mul(r26773, r26769, r26772, MPFR_RNDN);
        mpfr_mul(r26774, r26767, r26773, MPFR_RNDN);
        if (mpfr_get_si(r26757, MPFR_RNDN)) { mpfr_set(r26775, r26763, MPFR_RNDN); } else { mpfr_set(r26775, r26774, MPFR_RNDN); };
        if (mpfr_get_si(r26727, MPFR_RNDN)) { mpfr_set(r26776, r26755, MPFR_RNDN); } else { mpfr_set(r26776, r26775, MPFR_RNDN); };
        return mpfr_get_d(r26776, MPFR_RNDN);
}

static mpfr_t r26777, r26778, r26779, r26780, r26781, r26782, r26783, r26784, r26785, r26786, r26787, r26788, r26789, r26790, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26777);
        mpfr_init_set_str(r26778, "1.85432241176355e-310", 10, MPFR_RNDN);
        mpfr_init(r26779);
        mpfr_init_set_str(r26780, "1", 10, MPFR_RNDN);
        mpfr_init(r26781);
        mpfr_init(r26782);
        mpfr_init(r26783);
        mpfr_init(r26784);
        mpfr_init(r26785);
        mpfr_init_set_str(r26786, "2", 10, MPFR_RNDN);
        mpfr_init(r26787);
        mpfr_init(r26788);
        mpfr_init(r26789);
        mpfr_init(r26790);
        mpfr_init(r26791);
        mpfr_init(r26792);
        mpfr_init(r26793);
        mpfr_init_set_str(r26794, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26795, "-1", 10, MPFR_RNDN);
        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_set_str(r26808, "3.532898982346642e-76", 10, MPFR_RNDN);
        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(r26824);
        mpfr_init(r26825);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
}

double f_dm(double d, double h, double l, double M, double D) {
        mpfr_set_d(r26777, l, MPFR_RNDN);
        ;
        mpfr_set_si(r26779, mpfr_cmp(r26777, r26778) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26781, h, MPFR_RNDN);
        mpfr_set_d(r26782, M, MPFR_RNDN);
        mpfr_set_d(r26783, D, MPFR_RNDN);
        mpfr_mul(r26784, r26782, r26783, MPFR_RNDN);
        mpfr_set_d(r26785, d, MPFR_RNDN);
        ;
        mpfr_mul(r26787, r26785, r26786, MPFR_RNDN);
        mpfr_div(r26788, r26784, r26787, MPFR_RNDN);
        mpfr_pow(r26789, r26788, r26786, MPFR_RNDN);
        mpfr_mul(r26790, r26781, r26789, MPFR_RNDN);
        mpfr_mul(r26791, r26786, r26777, MPFR_RNDN);
        mpfr_div(r26792, r26790, r26791, MPFR_RNDN);
        mpfr_sub(r26793, r26780, r26792, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26796, r26795, r26777, MPFR_RNDN);
        mpfr_log(r26797, r26796, MPFR_RNDN);
        mpfr_div(r26798, r26795, r26785, MPFR_RNDN);
        mpfr_log(r26799, r26798, MPFR_RNDN);
        mpfr_sub(r26800, r26797, r26799, MPFR_RNDN);
        mpfr_mul(r26801, r26794, r26800, MPFR_RNDN);
        mpfr_exp(r26802, r26801, MPFR_RNDN);
        mpfr_div(r26803, r26785, r26781, MPFR_RNDN);
        mpfr_div(r26804, r26780, r26786, MPFR_RNDN);
        mpfr_pow(r26805, r26803, r26804, MPFR_RNDN);
        mpfr_mul(r26806, r26802, r26805, MPFR_RNDN);
        mpfr_mul(r26807, r26793, r26806, MPFR_RNDN);
        ;
        mpfr_set_si(r26809, mpfr_cmp(r26777, r26808) <= 0, MPFR_RNDN);
        mpfr_div(r26810, r26780, r26777, MPFR_RNDN);
        mpfr_pow(r26811, r26810, r26804, MPFR_RNDN);
        mpfr_pow(r26812, r26785, r26804, MPFR_RNDN);
        mpfr_mul(r26813, r26811, r26812, MPFR_RNDN);
        mpfr_mul(r26814, r26805, r26813, MPFR_RNDN);
        mpfr_mul(r26815, r26814, r26793, MPFR_RNDN);
        mpfr_mul(r26816, r26789, r26804, MPFR_RNDN);
        mpfr_div(r26817, r26781, r26777, MPFR_RNDN);
        mpfr_mul(r26818, r26816, r26817, MPFR_RNDN);
        mpfr_sub(r26819, r26780, r26818, MPFR_RNDN);
        mpfr_div(r26820, r26785, r26777, MPFR_RNDN);
        mpfr_pow(r26821, r26820, r26804, MPFR_RNDN);
        mpfr_div(r26822, r26780, r26781, MPFR_RNDN);
        mpfr_pow(r26823, r26822, r26804, MPFR_RNDN);
        mpfr_mul(r26824, r26812, r26823, MPFR_RNDN);
        mpfr_mul(r26825, r26821, r26824, MPFR_RNDN);
        mpfr_mul(r26826, r26819, r26825, MPFR_RNDN);
        if (mpfr_get_si(r26809, MPFR_RNDN)) { mpfr_set(r26827, r26815, MPFR_RNDN); } else { mpfr_set(r26827, r26826, MPFR_RNDN); };
        if (mpfr_get_si(r26779, MPFR_RNDN)) { mpfr_set(r26828, r26807, MPFR_RNDN); } else { mpfr_set(r26828, r26827, MPFR_RNDN); };
        return mpfr_get_d(r26828, MPFR_RNDN);
}

