#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 r10188 = c0;
        float r10189 = 2;
        float r10190 = w;
        float r10191 = r10189 * r10190;
        float r10192 = r10188 / r10191;
        float r10193 = d;
        float r10194 = r10193 * r10193;
        float r10195 = r10188 * r10194;
        float r10196 = h;
        float r10197 = r10190 * r10196;
        float r10198 = D;
        float r10199 = r10198 * r10198;
        float r10200 = r10197 * r10199;
        float r10201 = r10195 / r10200;
        float r10202 = r10201 * r10201;
        float r10203 = M;
        float r10204 = r10203 * r10203;
        float r10205 = r10202 - r10204;
        float r10206 = sqrt(r10205);
        float r10207 = r10201 + r10206;
        float r10208 = r10192 * r10207;
        return r10208;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r10209 = c0;
        double r10210 = 2;
        double r10211 = w;
        double r10212 = r10210 * r10211;
        double r10213 = r10209 / r10212;
        double r10214 = d;
        double r10215 = r10214 * r10214;
        double r10216 = r10209 * r10215;
        double r10217 = h;
        double r10218 = r10211 * r10217;
        double r10219 = D;
        double r10220 = r10219 * r10219;
        double r10221 = r10218 * r10220;
        double r10222 = r10216 / r10221;
        double r10223 = r10222 * r10222;
        double r10224 = M;
        double r10225 = r10224 * r10224;
        double r10226 = r10223 - r10225;
        double r10227 = sqrt(r10226);
        double r10228 = r10222 + r10227;
        double r10229 = r10213 * r10228;
        return r10229;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r10230 = c0;
        float r10231 = 2;
        float r10232 = w;
        float r10233 = r10231 * r10232;
        float r10234 = r10230 / r10233;
        float r10235 = d;
        float r10236 = r10235 * r10235;
        float r10237 = r10230 * r10236;
        float r10238 = h;
        float r10239 = r10232 * r10238;
        float r10240 = D;
        float r10241 = r10240 * r10240;
        float r10242 = r10239 * r10241;
        float r10243 = r10237 / r10242;
        float r10244 = sqrt(r10243);
        float r10245 = r10243 * r10243;
        float r10246 = M;
        float r10247 = r10246 * r10246;
        float r10248 = r10245 - r10247;
        float r10249 = sqrt(r10248);
        float r10250 = fma(r10244, r10244, r10249);
        float r10251 = r10234 * r10250;
        float r10252 = 5.758979009768921e+261;
        bool r10253 = r10251 <= r10252;
        float r10254 = r10243 + r10249;
        float r10255 = sqrt(r10254);
        float r10256 = r10255 * r10255;
        float r10257 = r10234 * r10256;
        float r10258 = 0;
        float r10259 = r10253 ? r10257 : r10258;
        return r10259;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r10260 = c0;
        double r10261 = 2;
        double r10262 = w;
        double r10263 = r10261 * r10262;
        double r10264 = r10260 / r10263;
        double r10265 = d;
        double r10266 = r10265 * r10265;
        double r10267 = r10260 * r10266;
        double r10268 = h;
        double r10269 = r10262 * r10268;
        double r10270 = D;
        double r10271 = r10270 * r10270;
        double r10272 = r10269 * r10271;
        double r10273 = r10267 / r10272;
        double r10274 = sqrt(r10273);
        double r10275 = r10273 * r10273;
        double r10276 = M;
        double r10277 = r10276 * r10276;
        double r10278 = r10275 - r10277;
        double r10279 = sqrt(r10278);
        double r10280 = fma(r10274, r10274, r10279);
        double r10281 = r10264 * r10280;
        double r10282 = 5.758979009768921e+261;
        bool r10283 = r10281 <= r10282;
        double r10284 = r10273 + r10279;
        double r10285 = sqrt(r10284);
        double r10286 = r10285 * r10285;
        double r10287 = r10264 * r10286;
        double r10288 = 0;
        double r10289 = r10283 ? r10287 : r10288;
        return r10289;
}

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 r10290, r10291, r10292, r10293, r10294, r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7504);
        mpfr_init(r10290);
        mpfr_init_set_str(r10291, "2", 10, MPFR_RNDN);
        mpfr_init(r10292);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init(r10305);
        mpfr_init(r10306);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10290, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10292, w, MPFR_RNDN);
        mpfr_mul(r10293, r10291, r10292, MPFR_RNDN);
        mpfr_div(r10294, r10290, r10293, MPFR_RNDN);
        mpfr_set_d(r10295, d, MPFR_RNDN);
        mpfr_mul(r10296, r10295, r10295, MPFR_RNDN);
        mpfr_mul(r10297, r10290, r10296, MPFR_RNDN);
        mpfr_set_d(r10298, h, MPFR_RNDN);
        mpfr_mul(r10299, r10292, r10298, MPFR_RNDN);
        mpfr_set_d(r10300, D, MPFR_RNDN);
        mpfr_mul(r10301, r10300, r10300, MPFR_RNDN);
        mpfr_mul(r10302, r10299, r10301, MPFR_RNDN);
        mpfr_div(r10303, r10297, r10302, MPFR_RNDN);
        mpfr_mul(r10304, r10303, r10303, MPFR_RNDN);
        mpfr_set_d(r10305, M, MPFR_RNDN);
        mpfr_mul(r10306, r10305, r10305, MPFR_RNDN);
        mpfr_sub(r10307, r10304, r10306, MPFR_RNDN);
        mpfr_sqrt(r10308, r10307, MPFR_RNDN);
        mpfr_add(r10309, r10303, r10308, MPFR_RNDN);
        mpfr_mul(r10310, r10294, r10309, MPFR_RNDN);
        return mpfr_get_d(r10310, MPFR_RNDN);
}

