#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 r10016 = c0;
        float r10017 = A;
        float r10018 = V;
        float r10019 = l;
        float r10020 = r10018 * r10019;
        float r10021 = r10017 / r10020;
        float r10022 = sqrt(r10021);
        float r10023 = r10016 * r10022;
        return r10023;
}

double f_id(double c0, double A, double V, double l) {
        double r10024 = c0;
        double r10025 = A;
        double r10026 = V;
        double r10027 = l;
        double r10028 = r10026 * r10027;
        double r10029 = r10025 / r10028;
        double r10030 = sqrt(r10029);
        double r10031 = r10024 * r10030;
        return r10031;
}


double f_of(float c0, float A, float V, float l) {
        float r10032 = V;
        float r10033 = l;
        float r10034 = r10032 * r10033;
        float r10035 = -1.249767358331218e+215;
        bool r10036 = r10034 <= r10035;
        float r10037 = c0;
        float r10038 = 1;
        float r10039 = A;
        float r10040 = r10039 / r10033;
        float r10041 = r10032 / r10040;
        float r10042 = r10038 / r10041;
        float r10043 = sqrt(r10042);
        float r10044 = r10037 * r10043;
        float r10045 = -4.524482883968884e-298;
        bool r10046 = r10034 <= r10045;
        float r10047 = sqrt(r10038);
        float r10048 = r10037 * r10047;
        float r10049 = r10034 / r10039;
        float r10050 = sqrt(r10049);
        float r10051 = r10048 / r10050;
        float r10052 = 5.6763202050701e-320;
        bool r10053 = r10034 <= r10052;
        float r10054 = r10038 / r10032;
        float r10055 = sqrt(r10054);
        float r10056 = sqrt(r10040);
        float r10057 = r10055 * r10056;
        float r10058 = r10037 * r10057;
        float r10059 = 1.3844248042751056e+273;
        bool r10060 = r10034 <= r10059;
        float r10061 = sqrt(r10034);
        float r10062 = sqrt(r10039);
        float r10063 = r10061 / r10062;
        float r10064 = r10048 / r10063;
        float r10065 = r10060 ? r10064 : r10044;
        float r10066 = r10053 ? r10058 : r10065;
        float r10067 = r10046 ? r10051 : r10066;
        float r10068 = r10036 ? r10044 : r10067;
        return r10068;
}

double f_od(double c0, double A, double V, double l) {
        double r10069 = V;
        double r10070 = l;
        double r10071 = r10069 * r10070;
        double r10072 = -1.249767358331218e+215;
        bool r10073 = r10071 <= r10072;
        double r10074 = c0;
        double r10075 = 1;
        double r10076 = A;
        double r10077 = r10076 / r10070;
        double r10078 = r10069 / r10077;
        double r10079 = r10075 / r10078;
        double r10080 = sqrt(r10079);
        double r10081 = r10074 * r10080;
        double r10082 = -4.524482883968884e-298;
        bool r10083 = r10071 <= r10082;
        double r10084 = sqrt(r10075);
        double r10085 = r10074 * r10084;
        double r10086 = r10071 / r10076;
        double r10087 = sqrt(r10086);
        double r10088 = r10085 / r10087;
        double r10089 = 5.6763202050701e-320;
        bool r10090 = r10071 <= r10089;
        double r10091 = r10075 / r10069;
        double r10092 = sqrt(r10091);
        double r10093 = sqrt(r10077);
        double r10094 = r10092 * r10093;
        double r10095 = r10074 * r10094;
        double r10096 = 1.3844248042751056e+273;
        bool r10097 = r10071 <= r10096;
        double r10098 = sqrt(r10071);
        double r10099 = sqrt(r10076);
        double r10100 = r10098 / r10099;
        double r10101 = r10085 / r10100;
        double r10102 = r10097 ? r10101 : r10081;
        double r10103 = r10090 ? r10095 : r10102;
        double r10104 = r10083 ? r10088 : r10103;
        double r10105 = r10073 ? r10081 : r10104;
        return r10105;
}

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 r10106, r10107, r10108, r10109, r10110, r10111, r10112, r10113;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10106);
        mpfr_init(r10107);
        mpfr_init(r10108);
        mpfr_init(r10109);
        mpfr_init(r10110);
        mpfr_init(r10111);
        mpfr_init(r10112);
        mpfr_init(r10113);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r10106, c0, MPFR_RNDN);
        mpfr_set_d(r10107, A, MPFR_RNDN);
        mpfr_set_d(r10108, V, MPFR_RNDN);
        mpfr_set_d(r10109, l, MPFR_RNDN);
        mpfr_mul(r10110, r10108, r10109, MPFR_RNDN);
        mpfr_div(r10111, r10107, r10110, MPFR_RNDN);
        mpfr_sqrt(r10112, r10111, MPFR_RNDN);
        mpfr_mul(r10113, r10106, r10112, MPFR_RNDN);
        return mpfr_get_d(r10113, MPFR_RNDN);
}

