#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 r31515 = c0;
        float r31516 = 2;
        float r31517 = w;
        float r31518 = r31516 * r31517;
        float r31519 = r31515 / r31518;
        float r31520 = d;
        float r31521 = r31520 * r31520;
        float r31522 = r31515 * r31521;
        float r31523 = h;
        float r31524 = r31517 * r31523;
        float r31525 = D;
        float r31526 = r31525 * r31525;
        float r31527 = r31524 * r31526;
        float r31528 = r31522 / r31527;
        float r31529 = r31528 * r31528;
        float r31530 = M;
        float r31531 = r31530 * r31530;
        float r31532 = r31529 - r31531;
        float r31533 = sqrt(r31532);
        float r31534 = r31528 + r31533;
        float r31535 = r31519 * r31534;
        return r31535;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r31536 = c0;
        double r31537 = 2;
        double r31538 = w;
        double r31539 = r31537 * r31538;
        double r31540 = r31536 / r31539;
        double r31541 = d;
        double r31542 = r31541 * r31541;
        double r31543 = r31536 * r31542;
        double r31544 = h;
        double r31545 = r31538 * r31544;
        double r31546 = D;
        double r31547 = r31546 * r31546;
        double r31548 = r31545 * r31547;
        double r31549 = r31543 / r31548;
        double r31550 = r31549 * r31549;
        double r31551 = M;
        double r31552 = r31551 * r31551;
        double r31553 = r31550 - r31552;
        double r31554 = sqrt(r31553);
        double r31555 = r31549 + r31554;
        double r31556 = r31540 * r31555;
        return r31556;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r31557 = c0;
        float r31558 = -1.8786594606845356e+35;
        bool r31559 = r31557 <= r31558;
        float r31560 = 0;
        float r31561 = -3.560508914672266e-87;
        bool r31562 = r31557 <= r31561;
        float r31563 = 2;
        float r31564 = w;
        float r31565 = r31563 * r31564;
        float r31566 = r31557 / r31565;
        float r31567 = M;
        float r31568 = r31567 * r31567;
        float r31569 = d;
        float r31570 = D;
        float r31571 = r31569 / r31570;
        float r31572 = r31571 * r31571;
        float r31573 = h;
        float r31574 = r31573 * r31564;
        float r31575 = r31574 / r31557;
        float r31576 = r31572 / r31575;
        float r31577 = r31576 - r31567;
        float r31578 = r31567 + r31576;
        float r31579 = r31577 * r31578;
        float r31580 = sqrt(r31579);
        float r31581 = r31576 - r31580;
        float r31582 = r31568 / r31581;
        float r31583 = r31566 * r31582;
        float r31584 = r31562 ? r31583 : r31560;
        float r31585 = r31559 ? r31560 : r31584;
        return r31585;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r31586 = c0;
        double r31587 = -1.8786594606845356e+35;
        bool r31588 = r31586 <= r31587;
        double r31589 = 0;
        double r31590 = -3.560508914672266e-87;
        bool r31591 = r31586 <= r31590;
        double r31592 = 2;
        double r31593 = w;
        double r31594 = r31592 * r31593;
        double r31595 = r31586 / r31594;
        double r31596 = M;
        double r31597 = r31596 * r31596;
        double r31598 = d;
        double r31599 = D;
        double r31600 = r31598 / r31599;
        double r31601 = r31600 * r31600;
        double r31602 = h;
        double r31603 = r31602 * r31593;
        double r31604 = r31603 / r31586;
        double r31605 = r31601 / r31604;
        double r31606 = r31605 - r31596;
        double r31607 = r31596 + r31605;
        double r31608 = r31606 * r31607;
        double r31609 = sqrt(r31608);
        double r31610 = r31605 - r31609;
        double r31611 = r31597 / r31610;
        double r31612 = r31595 * r31611;
        double r31613 = r31591 ? r31612 : r31589;
        double r31614 = r31588 ? r31589 : r31613;
        return r31614;
}

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 r31615, r31616, r31617, r31618, r31619, r31620, r31621, r31622, r31623, r31624, r31625, r31626, r31627, r31628, r31629, r31630, r31631, r31632, r31633, r31634, r31635;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(5008);
        mpfr_init(r31615);
        mpfr_init_set_str(r31616, "2", 10, MPFR_RNDN);
        mpfr_init(r31617);
        mpfr_init(r31618);
        mpfr_init(r31619);
        mpfr_init(r31620);
        mpfr_init(r31621);
        mpfr_init(r31622);
        mpfr_init(r31623);
        mpfr_init(r31624);
        mpfr_init(r31625);
        mpfr_init(r31626);
        mpfr_init(r31627);
        mpfr_init(r31628);
        mpfr_init(r31629);
        mpfr_init(r31630);
        mpfr_init(r31631);
        mpfr_init(r31632);
        mpfr_init(r31633);
        mpfr_init(r31634);
        mpfr_init(r31635);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31615, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r31617, w, MPFR_RNDN);
        mpfr_mul(r31618, r31616, r31617, MPFR_RNDN);
        mpfr_div(r31619, r31615, r31618, MPFR_RNDN);
        mpfr_set_d(r31620, d, MPFR_RNDN);
        mpfr_mul(r31621, r31620, r31620, MPFR_RNDN);
        mpfr_mul(r31622, r31615, r31621, MPFR_RNDN);
        mpfr_set_d(r31623, h, MPFR_RNDN);
        mpfr_mul(r31624, r31617, r31623, MPFR_RNDN);
        mpfr_set_d(r31625, D, MPFR_RNDN);
        mpfr_mul(r31626, r31625, r31625, MPFR_RNDN);
        mpfr_mul(r31627, r31624, r31626, MPFR_RNDN);
        mpfr_div(r31628, r31622, r31627, MPFR_RNDN);
        mpfr_mul(r31629, r31628, r31628, MPFR_RNDN);
        mpfr_set_d(r31630, M, MPFR_RNDN);
        mpfr_mul(r31631, r31630, r31630, MPFR_RNDN);
        mpfr_sub(r31632, r31629, r31631, MPFR_RNDN);
        mpfr_sqrt(r31633, r31632, MPFR_RNDN);
        mpfr_add(r31634, r31628, r31633, MPFR_RNDN);
        mpfr_mul(r31635, r31619, r31634, MPFR_RNDN);
        return mpfr_get_d(r31635, MPFR_RNDN);
}

