#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 r26264 = c0;
        float r26265 = 2;
        float r26266 = w;
        float r26267 = r26265 * r26266;
        float r26268 = r26264 / r26267;
        float r26269 = d;
        float r26270 = r26269 * r26269;
        float r26271 = r26264 * r26270;
        float r26272 = h;
        float r26273 = r26266 * r26272;
        float r26274 = D;
        float r26275 = r26274 * r26274;
        float r26276 = r26273 * r26275;
        float r26277 = r26271 / r26276;
        float r26278 = r26277 * r26277;
        float r26279 = M;
        float r26280 = r26279 * r26279;
        float r26281 = r26278 - r26280;
        float r26282 = sqrt(r26281);
        float r26283 = r26277 + r26282;
        float r26284 = r26268 * r26283;
        return r26284;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r26285 = c0;
        double r26286 = 2;
        double r26287 = w;
        double r26288 = r26286 * r26287;
        double r26289 = r26285 / r26288;
        double r26290 = d;
        double r26291 = r26290 * r26290;
        double r26292 = r26285 * r26291;
        double r26293 = h;
        double r26294 = r26287 * r26293;
        double r26295 = D;
        double r26296 = r26295 * r26295;
        double r26297 = r26294 * r26296;
        double r26298 = r26292 / r26297;
        double r26299 = r26298 * r26298;
        double r26300 = M;
        double r26301 = r26300 * r26300;
        double r26302 = r26299 - r26301;
        double r26303 = sqrt(r26302);
        double r26304 = r26298 + r26303;
        double r26305 = r26289 * r26304;
        return r26305;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r26306 = c0;
        float r26307 = 2;
        float r26308 = w;
        float r26309 = r26307 * r26308;
        float r26310 = r26306 / r26309;
        float r26311 = r26306 / r26308;
        float r26312 = h;
        float r26313 = r26311 / r26312;
        float r26314 = d;
        float r26315 = D;
        float r26316 = r26314 / r26315;
        float r26317 = r26316 * r26316;
        float r26318 = r26313 * r26317;
        float r26319 = M;
        float r26320 = r26319 * r26319;
        float r26321 = -r26320;
        float r26322 = fma(r26318, r26318, r26321);
        float r26323 = sqrt(r26322);
        float r26324 = r26323 + r26318;
        float r26325 = 3;
        float r26326 = pow(r26324, r26325);
        float r26327 = cbrt(r26326);
        float r26328 = r26310 * r26327;
        float r26329 = -4.9273432391899496e-70;
        bool r26330 = r26328 <= r26329;
        float r26331 = 2.44330467261124e-188;
        bool r26332 = r26328 <= r26331;
        float r26333 = r26319 / r26308;
        float r26334 = r26333 * r26306;
        float r26335 = r26319 / r26307;
        float r26336 = r26334 * r26335;
        float r26337 = r26306 / r26312;
        float r26338 = r26337 / r26308;
        float r26339 = r26338 * r26317;
        float r26340 = -r26319;
        float r26341 = r26319 * r26340;
        float r26342 = fma(r26339, r26339, r26341);
        float r26343 = sqrt(r26342);
        float r26344 = r26339 - r26343;
        float r26345 = r26336 / r26344;
        float r26346 = 1.2354806727237655e+207;
        bool r26347 = r26328 <= r26346;
        float r26348 = 0;
        float r26349 = r26347 ? r26328 : r26348;
        float r26350 = r26332 ? r26345 : r26349;
        float r26351 = r26330 ? r26328 : r26350;
        return r26351;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r26352 = c0;
        double r26353 = 2;
        double r26354 = w;
        double r26355 = r26353 * r26354;
        double r26356 = r26352 / r26355;
        double r26357 = r26352 / r26354;
        double r26358 = h;
        double r26359 = r26357 / r26358;
        double r26360 = d;
        double r26361 = D;
        double r26362 = r26360 / r26361;
        double r26363 = r26362 * r26362;
        double r26364 = r26359 * r26363;
        double r26365 = M;
        double r26366 = r26365 * r26365;
        double r26367 = -r26366;
        double r26368 = fma(r26364, r26364, r26367);
        double r26369 = sqrt(r26368);
        double r26370 = r26369 + r26364;
        double r26371 = 3;
        double r26372 = pow(r26370, r26371);
        double r26373 = cbrt(r26372);
        double r26374 = r26356 * r26373;
        double r26375 = -4.9273432391899496e-70;
        bool r26376 = r26374 <= r26375;
        double r26377 = 2.44330467261124e-188;
        bool r26378 = r26374 <= r26377;
        double r26379 = r26365 / r26354;
        double r26380 = r26379 * r26352;
        double r26381 = r26365 / r26353;
        double r26382 = r26380 * r26381;
        double r26383 = r26352 / r26358;
        double r26384 = r26383 / r26354;
        double r26385 = r26384 * r26363;
        double r26386 = -r26365;
        double r26387 = r26365 * r26386;
        double r26388 = fma(r26385, r26385, r26387);
        double r26389 = sqrt(r26388);
        double r26390 = r26385 - r26389;
        double r26391 = r26382 / r26390;
        double r26392 = 1.2354806727237655e+207;
        bool r26393 = r26374 <= r26392;
        double r26394 = 0;
        double r26395 = r26393 ? r26374 : r26394;
        double r26396 = r26378 ? r26391 : r26395;
        double r26397 = r26376 ? r26374 : r26396;
        return r26397;
}

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 r26398, r26399, r26400, r26401, r26402, r26403, r26404, r26405, r26406, r26407, r26408, r26409, r26410, r26411, r26412, r26413, r26414, r26415, r26416, r26417, r26418;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26398);
        mpfr_init_set_str(r26399, "2", 10, MPFR_RNDN);
        mpfr_init(r26400);
        mpfr_init(r26401);
        mpfr_init(r26402);
        mpfr_init(r26403);
        mpfr_init(r26404);
        mpfr_init(r26405);
        mpfr_init(r26406);
        mpfr_init(r26407);
        mpfr_init(r26408);
        mpfr_init(r26409);
        mpfr_init(r26410);
        mpfr_init(r26411);
        mpfr_init(r26412);
        mpfr_init(r26413);
        mpfr_init(r26414);
        mpfr_init(r26415);
        mpfr_init(r26416);
        mpfr_init(r26417);
        mpfr_init(r26418);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26398, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26400, w, MPFR_RNDN);
        mpfr_mul(r26401, r26399, r26400, MPFR_RNDN);
        mpfr_div(r26402, r26398, r26401, MPFR_RNDN);
        mpfr_set_d(r26403, d, MPFR_RNDN);
        mpfr_mul(r26404, r26403, r26403, MPFR_RNDN);
        mpfr_mul(r26405, r26398, r26404, MPFR_RNDN);
        mpfr_set_d(r26406, h, MPFR_RNDN);
        mpfr_mul(r26407, r26400, r26406, MPFR_RNDN);
        mpfr_set_d(r26408, D, MPFR_RNDN);
        mpfr_mul(r26409, r26408, r26408, MPFR_RNDN);
        mpfr_mul(r26410, r26407, r26409, MPFR_RNDN);
        mpfr_div(r26411, r26405, r26410, MPFR_RNDN);
        mpfr_mul(r26412, r26411, r26411, MPFR_RNDN);
        mpfr_set_d(r26413, M, MPFR_RNDN);
        mpfr_mul(r26414, r26413, r26413, MPFR_RNDN);
        mpfr_sub(r26415, r26412, r26414, MPFR_RNDN);
        mpfr_sqrt(r26416, r26415, MPFR_RNDN);
        mpfr_add(r26417, r26411, r26416, MPFR_RNDN);
        mpfr_mul(r26418, r26402, r26417, MPFR_RNDN);
        return mpfr_get_d(r26418, MPFR_RNDN);
}