static mpfr_t r10114, r10115, r10116, r10117, r10118, r10119, r10120, r10121, r10122, r10123, r10124, r10125, r10126, r10127, r10128, r10129, r10130, r10131, r10132, r10133, r10134, r10135, r10136, r10137, r10138, r10139, r10140, r10141, r10142, r10143, r10144, r10145, r10146, r10147, r10148, r10149, r10150;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10114);
        mpfr_init(r10115);
        mpfr_init(r10116);
        mpfr_init_set_str(r10117, "-1.249767358331218e+215", 10, MPFR_RNDN);
        mpfr_init(r10118);
        mpfr_init(r10119);
        mpfr_init_set_str(r10120, "1", 10, MPFR_RNDN);
        mpfr_init(r10121);
        mpfr_init(r10122);
        mpfr_init(r10123);
        mpfr_init(r10124);
        mpfr_init(r10125);
        mpfr_init(r10126);
        mpfr_init_set_str(r10127, "-4.524482883968884e-298", 10, MPFR_RNDN);
        mpfr_init(r10128);
        mpfr_init(r10129);
        mpfr_init(r10130);
        mpfr_init(r10131);
        mpfr_init(r10132);
        mpfr_init(r10133);
        mpfr_init_set_str(r10134, "5.6763202050701e-320", 10, MPFR_RNDN);
        mpfr_init(r10135);
        mpfr_init(r10136);
        mpfr_init(r10137);
        mpfr_init(r10138);
        mpfr_init(r10139);
        mpfr_init(r10140);
        mpfr_init_set_str(r10141, "1.3844248042751056e+273", 10, MPFR_RNDN);
        mpfr_init(r10142);
        mpfr_init(r10143);
        mpfr_init(r10144);
        mpfr_init(r10145);
        mpfr_init(r10146);
        mpfr_init(r10147);
        mpfr_init(r10148);
        mpfr_init(r10149);
        mpfr_init(r10150);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r10114, V, MPFR_RNDN);
        mpfr_set_d(r10115, l, MPFR_RNDN);
        mpfr_mul(r10116, r10114, r10115, MPFR_RNDN);
        ;
        mpfr_set_si(r10118, mpfr_cmp(r10116, r10117) <= 0, MPFR_RNDN);
        mpfr_set_d(r10119, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10121, A, MPFR_RNDN);
        mpfr_div(r10122, r10121, r10115, MPFR_RNDN);
        mpfr_div(r10123, r10114, r10122, MPFR_RNDN);
        mpfr_div(r10124, r10120, r10123, MPFR_RNDN);
        mpfr_sqrt(r10125, r10124, MPFR_RNDN);
        mpfr_mul(r10126, r10119, r10125, MPFR_RNDN);
        ;
        mpfr_set_si(r10128, mpfr_cmp(r10116, r10127) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10129, r10120, MPFR_RNDN);
        mpfr_mul(r10130, r10119, r10129, MPFR_RNDN);
        mpfr_div(r10131, r10116, r10121, MPFR_RNDN);
        mpfr_sqrt(r10132, r10131, MPFR_RNDN);
        mpfr_div(r10133, r10130, r10132, MPFR_RNDN);
        ;
        mpfr_set_si(r10135, mpfr_cmp(r10116, r10134) <= 0, MPFR_RNDN);
        mpfr_div(r10136, r10120, r10114, MPFR_RNDN);
        mpfr_sqrt(r10137, r10136, MPFR_RNDN);
        mpfr_sqrt(r10138, r10122, MPFR_RNDN);
        mpfr_mul(r10139, r10137, r10138, MPFR_RNDN);
        mpfr_mul(r10140, r10119, r10139, MPFR_RNDN);
        ;
        mpfr_set_si(r10142, mpfr_cmp(r10116, r10141) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10143, r10116, MPFR_RNDN);
        mpfr_sqrt(r10144, r10121, MPFR_RNDN);
        mpfr_div(r10145, r10143, r10144, MPFR_RNDN);
        mpfr_div(r10146, r10130, r10145, MPFR_RNDN);
        if (mpfr_get_si(r10142, MPFR_RNDN)) { mpfr_set(r10147, r10146, MPFR_RNDN); } else { mpfr_set(r10147, r10126, MPFR_RNDN); };
        if (mpfr_get_si(r10135, MPFR_RNDN)) { mpfr_set(r10148, r10140, MPFR_RNDN); } else { mpfr_set(r10148, r10147, MPFR_RNDN); };
        if (mpfr_get_si(r10128, MPFR_RNDN)) { mpfr_set(r10149, r10133, MPFR_RNDN); } else { mpfr_set(r10149, r10148, MPFR_RNDN); };
        if (mpfr_get_si(r10118, MPFR_RNDN)) { mpfr_set(r10150, r10126, MPFR_RNDN); } else { mpfr_set(r10150, r10149, MPFR_RNDN); };
        return mpfr_get_d(r10150, MPFR_RNDN);
}