static mpfr_t r31636, r31637, r31638, r31639, r31640, r31641, r31642, r31643, r31644, r31645, r31646, r31647, r31648, r31649, r31650, r31651, r31652, r31653, r31654, r31655, r31656, r31657, r31658, r31659, r31660, r31661, r31662, r31663, r31664;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(5008);
        mpfr_init(r31636);
        mpfr_init_set_str(r31637, "-1.8786594606845356e+35", 10, MPFR_RNDN);
        mpfr_init(r31638);
        mpfr_init_set_str(r31639, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r31640, "-3.560508914672266e-87", 10, MPFR_RNDN);
        mpfr_init(r31641);
        mpfr_init_set_str(r31642, "2", 10, MPFR_RNDN);
        mpfr_init(r31643);
        mpfr_init(r31644);
        mpfr_init(r31645);
        mpfr_init(r31646);
        mpfr_init(r31647);
        mpfr_init(r31648);
        mpfr_init(r31649);
        mpfr_init(r31650);
        mpfr_init(r31651);
        mpfr_init(r31652);
        mpfr_init(r31653);
        mpfr_init(r31654);
        mpfr_init(r31655);
        mpfr_init(r31656);
        mpfr_init(r31657);
        mpfr_init(r31658);
        mpfr_init(r31659);
        mpfr_init(r31660);
        mpfr_init(r31661);
        mpfr_init(r31662);
        mpfr_init(r31663);
        mpfr_init(r31664);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31636, c0, MPFR_RNDN);
        ;
        mpfr_set_si(r31638, mpfr_cmp(r31636, r31637) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r31641, mpfr_cmp(r31636, r31640) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r31643, w, MPFR_RNDN);
        mpfr_mul(r31644, r31642, r31643, MPFR_RNDN);
        mpfr_div(r31645, r31636, r31644, MPFR_RNDN);
        mpfr_set_d(r31646, M, MPFR_RNDN);
        mpfr_mul(r31647, r31646, r31646, MPFR_RNDN);
        mpfr_set_d(r31648, d, MPFR_RNDN);
        mpfr_set_d(r31649, D, MPFR_RNDN);
        mpfr_div(r31650, r31648, r31649, MPFR_RNDN);
        mpfr_mul(r31651, r31650, r31650, MPFR_RNDN);
        mpfr_set_d(r31652, h, MPFR_RNDN);
        mpfr_mul(r31653, r31652, r31643, MPFR_RNDN);
        mpfr_div(r31654, r31653, r31636, MPFR_RNDN);
        mpfr_div(r31655, r31651, r31654, MPFR_RNDN);
        mpfr_sub(r31656, r31655, r31646, MPFR_RNDN);
        mpfr_add(r31657, r31646, r31655, MPFR_RNDN);
        mpfr_mul(r31658, r31656, r31657, MPFR_RNDN);
        mpfr_sqrt(r31659, r31658, MPFR_RNDN);
        mpfr_sub(r31660, r31655, r31659, MPFR_RNDN);
        mpfr_div(r31661, r31647, r31660, MPFR_RNDN);
        mpfr_mul(r31662, r31645, r31661, MPFR_RNDN);
        if (mpfr_get_si(r31641, MPFR_RNDN)) { mpfr_set(r31663, r31662, MPFR_RNDN); } else { mpfr_set(r31663, r31639, MPFR_RNDN); };
        if (mpfr_get_si(r31638, MPFR_RNDN)) { mpfr_set(r31664, r31639, MPFR_RNDN); } else { mpfr_set(r31664, r31663, MPFR_RNDN); };
        return mpfr_get_d(r31664, MPFR_RNDN);
}

