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

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

double f_if(float c0, float A, float V, float l) {
        float r29580 = c0;
        float r29581 = A;
        float r29582 = V;
        float r29583 = l;
        float r29584 = r29582 * r29583;
        float r29585 = r29581 / r29584;
        float r29586 = sqrt(r29585);
        float r29587 = r29580 * r29586;
        return r29587;
}

double f_id(double c0, double A, double V, double l) {
        double r29588 = c0;
        double r29589 = A;
        double r29590 = V;
        double r29591 = l;
        double r29592 = r29590 * r29591;
        double r29593 = r29589 / r29592;
        double r29594 = sqrt(r29593);
        double r29595 = r29588 * r29594;
        return r29595;
}


double f_of(float c0, float A, float V, float l) {
        float r29596 = V;
        float r29597 = 1.0800478838409164e-294f;
        bool r29598 = r29596 <= r29597;
        float r29599 = A;
        float r29600 = l;
        float r29601 = r29599 / r29600;
        float r29602 = r29601 / r29596;
        float r29603 = sqrt(r29602);
        float r29604 = c0;
        float r29605 = r29603 * r29604;
        float r29606 = sqrt(r29601);
        float r29607 = sqrt(r29596);
        float r29608 = r29606 / r29607;
        float r29609 = r29608 * r29604;
        float r29610 = r29598 ? r29605 : r29609;
        return r29610;
}

double f_od(double c0, double A, double V, double l) {
        double r29611 = V;
        double r29612 = 1.0800478838409164e-294;
        bool r29613 = r29611 <= r29612;
        double r29614 = A;
        double r29615 = l;
        double r29616 = r29614 / r29615;
        double r29617 = r29616 / r29611;
        double r29618 = sqrt(r29617);
        double r29619 = c0;
        double r29620 = r29618 * r29619;
        double r29621 = sqrt(r29616);
        double r29622 = sqrt(r29611);
        double r29623 = r29621 / r29622;
        double r29624 = r29623 * r29619;
        double r29625 = r29613 ? r29620 : r29624;
        return r29625;
}

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 r29626, r29627, r29628, r29629, r29630, r29631, r29632, r29633;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r29626);
        mpfr_init(r29627);
        mpfr_init(r29628);
        mpfr_init(r29629);
        mpfr_init(r29630);
        mpfr_init(r29631);
        mpfr_init(r29632);
        mpfr_init(r29633);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r29626, c0, MPFR_RNDN);
        mpfr_set_d(r29627, A, MPFR_RNDN);
        mpfr_set_d(r29628, V, MPFR_RNDN);
        mpfr_set_d(r29629, l, MPFR_RNDN);
        mpfr_mul(r29630, r29628, r29629, MPFR_RNDN);
        mpfr_div(r29631, r29627, r29630, MPFR_RNDN);
        mpfr_sqrt(r29632, r29631, MPFR_RNDN);
        mpfr_mul(r29633, r29626, r29632, MPFR_RNDN);
        return mpfr_get_d(r29633, MPFR_RNDN);
}

static mpfr_t r29634, r29635, r29636, r29637, r29638, r29639, r29640, r29641, r29642, r29643, r29644, r29645, r29646, r29647, r29648;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29634);
        mpfr_init_set_str(r29635, "1.0800478838409164e-294", 10, MPFR_RNDN);
        mpfr_init(r29636);
        mpfr_init(r29637);
        mpfr_init(r29638);
        mpfr_init(r29639);
        mpfr_init(r29640);
        mpfr_init(r29641);
        mpfr_init(r29642);
        mpfr_init(r29643);
        mpfr_init(r29644);
        mpfr_init(r29645);
        mpfr_init(r29646);
        mpfr_init(r29647);
        mpfr_init(r29648);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r29634, V, MPFR_RNDN);
        ;
        mpfr_set_si(r29636, mpfr_cmp(r29634, r29635) <= 0, MPFR_RNDN);
        mpfr_set_d(r29637, A, MPFR_RNDN);
        mpfr_set_d(r29638, l, MPFR_RNDN);
        mpfr_div(r29639, r29637, r29638, MPFR_RNDN);
        mpfr_div(r29640, r29639, r29634, MPFR_RNDN);
        mpfr_sqrt(r29641, r29640, MPFR_RNDN);
        mpfr_set_d(r29642, c0, MPFR_RNDN);
        mpfr_mul(r29643, r29641, r29642, MPFR_RNDN);
        mpfr_sqrt(r29644, r29639, MPFR_RNDN);
        mpfr_sqrt(r29645, r29634, MPFR_RNDN);
        mpfr_div(r29646, r29644, r29645, MPFR_RNDN);
        mpfr_mul(r29647, r29646, r29642, MPFR_RNDN);
        if (mpfr_get_si(r29636, MPFR_RNDN)) { mpfr_set(r29648, r29643, MPFR_RNDN); } else { mpfr_set(r29648, r29647, MPFR_RNDN); };
        return mpfr_get_d(r29648, MPFR_RNDN);
}

static mpfr_t r29649, r29650, r29651, r29652, r29653, r29654, r29655, r29656, r29657, r29658, r29659, r29660, r29661, r29662, r29663;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29649);
        mpfr_init_set_str(r29650, "1.0800478838409164e-294", 10, MPFR_RNDN);
        mpfr_init(r29651);
        mpfr_init(r29652);
        mpfr_init(r29653);
        mpfr_init(r29654);
        mpfr_init(r29655);
        mpfr_init(r29656);
        mpfr_init(r29657);
        mpfr_init(r29658);
        mpfr_init(r29659);
        mpfr_init(r29660);
        mpfr_init(r29661);
        mpfr_init(r29662);
        mpfr_init(r29663);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r29649, V, MPFR_RNDN);
        ;
        mpfr_set_si(r29651, mpfr_cmp(r29649, r29650) <= 0, MPFR_RNDN);
        mpfr_set_d(r29652, A, MPFR_RNDN);
        mpfr_set_d(r29653, l, MPFR_RNDN);
        mpfr_div(r29654, r29652, r29653, MPFR_RNDN);
        mpfr_div(r29655, r29654, r29649, MPFR_RNDN);
        mpfr_sqrt(r29656, r29655, MPFR_RNDN);
        mpfr_set_d(r29657, c0, MPFR_RNDN);
        mpfr_mul(r29658, r29656, r29657, MPFR_RNDN);
        mpfr_sqrt(r29659, r29654, MPFR_RNDN);
        mpfr_sqrt(r29660, r29649, MPFR_RNDN);
        mpfr_div(r29661, r29659, r29660, MPFR_RNDN);
        mpfr_mul(r29662, r29661, r29657, MPFR_RNDN);
        if (mpfr_get_si(r29651, MPFR_RNDN)) { mpfr_set(r29663, r29658, MPFR_RNDN); } else { mpfr_set(r29663, r29662, MPFR_RNDN); };
        return mpfr_get_d(r29663, MPFR_RNDN);
}