static mpfr_t r10151, r10152, r10153, r10154, r10155, r10156, r10157, r10158, r10159, r10160, r10161, r10162, r10163, r10164, r10165, r10166, r10167, r10168, r10169, r10170, r10171, r10172, r10173, r10174, r10175, r10176, r10177, r10178, r10179, r10180, r10181, r10182, r10183, r10184, r10185, r10186, r10187;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10151);
        mpfr_init(r10152);
        mpfr_init(r10153);
        mpfr_init_set_str(r10154, "-1.249767358331218e+215", 10, MPFR_RNDN);
        mpfr_init(r10155);
        mpfr_init(r10156);
        mpfr_init_set_str(r10157, "1", 10, MPFR_RNDN);
        mpfr_init(r10158);
        mpfr_init(r10159);
        mpfr_init(r10160);
        mpfr_init(r10161);
        mpfr_init(r10162);
        mpfr_init(r10163);
        mpfr_init_set_str(r10164, "-4.524482883968884e-298", 10, MPFR_RNDN);
        mpfr_init(r10165);
        mpfr_init(r10166);
        mpfr_init(r10167);
        mpfr_init(r10168);
        mpfr_init(r10169);
        mpfr_init(r10170);
        mpfr_init_set_str(r10171, "5.6763202050701e-320", 10, MPFR_RNDN);
        mpfr_init(r10172);
        mpfr_init(r10173);
        mpfr_init(r10174);
        mpfr_init(r10175);
        mpfr_init(r10176);
        mpfr_init(r10177);
        mpfr_init_set_str(r10178, "1.3844248042751056e+273", 10, MPFR_RNDN);
        mpfr_init(r10179);
        mpfr_init(r10180);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init(r10183);
        mpfr_init(r10184);
        mpfr_init(r10185);
        mpfr_init(r10186);
        mpfr_init(r10187);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r10151, V, MPFR_RNDN);
        mpfr_set_d(r10152, l, MPFR_RNDN);
        mpfr_mul(r10153, r10151, r10152, MPFR_RNDN);
        ;
        mpfr_set_si(r10155, mpfr_cmp(r10153, r10154) <= 0, MPFR_RNDN);
        mpfr_set_d(r10156, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10158, A, MPFR_RNDN);
        mpfr_div(r10159, r10158, r10152, MPFR_RNDN);
        mpfr_div(r10160, r10151, r10159, MPFR_RNDN);
        mpfr_div(r10161, r10157, r10160, MPFR_RNDN);
        mpfr_sqrt(r10162, r10161, MPFR_RNDN);
        mpfr_mul(r10163, r10156, r10162, MPFR_RNDN);
        ;
        mpfr_set_si(r10165, mpfr_cmp(r10153, r10164) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10166, r10157, MPFR_RNDN);
        mpfr_mul(r10167, r10156, r10166, MPFR_RNDN);
        mpfr_div(r10168, r10153, r10158, MPFR_RNDN);
        mpfr_sqrt(r10169, r10168, MPFR_RNDN);
        mpfr_div(r10170, r10167, r10169, MPFR_RNDN);
        ;
        mpfr_set_si(r10172, mpfr_cmp(r10153, r10171) <= 0, MPFR_RNDN);
        mpfr_div(r10173, r10157, r10151, MPFR_RNDN);
        mpfr_sqrt(r10174, r10173, MPFR_RNDN);
        mpfr_sqrt(r10175, r10159, MPFR_RNDN);
        mpfr_mul(r10176, r10174, r10175, MPFR_RNDN);
        mpfr_mul(r10177, r10156, r10176, MPFR_RNDN);
        ;
        mpfr_set_si(r10179, mpfr_cmp(r10153, r10178) <= 0, MPFR_RNDN);
        mpfr_sqrt(r10180, r10153, MPFR_RNDN);
        mpfr_sqrt(r10181, r10158, MPFR_RNDN);
        mpfr_div(r10182, r10180, r10181, MPFR_RNDN);
        mpfr_div(r10183, r10167, r10182, MPFR_RNDN);
        if (mpfr_get_si(r10179, MPFR_RNDN)) { mpfr_set(r10184, r10183, MPFR_RNDN); } else { mpfr_set(r10184, r10163, MPFR_RNDN); };
        if (mpfr_get_si(r10172, MPFR_RNDN)) { mpfr_set(r10185, r10177, MPFR_RNDN); } else { mpfr_set(r10185, r10184, MPFR_RNDN); };
        if (mpfr_get_si(r10165, MPFR_RNDN)) { mpfr_set(r10186, r10170, MPFR_RNDN); } else { mpfr_set(r10186, r10185, MPFR_RNDN); };
        if (mpfr_get_si(r10155, MPFR_RNDN)) { mpfr_set(r10187, r10163, MPFR_RNDN); } else { mpfr_set(r10187, r10186, MPFR_RNDN); };
        return mpfr_get_d(r10187, MPFR_RNDN);
}