static mpfr_t r26419, r26420, r26421, r26422, r26423, r26424, r26425, r26426, r26427, r26428, r26429, r26430, r26431, r26432, r26433, r26434, r26435, r26436, r26437, r26438, r26439, r26440, r26441, r26442, r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450, r26451, r26452, r26453, r26454, r26455, r26456, r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26419);
        mpfr_init_set_str(r26420, "2", 10, MPFR_RNDN);
        mpfr_init(r26421);
        mpfr_init(r26422);
        mpfr_init(r26423);
        mpfr_init(r26424);
        mpfr_init(r26425);
        mpfr_init(r26426);
        mpfr_init(r26427);
        mpfr_init(r26428);
        mpfr_init(r26429);
        mpfr_init(r26430);
        mpfr_init(r26431);
        mpfr_init(r26432);
        mpfr_init(r26433);
        mpfr_init(r26434);
        mpfr_init(r26435);
        mpfr_init(r26436);
        mpfr_init(r26437);
        mpfr_init_set_str(r26438, "3", 10, MPFR_RNDN);
        mpfr_init(r26439);
        mpfr_init(r26440);
        mpfr_init(r26441);
        mpfr_init_set_str(r26442, "-4.9273432391899496e-70", 10, MPFR_RNDN);
        mpfr_init(r26443);
        mpfr_init_set_str(r26444, "2.44330467261124e-188", 10, MPFR_RNDN);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init(r26447);
        mpfr_init(r26448);
        mpfr_init(r26449);
        mpfr_init(r26450);
        mpfr_init(r26451);
        mpfr_init(r26452);
        mpfr_init(r26453);
        mpfr_init(r26454);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init(r26457);
        mpfr_init(r26458);
        mpfr_init_set_str(r26459, "1.2354806727237655e+207", 10, MPFR_RNDN);
        mpfr_init(r26460);
        mpfr_init_set_str(r26461, "0", 10, MPFR_RNDN);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26419, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26421, w, MPFR_RNDN);
        mpfr_mul(r26422, r26420, r26421, MPFR_RNDN);
        mpfr_div(r26423, r26419, r26422, MPFR_RNDN);
        mpfr_div(r26424, r26419, r26421, MPFR_RNDN);
        mpfr_set_d(r26425, h, MPFR_RNDN);
        mpfr_div(r26426, r26424, r26425, MPFR_RNDN);
        mpfr_set_d(r26427, d, MPFR_RNDN);
        mpfr_set_d(r26428, D, MPFR_RNDN);
        mpfr_div(r26429, r26427, r26428, MPFR_RNDN);
        mpfr_mul(r26430, r26429, r26429, MPFR_RNDN);
        mpfr_mul(r26431, r26426, r26430, MPFR_RNDN);
        mpfr_set_d(r26432, M, MPFR_RNDN);
        mpfr_mul(r26433, r26432, r26432, MPFR_RNDN);
        mpfr_neg(r26434, r26433, MPFR_RNDN);
        mpfr_fma(r26435, r26431, r26431, r26434, MPFR_RNDN);
        mpfr_sqrt(r26436, r26435, MPFR_RNDN);
        mpfr_add(r26437, r26436, r26431, MPFR_RNDN);
        ;
        mpfr_pow(r26439, r26437, r26438, MPFR_RNDN);
        mpfr_cbrt(r26440, r26439, MPFR_RNDN);
        mpfr_mul(r26441, r26423, r26440, MPFR_RNDN);
        ;
        mpfr_set_si(r26443, mpfr_cmp(r26441, r26442) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26445, mpfr_cmp(r26441, r26444) <= 0, MPFR_RNDN);
        mpfr_div(r26446, r26432, r26421, MPFR_RNDN);
        mpfr_mul(r26447, r26446, r26419, MPFR_RNDN);
        mpfr_div(r26448, r26432, r26420, MPFR_RNDN);
        mpfr_mul(r26449, r26447, r26448, MPFR_RNDN);
        mpfr_div(r26450, r26419, r26425, MPFR_RNDN);
        mpfr_div(r26451, r26450, r26421, MPFR_RNDN);
        mpfr_mul(r26452, r26451, r26430, MPFR_RNDN);
        mpfr_neg(r26453, r26432, MPFR_RNDN);
        mpfr_mul(r26454, r26432, r26453, MPFR_RNDN);
        mpfr_fma(r26455, r26452, r26452, r26454, MPFR_RNDN);
        mpfr_sqrt(r26456, r26455, MPFR_RNDN);
        mpfr_sub(r26457, r26452, r26456, MPFR_RNDN);
        mpfr_div(r26458, r26449, r26457, MPFR_RNDN);
        ;
        mpfr_set_si(r26460, mpfr_cmp(r26441, r26459) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26460, MPFR_RNDN)) { mpfr_set(r26462, r26441, MPFR_RNDN); } else { mpfr_set(r26462, r26461, MPFR_RNDN); };
        if (mpfr_get_si(r26445, MPFR_RNDN)) { mpfr_set(r26463, r26458, MPFR_RNDN); } else { mpfr_set(r26463, r26462, MPFR_RNDN); };
        if (mpfr_get_si(r26443, MPFR_RNDN)) { mpfr_set(r26464, r26441, MPFR_RNDN); } else { mpfr_set(r26464, r26463, MPFR_RNDN); };
        return mpfr_get_d(r26464, MPFR_RNDN);
}