static mpfr_t r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321, r10322, r10323, r10324, r10325, r10326, r10327, r10328, r10329, r10330, r10331, r10332, r10333, r10334, r10335, r10336, r10337, r10338, r10339, r10340;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r10311);
        mpfr_init_set_str(r10312, "2", 10, MPFR_RNDN);
        mpfr_init(r10313);
        mpfr_init(r10314);
        mpfr_init(r10315);
        mpfr_init(r10316);
        mpfr_init(r10317);
        mpfr_init(r10318);
        mpfr_init(r10319);
        mpfr_init(r10320);
        mpfr_init(r10321);
        mpfr_init(r10322);
        mpfr_init(r10323);
        mpfr_init(r10324);
        mpfr_init(r10325);
        mpfr_init(r10326);
        mpfr_init(r10327);
        mpfr_init(r10328);
        mpfr_init(r10329);
        mpfr_init(r10330);
        mpfr_init(r10331);
        mpfr_init(r10332);
        mpfr_init_set_str(r10333, "5.758979009768921e+261", 10, MPFR_RNDN);
        mpfr_init(r10334);
        mpfr_init(r10335);
        mpfr_init(r10336);
        mpfr_init(r10337);
        mpfr_init(r10338);
        mpfr_init_set_str(r10339, "0", 10, MPFR_RNDN);
        mpfr_init(r10340);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10311, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10313, w, MPFR_RNDN);
        mpfr_mul(r10314, r10312, r10313, MPFR_RNDN);
        mpfr_div(r10315, r10311, r10314, MPFR_RNDN);
        mpfr_set_d(r10316, d, MPFR_RNDN);
        mpfr_mul(r10317, r10316, r10316, MPFR_RNDN);
        mpfr_mul(r10318, r10311, r10317, MPFR_RNDN);
        mpfr_set_d(r10319, h, MPFR_RNDN);
        mpfr_mul(r10320, r10313, r10319, MPFR_RNDN);
        mpfr_set_d(r10321, D, MPFR_RNDN);
        mpfr_mul(r10322, r10321, r10321, MPFR_RNDN);
        mpfr_mul(r10323, r10320, r10322, MPFR_RNDN);
        mpfr_div(r10324, r10318, r10323, MPFR_RNDN);
        mpfr_sqrt(r10325, r10324, MPFR_RNDN);
        mpfr_mul(r10326, r10324, r10324, MPFR_RNDN);
        mpfr_set_d(r10327, M, MPFR_RNDN);
        mpfr_mul(r10328, r10327, r10327, MPFR_RNDN);
        mpfr_sub(r10329, r10326, r10328, MPFR_RNDN);
        mpfr_sqrt(r10330, r10329, MPFR_RNDN);
        mpfr_fma(r10331, r10325, r10325, r10330, MPFR_RNDN);
        mpfr_mul(r10332, r10315, r10331, MPFR_RNDN);
        ;
        mpfr_set_si(r10334, mpfr_cmp(r10332, r10333) <= 0, MPFR_RNDN);
        mpfr_add(r10335, r10324, r10330, MPFR_RNDN);
        mpfr_sqrt(r10336, r10335, MPFR_RNDN);
        mpfr_mul(r10337, r10336, r10336, MPFR_RNDN);
        mpfr_mul(r10338, r10315, r10337, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10334, MPFR_RNDN)) { mpfr_set(r10340, r10338, MPFR_RNDN); } else { mpfr_set(r10340, r10339, MPFR_RNDN); };
        return mpfr_get_d(r10340, MPFR_RNDN);
}

