#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 r29664 = c0;
        float r29665 = 2.0f;
        float r29666 = w;
        float r29667 = r29665 * r29666;
        float r29668 = r29664 / r29667;
        float r29669 = d;
        float r29670 = r29669 * r29669;
        float r29671 = r29664 * r29670;
        float r29672 = h;
        float r29673 = r29666 * r29672;
        float r29674 = D;
        float r29675 = r29674 * r29674;
        float r29676 = r29673 * r29675;
        float r29677 = r29671 / r29676;
        float r29678 = r29677 * r29677;
        float r29679 = M;
        float r29680 = r29679 * r29679;
        float r29681 = r29678 - r29680;
        float r29682 = sqrt(r29681);
        float r29683 = r29677 + r29682;
        float r29684 = r29668 * r29683;
        return r29684;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r29685 = c0;
        double r29686 = 2.0;
        double r29687 = w;
        double r29688 = r29686 * r29687;
        double r29689 = r29685 / r29688;
        double r29690 = d;
        double r29691 = r29690 * r29690;
        double r29692 = r29685 * r29691;
        double r29693 = h;
        double r29694 = r29687 * r29693;
        double r29695 = D;
        double r29696 = r29695 * r29695;
        double r29697 = r29694 * r29696;
        double r29698 = r29692 / r29697;
        double r29699 = r29698 * r29698;
        double r29700 = M;
        double r29701 = r29700 * r29700;
        double r29702 = r29699 - r29701;
        double r29703 = sqrt(r29702);
        double r29704 = r29698 + r29703;
        double r29705 = r29689 * r29704;
        return r29705;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r29706 = c0;
        float r29707 = d;
        float r29708 = r29707 * r29707;
        float r29709 = r29706 * r29708;
        float r29710 = w;
        float r29711 = h;
        float r29712 = r29710 * r29711;
        float r29713 = D;
        float r29714 = r29713 * r29713;
        float r29715 = r29712 * r29714;
        float r29716 = r29709 / r29715;
        float r29717 = r29716 * r29716;
        float r29718 = M;
        float r29719 = r29718 * r29718;
        float r29720 = r29717 - r29719;
        float r29721 = sqrt(r29720);
        float r29722 = r29716 + r29721;
        float r29723 = 2.8418738741257153e-186f;
        bool r29724 = r29722 <= r29723;
        float r29725 = 0.0f;
        float r29726 = r29724 ? r29725 : r29725;
        return r29726;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r29727 = c0;
        double r29728 = d;
        double r29729 = r29728 * r29728;
        double r29730 = r29727 * r29729;
        double r29731 = w;
        double r29732 = h;
        double r29733 = r29731 * r29732;
        double r29734 = D;
        double r29735 = r29734 * r29734;
        double r29736 = r29733 * r29735;
        double r29737 = r29730 / r29736;
        double r29738 = r29737 * r29737;
        double r29739 = M;
        double r29740 = r29739 * r29739;
        double r29741 = r29738 - r29740;
        double r29742 = sqrt(r29741);
        double r29743 = r29737 + r29742;
        double r29744 = 2.8418738741257153e-186;
        bool r29745 = r29743 <= r29744;
        double r29746 = 0.0;
        double r29747 = r29745 ? r29746 : r29746;
        return r29747;
}

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 r29748, r29749, r29750, r29751, r29752, r29753, r29754, r29755, r29756, r29757, r29758, r29759, r29760, r29761, r29762, r29763, r29764, r29765, r29766, r29767, r29768;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r29748);
        mpfr_init_set_str(r29749, "2", 10, MPFR_RNDN);
        mpfr_init(r29750);
        mpfr_init(r29751);
        mpfr_init(r29752);
        mpfr_init(r29753);
        mpfr_init(r29754);
        mpfr_init(r29755);
        mpfr_init(r29756);
        mpfr_init(r29757);
        mpfr_init(r29758);
        mpfr_init(r29759);
        mpfr_init(r29760);
        mpfr_init(r29761);
        mpfr_init(r29762);
        mpfr_init(r29763);
        mpfr_init(r29764);
        mpfr_init(r29765);
        mpfr_init(r29766);
        mpfr_init(r29767);
        mpfr_init(r29768);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r29748, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r29750, w, MPFR_RNDN);
        mpfr_mul(r29751, r29749, r29750, MPFR_RNDN);
        mpfr_div(r29752, r29748, r29751, MPFR_RNDN);
        mpfr_set_d(r29753, d, MPFR_RNDN);
        mpfr_sqr(r29754, r29753, MPFR_RNDN);
        mpfr_mul(r29755, r29748, r29754, MPFR_RNDN);
        mpfr_set_d(r29756, h, MPFR_RNDN);
        mpfr_mul(r29757, r29750, r29756, MPFR_RNDN);
        mpfr_set_d(r29758, D, MPFR_RNDN);
        mpfr_sqr(r29759, r29758, MPFR_RNDN);
        mpfr_mul(r29760, r29757, r29759, MPFR_RNDN);
        mpfr_div(r29761, r29755, r29760, MPFR_RNDN);
        mpfr_sqr(r29762, r29761, MPFR_RNDN);
        mpfr_set_d(r29763, M, MPFR_RNDN);
        mpfr_sqr(r29764, r29763, MPFR_RNDN);
        mpfr_sub(r29765, r29762, r29764, MPFR_RNDN);
        mpfr_sqrt(r29766, r29765, MPFR_RNDN);
        mpfr_add(r29767, r29761, r29766, MPFR_RNDN);
        mpfr_mul(r29768, r29752, r29767, MPFR_RNDN);
        return mpfr_get_d(r29768, MPFR_RNDN);
}

