#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 r10057 = c0;
        float r10058 = A;
        float r10059 = V;
        float r10060 = l;
        float r10061 = r10059 * r10060;
        float r10062 = r10058 / r10061;
        float r10063 = sqrt(r10062);
        float r10064 = r10057 * r10063;
        return r10064;
}

double f_id(double c0, double A, double V, double l) {
        double r10065 = c0;
        double r10066 = A;
        double r10067 = V;
        double r10068 = l;
        double r10069 = r10067 * r10068;
        double r10070 = r10066 / r10069;
        double r10071 = sqrt(r10070);
        double r10072 = r10065 * r10071;
        return r10072;
}


double f_of(float c0, float A, float V, float l) {
        float r10073 = l;
        float r10074 = V;
        float r10075 = r10073 * r10074;
        float r10076 = -1.4465936640347471e+295;
        bool r10077 = r10075 <= r10076;
        float r10078 = A;
        float r10079 = r10078 / r10074;
        float r10080 = r10079 / r10073;
        float r10081 = sqrt(r10080);
        float r10082 = c0;
        float r10083 = r10081 * r10082;
        float r10084 = -1.7850903931179766e-56;
        bool r10085 = r10075 <= r10084;
        float r10086 = r10078 / r10075;
        float r10087 = sqrt(r10086);
        float r10088 = sqrt(r10087);
        float r10089 = r10088 * r10088;
        float r10090 = r10089 * r10082;
        float r10091 = 1.2845706791872e-322;
        bool r10092 = r10075 <= r10091;
        float r10093 = 1.7811482673865394e+308;
        bool r10094 = r10075 <= r10093;
        float r10095 = !r10094;
        bool r10096 = r10092 || r10095;
        float r10097 = sqrt(r10078);
        float r10098 = sqrt(r10075);
        float r10099 = r10097 / r10098;
        float r10100 = r10082 * r10099;
        float r10101 = r10096 ? r10083 : r10100;
        float r10102 = r10085 ? r10090 : r10101;
        float r10103 = r10077 ? r10083 : r10102;
        return r10103;
}

double f_od(double c0, double A, double V, double l) {
        double r10104 = l;
        double r10105 = V;
        double r10106 = r10104 * r10105;
        double r10107 = -1.4465936640347471e+295;
        bool r10108 = r10106 <= r10107;
        double r10109 = A;
        double r10110 = r10109 / r10105;
        double r10111 = r10110 / r10104;
        double r10112 = sqrt(r10111);
        double r10113 = c0;
        double r10114 = r10112 * r10113;
        double r10115 = -1.7850903931179766e-56;
        bool r10116 = r10106 <= r10115;
        double r10117 = r10109 / r10106;
        double r10118 = sqrt(r10117);
        double r10119 = sqrt(r10118);
        double r10120 = r10119 * r10119;
        double r10121 = r10120 * r10113;
        double r10122 = 1.2845706791872e-322;
        bool r10123 = r10106 <= r10122;
        double r10124 = 1.7811482673865394e+308;
        bool r10125 = r10106 <= r10124;
        double r10126 = !r10125;
        bool r10127 = r10123 || r10126;
        double r10128 = sqrt(r10109);
        double r10129 = sqrt(r10106);
        double r10130 = r10128 / r10129;
        double r10131 = r10113 * r10130;
        double r10132 = r10127 ? r10114 : r10131;
        double r10133 = r10116 ? r10121 : r10132;
        double r10134 = r10108 ? r10114 : r10133;
        return r10134;
}

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 r10135, r10136, r10137, r10138, r10139, r10140, r10141, r10142;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10135);
        mpfr_init(r10136);
        mpfr_init(r10137);
        mpfr_init(r10138);
        mpfr_init(r10139);
        mpfr_init(r10140);
        mpfr_init(r10141);
        mpfr_init(r10142);
}

double f_im(double c0, double A, double V, double l) {
        mpfr_set_d(r10135, c0, MPFR_RNDN);
        mpfr_set_d(r10136, A, MPFR_RNDN);
        mpfr_set_d(r10137, V, MPFR_RNDN);
        mpfr_set_d(r10138, l, MPFR_RNDN);
        mpfr_mul(r10139, r10137, r10138, MPFR_RNDN);
        mpfr_div(r10140, r10136, r10139, MPFR_RNDN);
        mpfr_sqrt(r10141, r10140, MPFR_RNDN);
        mpfr_mul(r10142, r10135, r10141, MPFR_RNDN);
        return mpfr_get_d(r10142, MPFR_RNDN);
}