static mpfr_t r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26465);
        mpfr_init_set_str(r26466, "2", 10, MPFR_RNDN);
        mpfr_init(r26467);
        mpfr_init(r26468);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init(r26472);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init_set_str(r26484, "3", 10, MPFR_RNDN);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init_set_str(r26488, "-4.9273432391899496e-70", 10, MPFR_RNDN);
        mpfr_init(r26489);
        mpfr_init_set_str(r26490, "2.44330467261124e-188", 10, MPFR_RNDN);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init(r26495);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init_set_str(r26505, "1.2354806727237655e+207", 10, MPFR_RNDN);
        mpfr_init(r26506);
        mpfr_init_set_str(r26507, "0", 10, MPFR_RNDN);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26465, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26467, w, MPFR_RNDN);
        mpfr_mul(r26468, r26466, r26467, MPFR_RNDN);
        mpfr_div(r26469, r26465, r26468, MPFR_RNDN);
        mpfr_div(r26470, r26465, r26467, MPFR_RNDN);
        mpfr_set_d(r26471, h, MPFR_RNDN);
        mpfr_div(r26472, r26470, r26471, MPFR_RNDN);
        mpfr_set_d(r26473, d, MPFR_RNDN);
        mpfr_set_d(r26474, D, MPFR_RNDN);
        mpfr_div(r26475, r26473, r26474, MPFR_RNDN);
        mpfr_mul(r26476, r26475, r26475, MPFR_RNDN);
        mpfr_mul(r26477, r26472, r26476, MPFR_RNDN);
        mpfr_set_d(r26478, M, MPFR_RNDN);
        mpfr_mul(r26479, r26478, r26478, MPFR_RNDN);
        mpfr_neg(r26480, r26479, MPFR_RNDN);
        mpfr_fma(r26481, r26477, r26477, r26480, MPFR_RNDN);
        mpfr_sqrt(r26482, r26481, MPFR_RNDN);
        mpfr_add(r26483, r26482, r26477, MPFR_RNDN);
        ;
        mpfr_pow(r26485, r26483, r26484, MPFR_RNDN);
        mpfr_cbrt(r26486, r26485, MPFR_RNDN);
        mpfr_mul(r26487, r26469, r26486, MPFR_RNDN);
        ;
        mpfr_set_si(r26489, mpfr_cmp(r26487, r26488) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26491, mpfr_cmp(r26487, r26490) <= 0, MPFR_RNDN);
        mpfr_div(r26492, r26478, r26467, MPFR_RNDN);
        mpfr_mul(r26493, r26492, r26465, MPFR_RNDN);
        mpfr_div(r26494, r26478, r26466, MPFR_RNDN);
        mpfr_mul(r26495, r26493, r26494, MPFR_RNDN);
        mpfr_div(r26496, r26465, r26471, MPFR_RNDN);
        mpfr_div(r26497, r26496, r26467, MPFR_RNDN);
        mpfr_mul(r26498, r26497, r26476, MPFR_RNDN);
        mpfr_neg(r26499, r26478, MPFR_RNDN);
        mpfr_mul(r26500, r26478, r26499, MPFR_RNDN);
        mpfr_fma(r26501, r26498, r26498, r26500, MPFR_RNDN);
        mpfr_sqrt(r26502, r26501, MPFR_RNDN);
        mpfr_sub(r26503, r26498, r26502, MPFR_RNDN);
        mpfr_div(r26504, r26495, r26503, MPFR_RNDN);
        ;
        mpfr_set_si(r26506, mpfr_cmp(r26487, r26505) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26506, MPFR_RNDN)) { mpfr_set(r26508, r26487, MPFR_RNDN); } else { mpfr_set(r26508, r26507, MPFR_RNDN); };
        if (mpfr_get_si(r26491, MPFR_RNDN)) { mpfr_set(r26509, r26504, MPFR_RNDN); } else { mpfr_set(r26509, r26508, MPFR_RNDN); };
        if (mpfr_get_si(r26489, MPFR_RNDN)) { mpfr_set(r26510, r26487, MPFR_RNDN); } else { mpfr_set(r26510, r26509, MPFR_RNDN); };
        return mpfr_get_d(r26510, MPFR_RNDN);
}

