#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 r31820 = c0;
        float r31821 = A;
        float r31822 = V;
        float r31823 = l;
        float r31824 = r31822 * r31823;
        float r31825 = r31821 / r31824;
        float r31826 = sqrt(r31825);
        float r31827 = r31820 * r31826;
        return r31827;
}

double f_id(double c0, double A, double V, double l) {
        double r31828 = c0;
        double r31829 = A;
        double r31830 = V;
        double r31831 = l;
        double r31832 = r31830 * r31831;
        double r31833 = r31829 / r31832;
        double r31834 = sqrt(r31833);
        double r31835 = r31828 * r31834;
        return r31835;
}


double f_of(float c0, float A, float V, float l) {
        float r31836 = A;
        float r31837 = 3.6519349309068006e-301;
        bool r31838 = r31836 <= r31837;
        float r31839 = c0;
        float r31840 = V;
        float r31841 = l;
        float r31842 = r31840 * r31841;
        float r31843 = r31836 / r31842;
        float r31844 = sqrt(r31843);
        float r31845 = sqrt(r31844);
        float r31846 = r31839 * r31845;
        float r31847 = r31846 * r31845;
        float r31848 = sqrt(r31836);
        float r31849 = sqrt(r31842);
        float r31850 = r31848 / r31849;
        float r31851 = r31839 * r31850;
        float r31852 = r31838 ? r31847 : r31851;
        return r31852;
}

double f_od(double c0, double A, double V, double l) {
        double r31853 = A;
        double r31854 = 3.6519349309068006e-301;
        bool r31855 = r31853 <= r31854;
        double r31856 = c0;
        double r31857 = V;
        double r31858 = l;
        double r31859 = r31857 * r31858;
        double r31860 = r31853 / r31859;
        double r31861 = sqrt(r31860);
        double r31862 = sqrt(r31861);
        double r31863 = r31856 * r31862;
        double r31864 = r31863 * r31862;
        double r31865 = sqrt(r31853);
        double r31866 = sqrt(r31859);
        double r31867 = r31865 / r31866;
        double r31868 = r31856 * r31867;
        double r31869 = r31855 ? r31864 : r31868;
        return r31869;
}

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 r31870, r31871, r31872, r31873, r31874, r31875, r31876, r31877;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r31870);
        mpfr_init(r31871);
        mpfr_init(r31872);
        mpfr_init(r31873);
        mpfr_init(r31874);
        mpfr_init(r31875);
        mpfr_init(r31876);
        mpfr_init(r31877);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r31870, c0, MPFR_RNDN);
        mpfr_set_d(r31871, A, MPFR_RNDN);
        mpfr_set_d(r31872, V, MPFR_RNDN);
        mpfr_set_d(r31873, l, MPFR_RNDN);
        mpfr_mul(r31874, r31872, r31873, MPFR_RNDN);
        mpfr_div(r31875, r31871, r31874, MPFR_RNDN);
        mpfr_sqrt(r31876, r31875, MPFR_RNDN);
        mpfr_mul(r31877, r31870, r31876, MPFR_RNDN);
        return mpfr_get_d(r31877, MPFR_RNDN);
}

static mpfr_t r31878, r31879, r31880, r31881, r31882, r31883, r31884, r31885, r31886, r31887, r31888, r31889, r31890, r31891, r31892, r31893, r31894;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31878);
        mpfr_init_set_str(r31879, "3.6519349309068006e-301", 10, MPFR_RNDN);
        mpfr_init(r31880);
        mpfr_init(r31881);
        mpfr_init(r31882);
        mpfr_init(r31883);
        mpfr_init(r31884);
        mpfr_init(r31885);
        mpfr_init(r31886);
        mpfr_init(r31887);
        mpfr_init(r31888);
        mpfr_init(r31889);
        mpfr_init(r31890);
        mpfr_init(r31891);
        mpfr_init(r31892);
        mpfr_init(r31893);
        mpfr_init(r31894);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r31878, A, MPFR_RNDN);
        ;
        mpfr_set_si(r31880, mpfr_cmp(r31878, r31879) <= 0, MPFR_RNDN);
        mpfr_set_d(r31881, c0, MPFR_RNDN);
        mpfr_set_d(r31882, V, MPFR_RNDN);
        mpfr_set_d(r31883, l, MPFR_RNDN);
        mpfr_mul(r31884, r31882, r31883, MPFR_RNDN);
        mpfr_div(r31885, r31878, r31884, MPFR_RNDN);
        mpfr_sqrt(r31886, r31885, MPFR_RNDN);
        mpfr_sqrt(r31887, r31886, MPFR_RNDN);
        mpfr_mul(r31888, r31881, r31887, MPFR_RNDN);
        mpfr_mul(r31889, r31888, r31887, MPFR_RNDN);
        mpfr_sqrt(r31890, r31878, MPFR_RNDN);
        mpfr_sqrt(r31891, r31884, MPFR_RNDN);
        mpfr_div(r31892, r31890, r31891, MPFR_RNDN);
        mpfr_mul(r31893, r31881, r31892, MPFR_RNDN);
        if (mpfr_get_si(r31880, MPFR_RNDN)) { mpfr_set(r31894, r31889, MPFR_RNDN); } else { mpfr_set(r31894, r31893, MPFR_RNDN); };
        return mpfr_get_d(r31894, MPFR_RNDN);
}

static mpfr_t r31895, r31896, r31897, r31898, r31899, r31900, r31901, r31902, r31903, r31904, r31905, r31906, r31907, r31908, r31909, r31910, r31911;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31895);
        mpfr_init_set_str(r31896, "3.6519349309068006e-301", 10, MPFR_RNDN);
        mpfr_init(r31897);
        mpfr_init(r31898);
        mpfr_init(r31899);
        mpfr_init(r31900);
        mpfr_init(r31901);
        mpfr_init(r31902);
        mpfr_init(r31903);
        mpfr_init(r31904);
        mpfr_init(r31905);
        mpfr_init(r31906);
        mpfr_init(r31907);
        mpfr_init(r31908);
        mpfr_init(r31909);
        mpfr_init(r31910);
        mpfr_init(r31911);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r31895, A, MPFR_RNDN);
        ;
        mpfr_set_si(r31897, mpfr_cmp(r31895, r31896) <= 0, MPFR_RNDN);
        mpfr_set_d(r31898, c0, MPFR_RNDN);
        mpfr_set_d(r31899, V, MPFR_RNDN);
        mpfr_set_d(r31900, l, MPFR_RNDN);
        mpfr_mul(r31901, r31899, r31900, MPFR_RNDN);
        mpfr_div(r31902, r31895, r31901, MPFR_RNDN);
        mpfr_sqrt(r31903, r31902, MPFR_RNDN);
        mpfr_sqrt(r31904, r31903, MPFR_RNDN);
        mpfr_mul(r31905, r31898, r31904, MPFR_RNDN);
        mpfr_mul(r31906, r31905, r31904, MPFR_RNDN);
        mpfr_sqrt(r31907, r31895, MPFR_RNDN);
        mpfr_sqrt(r31908, r31901, MPFR_RNDN);
        mpfr_div(r31909, r31907, r31908, MPFR_RNDN);
        mpfr_mul(r31910, r31898, r31909, MPFR_RNDN);
        if (mpfr_get_si(r31897, MPFR_RNDN)) { mpfr_set(r31911, r31906, MPFR_RNDN); } else { mpfr_set(r31911, r31910, MPFR_RNDN); };
        return mpfr_get_d(r31911, MPFR_RNDN);
}