static mpfr_t r10143, r10144, r10145, r10146, r10147, r10148, r10149, r10150, r10151, r10152, r10153, r10154, r10155, r10156, r10157, r10158, r10159, r10160, r10161, r10162, r10163, r10164, r10165, r10166, r10167, r10168, r10169, r10170, r10171, r10172, r10173;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10143);
        mpfr_init(r10144);
        mpfr_init(r10145);
        mpfr_init_set_str(r10146, "-1.4465936640347471e+295", 10, MPFR_RNDN);
        mpfr_init(r10147);
        mpfr_init(r10148);
        mpfr_init(r10149);
        mpfr_init(r10150);
        mpfr_init(r10151);
        mpfr_init(r10152);
        mpfr_init(r10153);
        mpfr_init_set_str(r10154, "-1.7850903931179766e-56", 10, MPFR_RNDN);
        mpfr_init(r10155);
        mpfr_init(r10156);
        mpfr_init(r10157);
        mpfr_init(r10158);
        mpfr_init(r10159);
        mpfr_init(r10160);
        mpfr_init_set_str(r10161, "1.2845706791872e-322", 10, MPFR_RNDN);
        mpfr_init(r10162);
        mpfr_init_set_str(r10163, "1.7811482673865394e+308", 10, MPFR_RNDN);
        mpfr_init(r10164);
        mpfr_init(r10165);
        mpfr_init(r10166);
        mpfr_init(r10167);
        mpfr_init(r10168);
        mpfr_init(r10169);
        mpfr_init(r10170);
        mpfr_init(r10171);
        mpfr_init(r10172);
        mpfr_init(r10173);
}

double f_fm(double c0, double A, double V, double l) {
        mpfr_set_d(r10143, l, MPFR_RNDN);
        mpfr_set_d(r10144, V, MPFR_RNDN);
        mpfr_mul(r10145, r10143, r10144, MPFR_RNDN);
        ;
        mpfr_set_si(r10147, mpfr_cmp(r10145, r10146) <= 0, MPFR_RNDN);
        mpfr_set_d(r10148, A, MPFR_RNDN);
        mpfr_div(r10149, r10148, r10144, MPFR_RNDN);
        mpfr_div(r10150, r10149, r10143, MPFR_RNDN);
        mpfr_sqrt(r10151, r10150, MPFR_RNDN);
        mpfr_set_d(r10152, c0, MPFR_RNDN);
        mpfr_mul(r10153, r10151, r10152, MPFR_RNDN);
        ;
        mpfr_set_si(r10155, mpfr_cmp(r10145, r10154) <= 0, MPFR_RNDN);
        mpfr_div(r10156, r10148, r10145, MPFR_RNDN);
        mpfr_sqrt(r10157, r10156, MPFR_RNDN);
        mpfr_sqrt(r10158, r10157, MPFR_RNDN);
        mpfr_mul(r10159, r10158, r10158, MPFR_RNDN);
        mpfr_mul(r10160, r10159, r10152, MPFR_RNDN);
        ;
        mpfr_set_si(r10162, mpfr_cmp(r10145, r10161) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10164, mpfr_cmp(r10145, r10163) <= 0, MPFR_RNDN);
        mpfr_set_si(r10165, !mpfr_get_si(r10164, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10166, mpfr_get_si(r10162, MPFR_RNDN) || mpfr_get_si(r10165, MPFR_RNDN), MPFR_RNDN);
        mpfr_sqrt(r10167, r10148, MPFR_RNDN);
        mpfr_sqrt(r10168, r10145, MPFR_RNDN);
        mpfr_div(r10169, r10167, r10168, MPFR_RNDN);
        mpfr_mul(r10170, r10152, r10169, MPFR_RNDN);
        if (mpfr_get_si(r10166, MPFR_RNDN)) { mpfr_set(r10171, r10153, MPFR_RNDN); } else { mpfr_set(r10171, r10170, MPFR_RNDN); };
        if (mpfr_get_si(r10155, MPFR_RNDN)) { mpfr_set(r10172, r10160, MPFR_RNDN); } else { mpfr_set(r10172, r10171, MPFR_RNDN); };
        if (mpfr_get_si(r10147, MPFR_RNDN)) { mpfr_set(r10173, r10153, MPFR_RNDN); } else { mpfr_set(r10173, r10172, MPFR_RNDN); };
        return mpfr_get_d(r10173, MPFR_RNDN);
}

static mpfr_t r10174, r10175, r10176, r10177, r10178, r10179, r10180, r10181, r10182, r10183, r10184, r10185, r10186, r10187, r10188, r10189, r10190, r10191, r10192, r10193, r10194, r10195, r10196, r10197, r10198, r10199, r10200, r10201, r10202, r10203, r10204;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10174);
        mpfr_init(r10175);
        mpfr_init(r10176);
        mpfr_init_set_str(r10177, "-1.4465936640347471e+295", 10, MPFR_RNDN);
        mpfr_init(r10178);
        mpfr_init(r10179);
        mpfr_init(r10180);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init(r10183);
        mpfr_init(r10184);
        mpfr_init_set_str(r10185, "-1.7850903931179766e-56", 10, MPFR_RNDN);
        mpfr_init(r10186);
        mpfr_init(r10187);
        mpfr_init(r10188);
        mpfr_init(r10189);
        mpfr_init(r10190);
        mpfr_init(r10191);
        mpfr_init_set_str(r10192, "1.2845706791872e-322", 10, MPFR_RNDN);
        mpfr_init(r10193);
        mpfr_init_set_str(r10194, "1.7811482673865394e+308", 10, MPFR_RNDN);
        mpfr_init(r10195);
        mpfr_init(r10196);
        mpfr_init(r10197);
        mpfr_init(r10198);
        mpfr_init(r10199);
        mpfr_init(r10200);
        mpfr_init(r10201);
        mpfr_init(r10202);
        mpfr_init(r10203);
        mpfr_init(r10204);
}