static mpfr_t r31665, r31666, r31667, r31668, r31669, r31670, r31671, r31672, r31673, r31674, r31675, r31676, r31677, r31678, r31679, r31680, r31681, r31682, r31683, r31684, r31685, r31686, r31687, r31688, r31689, r31690, r31691, r31692, r31693;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(5008);
        mpfr_init(r31665);
        mpfr_init_set_str(r31666, "-1.8786594606845356e+35", 10, MPFR_RNDN);
        mpfr_init(r31667);
        mpfr_init_set_str(r31668, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r31669, "-3.560508914672266e-87", 10, MPFR_RNDN);
        mpfr_init(r31670);
        mpfr_init_set_str(r31671, "2", 10, MPFR_RNDN);
        mpfr_init(r31672);
        mpfr_init(r31673);
        mpfr_init(r31674);
        mpfr_init(r31675);
        mpfr_init(r31676);
        mpfr_init(r31677);
        mpfr_init(r31678);
        mpfr_init(r31679);
        mpfr_init(r31680);
        mpfr_init(r31681);
        mpfr_init(r31682);
        mpfr_init(r31683);
        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);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r31665, c0, MPFR_RNDN);
        ;
        mpfr_set_si(r31667, mpfr_cmp(r31665, r31666) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r31670, mpfr_cmp(r31665, r31669) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r31672, w, MPFR_RNDN);
        mpfr_mul(r31673, r31671, r31672, MPFR_RNDN);
        mpfr_div(r31674, r31665, r31673, MPFR_RNDN);
        mpfr_set_d(r31675, M, MPFR_RNDN);
        mpfr_mul(r31676, r31675, r31675, MPFR_RNDN);
        mpfr_set_d(r31677, d, MPFR_RNDN);
        mpfr_set_d(r31678, D, MPFR_RNDN);
        mpfr_div(r31679, r31677, r31678, MPFR_RNDN);
        mpfr_mul(r31680, r31679, r31679, MPFR_RNDN);
        mpfr_set_d(r31681, h, MPFR_RNDN);
        mpfr_mul(r31682, r31681, r31672, MPFR_RNDN);
        mpfr_div(r31683, r31682, r31665, MPFR_RNDN);
        mpfr_div(r31684, r31680, r31683, MPFR_RNDN);
        mpfr_sub(r31685, r31684, r31675, MPFR_RNDN);
        mpfr_add(r31686, r31675, r31684, MPFR_RNDN);
        mpfr_mul(r31687, r31685, r31686, MPFR_RNDN);
        mpfr_sqrt(r31688, r31687, MPFR_RNDN);
        mpfr_sub(r31689, r31684, r31688, MPFR_RNDN);
        mpfr_div(r31690, r31676, r31689, MPFR_RNDN);
        mpfr_mul(r31691, r31674, r31690, MPFR_RNDN);
        if (mpfr_get_si(r31670, MPFR_RNDN)) { mpfr_set(r31692, r31691, MPFR_RNDN); } else { mpfr_set(r31692, r31668, MPFR_RNDN); };
        if (mpfr_get_si(r31667, MPFR_RNDN)) { mpfr_set(r31693, r31668, MPFR_RNDN); } else { mpfr_set(r31693, r31692, MPFR_RNDN); };
        return mpfr_get_d(r31693, MPFR_RNDN);
}