static mpfr_t r29769, r29770, r29771, r29772, r29773, r29774, r29775, r29776, r29777, r29778, r29779, r29780, r29781, r29782, r29783, r29784, r29785, r29786, r29787, r29788, r29789;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29769);
        mpfr_init(r29770);
        mpfr_init(r29771);
        mpfr_init(r29772);
        mpfr_init(r29773);
        mpfr_init(r29774);
        mpfr_init(r29775);
        mpfr_init(r29776);
        mpfr_init(r29777);
        mpfr_init(r29778);
        mpfr_init(r29779);
        mpfr_init(r29780);
        mpfr_init(r29781);
        mpfr_init(r29782);
        mpfr_init(r29783);
        mpfr_init(r29784);
        mpfr_init(r29785);
        mpfr_init_set_str(r29786, "2.8418738741257153e-186", 10, MPFR_RNDN);
        mpfr_init(r29787);
        mpfr_init_set_str(r29788, "0", 10, MPFR_RNDN);
        mpfr_init(r29789);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r29769, c0, MPFR_RNDN);
        mpfr_set_d(r29770, d, MPFR_RNDN);
        mpfr_sqr(r29771, r29770, MPFR_RNDN);
        mpfr_mul(r29772, r29769, r29771, MPFR_RNDN);
        mpfr_set_d(r29773, w, MPFR_RNDN);
        mpfr_set_d(r29774, h, MPFR_RNDN);
        mpfr_mul(r29775, r29773, r29774, MPFR_RNDN);
        mpfr_set_d(r29776, D, MPFR_RNDN);
        mpfr_sqr(r29777, r29776, MPFR_RNDN);
        mpfr_mul(r29778, r29775, r29777, MPFR_RNDN);
        mpfr_div(r29779, r29772, r29778, MPFR_RNDN);
        mpfr_sqr(r29780, r29779, MPFR_RNDN);
        mpfr_set_d(r29781, M, MPFR_RNDN);
        mpfr_sqr(r29782, r29781, MPFR_RNDN);
        mpfr_sub(r29783, r29780, r29782, MPFR_RNDN);
        mpfr_sqrt(r29784, r29783, MPFR_RNDN);
        mpfr_add(r29785, r29779, r29784, MPFR_RNDN);
        ;
        mpfr_set_si(r29787, mpfr_cmp(r29785, r29786) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r29787, MPFR_RNDN)) { mpfr_set(r29789, r29788, MPFR_RNDN); } else { mpfr_set(r29789, r29788, MPFR_RNDN); };
        return mpfr_get_d(r29789, MPFR_RNDN);
}

static mpfr_t r29790, r29791, r29792, r29793, r29794, r29795, r29796, r29797, r29798, r29799, r29800, r29801, r29802, r29803, r29804, r29805, r29806, r29807, r29808, r29809, r29810;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29790);
        mpfr_init(r29791);
        mpfr_init(r29792);
        mpfr_init(r29793);
        mpfr_init(r29794);
        mpfr_init(r29795);
        mpfr_init(r29796);
        mpfr_init(r29797);
        mpfr_init(r29798);
        mpfr_init(r29799);
        mpfr_init(r29800);
        mpfr_init(r29801);
        mpfr_init(r29802);
        mpfr_init(r29803);
        mpfr_init(r29804);
        mpfr_init(r29805);
        mpfr_init(r29806);
        mpfr_init_set_str(r29807, "2.8418738741257153e-186", 10, MPFR_RNDN);
        mpfr_init(r29808);
        mpfr_init_set_str(r29809, "0", 10, MPFR_RNDN);
        mpfr_init(r29810);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r29790, c0, MPFR_RNDN);
        mpfr_set_d(r29791, d, MPFR_RNDN);
        mpfr_sqr(r29792, r29791, MPFR_RNDN);
        mpfr_mul(r29793, r29790, r29792, MPFR_RNDN);
        mpfr_set_d(r29794, w, MPFR_RNDN);
        mpfr_set_d(r29795, h, MPFR_RNDN);
        mpfr_mul(r29796, r29794, r29795, MPFR_RNDN);
        mpfr_set_d(r29797, D, MPFR_RNDN);
        mpfr_sqr(r29798, r29797, MPFR_RNDN);
        mpfr_mul(r29799, r29796, r29798, MPFR_RNDN);
        mpfr_div(r29800, r29793, r29799, MPFR_RNDN);
        mpfr_sqr(r29801, r29800, MPFR_RNDN);
        mpfr_set_d(r29802, M, MPFR_RNDN);
        mpfr_sqr(r29803, r29802, MPFR_RNDN);
        mpfr_sub(r29804, r29801, r29803, MPFR_RNDN);
        mpfr_sqrt(r29805, r29804, MPFR_RNDN);
        mpfr_add(r29806, r29800, r29805, MPFR_RNDN);
        ;
        mpfr_set_si(r29808, mpfr_cmp(r29806, r29807) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r29808, MPFR_RNDN)) { mpfr_set(r29810, r29809, MPFR_RNDN); } else { mpfr_set(r29810, r29809, MPFR_RNDN); };
        return mpfr_get_d(r29810, MPFR_RNDN);
}