double f_dm(double c0, double A, double V, double l) {
        mpfr_set_d(r10174, l, MPFR_RNDN);
        mpfr_set_d(r10175, V, MPFR_RNDN);
        mpfr_mul(r10176, r10174, r10175, MPFR_RNDN);
        ;
        mpfr_set_si(r10178, mpfr_cmp(r10176, r10177) <= 0, MPFR_RNDN);
        mpfr_set_d(r10179, A, MPFR_RNDN);
        mpfr_div(r10180, r10179, r10175, MPFR_RNDN);
        mpfr_div(r10181, r10180, r10174, MPFR_RNDN);
        mpfr_sqrt(r10182, r10181, MPFR_RNDN);
        mpfr_set_d(r10183, c0, MPFR_RNDN);
        mpfr_mul(r10184, r10182, r10183, MPFR_RNDN);
        ;
        mpfr_set_si(r10186, mpfr_cmp(r10176, r10185) <= 0, MPFR_RNDN);
        mpfr_div(r10187, r10179, r10176, MPFR_RNDN);
        mpfr_sqrt(r10188, r10187, MPFR_RNDN);
        mpfr_sqrt(r10189, r10188, MPFR_RNDN);
        mpfr_mul(r10190, r10189, r10189, MPFR_RNDN);
        mpfr_mul(r10191, r10190, r10183, MPFR_RNDN);
        ;
        mpfr_set_si(r10193, mpfr_cmp(r10176, r10192) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10195, mpfr_cmp(r10176, r10194) <= 0, MPFR_RNDN);
        mpfr_set_si(r10196, !mpfr_get_si(r10195, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10197, mpfr_get_si(r10193, MPFR_RNDN) || mpfr_get_si(r10196, MPFR_RNDN), MPFR_RNDN);
        mpfr_sqrt(r10198, r10179, MPFR_RNDN);
        mpfr_sqrt(r10199, r10176, MPFR_RNDN);
        mpfr_div(r10200, r10198, r10199, MPFR_RNDN);
        mpfr_mul(r10201, r10183, r10200, MPFR_RNDN);
        if (mpfr_get_si(r10197, MPFR_RNDN)) { mpfr_set(r10202, r10184, MPFR_RNDN); } else { mpfr_set(r10202, r10201, MPFR_RNDN); };
        if (mpfr_get_si(r10186, MPFR_RNDN)) { mpfr_set(r10203, r10191, MPFR_RNDN); } else { mpfr_set(r10203, r10202, MPFR_RNDN); };
        if (mpfr_get_si(r10178, MPFR_RNDN)) { mpfr_set(r10204, r10184, MPFR_RNDN); } else { mpfr_set(r10204, r10203, MPFR_RNDN); };
        return mpfr_get_d(r10204, MPFR_RNDN);
}