static mpfr_t r10341, r10342, r10343, r10344, r10345, r10346, r10347, r10348, r10349, r10350, r10351, r10352, r10353, r10354, r10355, r10356, r10357, r10358, r10359, r10360, r10361, r10362, r10363, r10364, r10365, r10366, r10367, r10368, r10369, r10370;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r10341);
        mpfr_init_set_str(r10342, "2", 10, MPFR_RNDN);
        mpfr_init(r10343);
        mpfr_init(r10344);
        mpfr_init(r10345);
        mpfr_init(r10346);
        mpfr_init(r10347);
        mpfr_init(r10348);
        mpfr_init(r10349);
        mpfr_init(r10350);
        mpfr_init(r10351);
        mpfr_init(r10352);
        mpfr_init(r10353);
        mpfr_init(r10354);
        mpfr_init(r10355);
        mpfr_init(r10356);
        mpfr_init(r10357);
        mpfr_init(r10358);
        mpfr_init(r10359);
        mpfr_init(r10360);
        mpfr_init(r10361);
        mpfr_init(r10362);
        mpfr_init_set_str(r10363, "5.758979009768921e+261", 10, MPFR_RNDN);
        mpfr_init(r10364);
        mpfr_init(r10365);
        mpfr_init(r10366);
        mpfr_init(r10367);
        mpfr_init(r10368);
        mpfr_init_set_str(r10369, "0", 10, MPFR_RNDN);
        mpfr_init(r10370);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r10341, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r10343, w, MPFR_RNDN);
        mpfr_mul(r10344, r10342, r10343, MPFR_RNDN);
        mpfr_div(r10345, r10341, r10344, MPFR_RNDN);
        mpfr_set_d(r10346, d, MPFR_RNDN);
        mpfr_mul(r10347, r10346, r10346, MPFR_RNDN);
        mpfr_mul(r10348, r10341, r10347, MPFR_RNDN);
        mpfr_set_d(r10349, h, MPFR_RNDN);
        mpfr_mul(r10350, r10343, r10349, MPFR_RNDN);
        mpfr_set_d(r10351, D, MPFR_RNDN);
        mpfr_mul(r10352, r10351, r10351, MPFR_RNDN);
        mpfr_mul(r10353, r10350, r10352, MPFR_RNDN);
        mpfr_div(r10354, r10348, r10353, MPFR_RNDN);
        mpfr_sqrt(r10355, r10354, MPFR_RNDN);
        mpfr_mul(r10356, r10354, r10354, MPFR_RNDN);
        mpfr_set_d(r10357, M, MPFR_RNDN);
        mpfr_mul(r10358, r10357, r10357, MPFR_RNDN);
        mpfr_sub(r10359, r10356, r10358, MPFR_RNDN);
        mpfr_sqrt(r10360, r10359, MPFR_RNDN);
        mpfr_fma(r10361, r10355, r10355, r10360, MPFR_RNDN);
        mpfr_mul(r10362, r10345, r10361, MPFR_RNDN);
        ;
        mpfr_set_si(r10364, mpfr_cmp(r10362, r10363) <= 0, MPFR_RNDN);
        mpfr_add(r10365, r10354, r10360, MPFR_RNDN);
        mpfr_sqrt(r10366, r10365, MPFR_RNDN);
        mpfr_mul(r10367, r10366, r10366, MPFR_RNDN);
        mpfr_mul(r10368, r10345, r10367, MPFR_RNDN);
        ;
        if (mpfr_get_si(r10364, MPFR_RNDN)) { mpfr_set(r10370, r10368, MPFR_RNDN); } else { mpfr_set(r10370, r10369, MPFR_RNDN); };
        return mpfr_get_d(r10370, MPFR_RNDN);
}

