#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 r26444 = c0;
        float r26445 = 2;
        float r26446 = w;
        float r26447 = r26445 * r26446;
        float r26448 = r26444 / r26447;
        float r26449 = d;
        float r26450 = r26449 * r26449;
        float r26451 = r26444 * r26450;
        float r26452 = h;
        float r26453 = r26446 * r26452;
        float r26454 = D;
        float r26455 = r26454 * r26454;
        float r26456 = r26453 * r26455;
        float r26457 = r26451 / r26456;
        float r26458 = r26457 * r26457;
        float r26459 = M;
        float r26460 = r26459 * r26459;
        float r26461 = r26458 - r26460;
        float r26462 = sqrt(r26461);
        float r26463 = r26457 + r26462;
        float r26464 = r26448 * r26463;
        return r26464;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r26465 = c0;
        double r26466 = 2;
        double r26467 = w;
        double r26468 = r26466 * r26467;
        double r26469 = r26465 / r26468;
        double r26470 = d;
        double r26471 = r26470 * r26470;
        double r26472 = r26465 * r26471;
        double r26473 = h;
        double r26474 = r26467 * r26473;
        double r26475 = D;
        double r26476 = r26475 * r26475;
        double r26477 = r26474 * r26476;
        double r26478 = r26472 / r26477;
        double r26479 = r26478 * r26478;
        double r26480 = M;
        double r26481 = r26480 * r26480;
        double r26482 = r26479 - r26481;
        double r26483 = sqrt(r26482);
        double r26484 = r26478 + r26483;
        double r26485 = r26469 * r26484;
        return r26485;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r26486 = d;
        float r26487 = D;
        float r26488 = r26486 / r26487;
        float r26489 = -0.000161641364718872;
        bool r26490 = r26488 <= r26489;
        float r26491 = 0;
        float r26492 = -9.641064683021772e-81;
        bool r26493 = r26488 <= r26492;
        float r26494 = c0;
        float r26495 = 2;
        float r26496 = w;
        float r26497 = r26495 * r26496;
        float r26498 = r26494 / r26497;
        float r26499 = r26494 / r26496;
        float r26500 = h;
        float r26501 = r26499 / r26500;
        float r26502 = r26488 * r26488;
        float r26503 = r26501 * r26502;
        float r26504 = M;
        float r26505 = r26504 * r26504;
        float r26506 = -r26505;
        float r26507 = fma(r26503, r26503, r26506);
        float r26508 = sqrt(r26507);
        float r26509 = r26508 + r26503;
        float r26510 = 3;
        float r26511 = pow(r26509, r26510);
        float r26512 = cbrt(r26511);
        float r26513 = r26498 * r26512;
        float r26514 = 1.3177693782638423e-165;
        bool r26515 = r26488 <= r26514;
        float r26516 = 5.908459219924072e-32;
        bool r26517 = r26488 <= r26516;
        float r26518 = 101306240890872.27;
        bool r26519 = r26488 <= r26518;
        float r26520 = fabs(r26504);
        float r26521 = r26500 * r26496;
        float r26522 = r26494 / r26521;
        float r26523 = r26522 * r26502;
        float r26524 = -r26504;
        float r26525 = r26524 * r26504;
        float r26526 = fma(r26523, r26523, r26525);
        float r26527 = sqrt(r26526);
        float r26528 = r26523 - r26527;
        float r26529 = r26520 / r26528;
        float r26530 = r26520 * r26529;
        float r26531 = r26498 * r26530;
        float r26532 = r26519 ? r26531 : r26491;
        float r26533 = r26517 ? r26513 : r26532;
        float r26534 = r26515 ? r26491 : r26533;
        float r26535 = r26493 ? r26513 : r26534;
        float r26536 = r26490 ? r26491 : r26535;
        return r26536;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r26537 = d;
        double r26538 = D;
        double r26539 = r26537 / r26538;
        double r26540 = -0.000161641364718872;
        bool r26541 = r26539 <= r26540;
        double r26542 = 0;
        double r26543 = -9.641064683021772e-81;
        bool r26544 = r26539 <= r26543;
        double r26545 = c0;
        double r26546 = 2;
        double r26547 = w;
        double r26548 = r26546 * r26547;
        double r26549 = r26545 / r26548;
        double r26550 = r26545 / r26547;
        double r26551 = h;
        double r26552 = r26550 / r26551;
        double r26553 = r26539 * r26539;
        double r26554 = r26552 * r26553;
        double r26555 = M;
        double r26556 = r26555 * r26555;
        double r26557 = -r26556;
        double r26558 = fma(r26554, r26554, r26557);
        double r26559 = sqrt(r26558);
        double r26560 = r26559 + r26554;
        double r26561 = 3;
        double r26562 = pow(r26560, r26561);
        double r26563 = cbrt(r26562);
        double r26564 = r26549 * r26563;
        double r26565 = 1.3177693782638423e-165;
        bool r26566 = r26539 <= r26565;
        double r26567 = 5.908459219924072e-32;
        bool r26568 = r26539 <= r26567;
        double r26569 = 101306240890872.27;
        bool r26570 = r26539 <= r26569;
        double r26571 = fabs(r26555);
        double r26572 = r26551 * r26547;
        double r26573 = r26545 / r26572;
        double r26574 = r26573 * r26553;
        double r26575 = -r26555;
        double r26576 = r26575 * r26555;
        double r26577 = fma(r26574, r26574, r26576);
        double r26578 = sqrt(r26577);
        double r26579 = r26574 - r26578;
        double r26580 = r26571 / r26579;
        double r26581 = r26571 * r26580;
        double r26582 = r26549 * r26581;
        double r26583 = r26570 ? r26582 : r26542;
        double r26584 = r26568 ? r26564 : r26583;
        double r26585 = r26566 ? r26542 : r26584;
        double r26586 = r26544 ? r26564 : r26585;
        double r26587 = r26541 ? r26542 : r26586;
        return r26587;
}

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 r26588, r26589, r26590, r26591, r26592, r26593, r26594, r26595, r26596, r26597, r26598, r26599, r26600, r26601, r26602, r26603, r26604, r26605, r26606, r26607, r26608;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26588);
        mpfr_init_set_str(r26589, "2", 10, MPFR_RNDN);
        mpfr_init(r26590);
        mpfr_init(r26591);
        mpfr_init(r26592);
        mpfr_init(r26593);
        mpfr_init(r26594);
        mpfr_init(r26595);
        mpfr_init(r26596);
        mpfr_init(r26597);
        mpfr_init(r26598);
        mpfr_init(r26599);
        mpfr_init(r26600);
        mpfr_init(r26601);
        mpfr_init(r26602);
        mpfr_init(r26603);
        mpfr_init(r26604);
        mpfr_init(r26605);
        mpfr_init(r26606);
        mpfr_init(r26607);
        mpfr_init(r26608);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26588, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26590, w, MPFR_RNDN);
        mpfr_mul(r26591, r26589, r26590, MPFR_RNDN);
        mpfr_div(r26592, r26588, r26591, MPFR_RNDN);
        mpfr_set_d(r26593, d, MPFR_RNDN);
        mpfr_mul(r26594, r26593, r26593, MPFR_RNDN);
        mpfr_mul(r26595, r26588, r26594, MPFR_RNDN);
        mpfr_set_d(r26596, h, MPFR_RNDN);
        mpfr_mul(r26597, r26590, r26596, MPFR_RNDN);
        mpfr_set_d(r26598, D, MPFR_RNDN);
        mpfr_mul(r26599, r26598, r26598, MPFR_RNDN);
        mpfr_mul(r26600, r26597, r26599, MPFR_RNDN);
        mpfr_div(r26601, r26595, r26600, MPFR_RNDN);
        mpfr_mul(r26602, r26601, r26601, MPFR_RNDN);
        mpfr_set_d(r26603, M, MPFR_RNDN);
        mpfr_mul(r26604, r26603, r26603, MPFR_RNDN);
        mpfr_sub(r26605, r26602, r26604, MPFR_RNDN);
        mpfr_sqrt(r26606, r26605, MPFR_RNDN);
        mpfr_add(r26607, r26601, r26606, MPFR_RNDN);
        mpfr_mul(r26608, r26592, r26607, MPFR_RNDN);
        return mpfr_get_d(r26608, MPFR_RNDN);
}

static mpfr_t r26609, r26610, r26611, r26612, r26613, r26614, r26615, r26616, r26617, r26618, r26619, r26620, r26621, r26622, r26623, r26624, r26625, r26626, r26627, r26628, r26629, r26630, r26631, r26632, r26633, r26634, r26635, r26636, r26637, r26638, r26639, r26640, r26641, r26642, r26643, r26644, r26645, r26646, r26647, r26648, r26649, r26650, r26651, r26652, r26653, r26654, r26655, r26656, r26657, r26658, r26659;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26609);
        mpfr_init(r26610);
        mpfr_init(r26611);
        mpfr_init_set_str(r26612, "-0.000161641364718872", 10, MPFR_RNDN);
        mpfr_init(r26613);
        mpfr_init_set_str(r26614, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26615, "-9.641064683021772e-81", 10, MPFR_RNDN);
        mpfr_init(r26616);
        mpfr_init(r26617);
        mpfr_init_set_str(r26618, "2", 10, MPFR_RNDN);
        mpfr_init(r26619);
        mpfr_init(r26620);
        mpfr_init(r26621);
        mpfr_init(r26622);
        mpfr_init(r26623);
        mpfr_init(r26624);
        mpfr_init(r26625);
        mpfr_init(r26626);
        mpfr_init(r26627);
        mpfr_init(r26628);
        mpfr_init(r26629);
        mpfr_init(r26630);
        mpfr_init(r26631);
        mpfr_init(r26632);
        mpfr_init_set_str(r26633, "3", 10, MPFR_RNDN);
        mpfr_init(r26634);
        mpfr_init(r26635);
        mpfr_init(r26636);
        mpfr_init_set_str(r26637, "1.3177693782638423e-165", 10, MPFR_RNDN);
        mpfr_init(r26638);
        mpfr_init_set_str(r26639, "5.908459219924072e-32", 10, MPFR_RNDN);
        mpfr_init(r26640);
        mpfr_init_set_str(r26641, "101306240890872.27", 10, MPFR_RNDN);
        mpfr_init(r26642);
        mpfr_init(r26643);
        mpfr_init(r26644);
        mpfr_init(r26645);
        mpfr_init(r26646);
        mpfr_init(r26647);
        mpfr_init(r26648);
        mpfr_init(r26649);
        mpfr_init(r26650);
        mpfr_init(r26651);
        mpfr_init(r26652);
        mpfr_init(r26653);
        mpfr_init(r26654);
        mpfr_init(r26655);
        mpfr_init(r26656);
        mpfr_init(r26657);
        mpfr_init(r26658);
        mpfr_init(r26659);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26609, d, MPFR_RNDN);
        mpfr_set_d(r26610, D, MPFR_RNDN);
        mpfr_div(r26611, r26609, r26610, MPFR_RNDN);
        ;
        mpfr_set_si(r26613, mpfr_cmp(r26611, r26612) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r26616, mpfr_cmp(r26611, r26615) <= 0, MPFR_RNDN);
        mpfr_set_d(r26617, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26619, w, MPFR_RNDN);
        mpfr_mul(r26620, r26618, r26619, MPFR_RNDN);
        mpfr_div(r26621, r26617, r26620, MPFR_RNDN);
        mpfr_div(r26622, r26617, r26619, MPFR_RNDN);
        mpfr_set_d(r26623, h, MPFR_RNDN);
        mpfr_div(r26624, r26622, r26623, MPFR_RNDN);
        mpfr_mul(r26625, r26611, r26611, MPFR_RNDN);
        mpfr_mul(r26626, r26624, r26625, MPFR_RNDN);
        mpfr_set_d(r26627, M, MPFR_RNDN);
        mpfr_mul(r26628, r26627, r26627, MPFR_RNDN);
        mpfr_neg(r26629, r26628, MPFR_RNDN);
        mpfr_fma(r26630, r26626, r26626, r26629, MPFR_RNDN);
        mpfr_sqrt(r26631, r26630, MPFR_RNDN);
        mpfr_add(r26632, r26631, r26626, MPFR_RNDN);
        ;
        mpfr_pow(r26634, r26632, r26633, MPFR_RNDN);
        mpfr_cbrt(r26635, r26634, MPFR_RNDN);
        mpfr_mul(r26636, r26621, r26635, MPFR_RNDN);
        ;
        mpfr_set_si(r26638, mpfr_cmp(r26611, r26637) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26640, mpfr_cmp(r26611, r26639) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26642, mpfr_cmp(r26611, r26641) <= 0, MPFR_RNDN);
        mpfr_abs(r26643, r26627, MPFR_RNDN);
        mpfr_mul(r26644, r26623, r26619, MPFR_RNDN);
        mpfr_div(r26645, r26617, r26644, MPFR_RNDN);
        mpfr_mul(r26646, r26645, r26625, MPFR_RNDN);
        mpfr_neg(r26647, r26627, MPFR_RNDN);
        mpfr_mul(r26648, r26647, r26627, MPFR_RNDN);
        mpfr_fma(r26649, r26646, r26646, r26648, MPFR_RNDN);
        mpfr_sqrt(r26650, r26649, MPFR_RNDN);
        mpfr_sub(r26651, r26646, r26650, MPFR_RNDN);
        mpfr_div(r26652, r26643, r26651, MPFR_RNDN);
        mpfr_mul(r26653, r26643, r26652, MPFR_RNDN);
        mpfr_mul(r26654, r26621, r26653, MPFR_RNDN);
        if (mpfr_get_si(r26642, MPFR_RNDN)) { mpfr_set(r26655, r26654, MPFR_RNDN); } else { mpfr_set(r26655, r26614, MPFR_RNDN); };
        if (mpfr_get_si(r26640, MPFR_RNDN)) { mpfr_set(r26656, r26636, MPFR_RNDN); } else { mpfr_set(r26656, r26655, MPFR_RNDN); };
        if (mpfr_get_si(r26638, MPFR_RNDN)) { mpfr_set(r26657, r26614, MPFR_RNDN); } else { mpfr_set(r26657, r26656, MPFR_RNDN); };
        if (mpfr_get_si(r26616, MPFR_RNDN)) { mpfr_set(r26658, r26636, MPFR_RNDN); } else { mpfr_set(r26658, r26657, MPFR_RNDN); };
        if (mpfr_get_si(r26613, MPFR_RNDN)) { mpfr_set(r26659, r26614, MPFR_RNDN); } else { mpfr_set(r26659, r26658, MPFR_RNDN); };
        return mpfr_get_d(r26659, MPFR_RNDN);
}

static mpfr_t r26660, r26661, r26662, r26663, r26664, r26665, r26666, r26667, r26668, r26669, r26670, r26671, r26672, r26673, r26674, r26675, r26676, r26677, r26678, r26679, r26680, r26681, r26682, r26683, r26684, r26685, r26686, r26687, r26688, r26689, r26690, r26691, r26692, r26693, r26694, r26695, r26696, r26697, r26698, r26699, r26700, r26701, r26702, r26703, r26704, r26705, r26706, r26707, r26708, r26709, r26710;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(7504);
        mpfr_init(r26660);
        mpfr_init(r26661);
        mpfr_init(r26662);
        mpfr_init_set_str(r26663, "-0.000161641364718872", 10, MPFR_RNDN);
        mpfr_init(r26664);
        mpfr_init_set_str(r26665, "0", 10, MPFR_RNDN);
        mpfr_init_set_str(r26666, "-9.641064683021772e-81", 10, MPFR_RNDN);
        mpfr_init(r26667);
        mpfr_init(r26668);
        mpfr_init_set_str(r26669, "2", 10, MPFR_RNDN);
        mpfr_init(r26670);
        mpfr_init(r26671);
        mpfr_init(r26672);
        mpfr_init(r26673);
        mpfr_init(r26674);
        mpfr_init(r26675);
        mpfr_init(r26676);
        mpfr_init(r26677);
        mpfr_init(r26678);
        mpfr_init(r26679);
        mpfr_init(r26680);
        mpfr_init(r26681);
        mpfr_init(r26682);
        mpfr_init(r26683);
        mpfr_init_set_str(r26684, "3", 10, MPFR_RNDN);
        mpfr_init(r26685);
        mpfr_init(r26686);
        mpfr_init(r26687);
        mpfr_init_set_str(r26688, "1.3177693782638423e-165", 10, MPFR_RNDN);
        mpfr_init(r26689);
        mpfr_init_set_str(r26690, "5.908459219924072e-32", 10, MPFR_RNDN);
        mpfr_init(r26691);
        mpfr_init_set_str(r26692, "101306240890872.27", 10, MPFR_RNDN);
        mpfr_init(r26693);
        mpfr_init(r26694);
        mpfr_init(r26695);
        mpfr_init(r26696);
        mpfr_init(r26697);
        mpfr_init(r26698);
        mpfr_init(r26699);
        mpfr_init(r26700);
        mpfr_init(r26701);
        mpfr_init(r26702);
        mpfr_init(r26703);
        mpfr_init(r26704);
        mpfr_init(r26705);
        mpfr_init(r26706);
        mpfr_init(r26707);
        mpfr_init(r26708);
        mpfr_init(r26709);
        mpfr_init(r26710);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26660, d, MPFR_RNDN);
        mpfr_set_d(r26661, D, MPFR_RNDN);
        mpfr_div(r26662, r26660, r26661, MPFR_RNDN);
        ;
        mpfr_set_si(r26664, mpfr_cmp(r26662, r26663) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r26667, mpfr_cmp(r26662, r26666) <= 0, MPFR_RNDN);
        mpfr_set_d(r26668, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26670, w, MPFR_RNDN);
        mpfr_mul(r26671, r26669, r26670, MPFR_RNDN);
        mpfr_div(r26672, r26668, r26671, MPFR_RNDN);
        mpfr_div(r26673, r26668, r26670, MPFR_RNDN);
        mpfr_set_d(r26674, h, MPFR_RNDN);
        mpfr_div(r26675, r26673, r26674, MPFR_RNDN);
        mpfr_mul(r26676, r26662, r26662, MPFR_RNDN);
        mpfr_mul(r26677, r26675, r26676, MPFR_RNDN);
        mpfr_set_d(r26678, M, MPFR_RNDN);
        mpfr_mul(r26679, r26678, r26678, MPFR_RNDN);
        mpfr_neg(r26680, r26679, MPFR_RNDN);
        mpfr_fma(r26681, r26677, r26677, r26680, MPFR_RNDN);
        mpfr_sqrt(r26682, r26681, MPFR_RNDN);
        mpfr_add(r26683, r26682, r26677, MPFR_RNDN);
        ;
        mpfr_pow(r26685, r26683, r26684, MPFR_RNDN);
        mpfr_cbrt(r26686, r26685, MPFR_RNDN);
        mpfr_mul(r26687, r26672, r26686, MPFR_RNDN);
        ;
        mpfr_set_si(r26689, mpfr_cmp(r26662, r26688) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26691, mpfr_cmp(r26662, r26690) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26693, mpfr_cmp(r26662, r26692) <= 0, MPFR_RNDN);
        mpfr_abs(r26694, r26678, MPFR_RNDN);
        mpfr_mul(r26695, r26674, r26670, MPFR_RNDN);
        mpfr_div(r26696, r26668, r26695, MPFR_RNDN);
        mpfr_mul(r26697, r26696, r26676, MPFR_RNDN);
        mpfr_neg(r26698, r26678, MPFR_RNDN);
        mpfr_mul(r26699, r26698, r26678, MPFR_RNDN);
        mpfr_fma(r26700, r26697, r26697, r26699, MPFR_RNDN);
        mpfr_sqrt(r26701, r26700, MPFR_RNDN);
        mpfr_sub(r26702, r26697, r26701, MPFR_RNDN);
        mpfr_div(r26703, r26694, r26702, MPFR_RNDN);
        mpfr_mul(r26704, r26694, r26703, MPFR_RNDN);
        mpfr_mul(r26705, r26672, r26704, MPFR_RNDN);
        if (mpfr_get_si(r26693, MPFR_RNDN)) { mpfr_set(r26706, r26705, MPFR_RNDN); } else { mpfr_set(r26706, r26665, MPFR_RNDN); };
        if (mpfr_get_si(r26691, MPFR_RNDN)) { mpfr_set(r26707, r26687, MPFR_RNDN); } else { mpfr_set(r26707, r26706, MPFR_RNDN); };
        if (mpfr_get_si(r26689, MPFR_RNDN)) { mpfr_set(r26708, r26665, MPFR_RNDN); } else { mpfr_set(r26708, r26707, MPFR_RNDN); };
        if (mpfr_get_si(r26667, MPFR_RNDN)) { mpfr_set(r26709, r26687, MPFR_RNDN); } else { mpfr_set(r26709, r26708, MPFR_RNDN); };
        if (mpfr_get_si(r26664, MPFR_RNDN)) { mpfr_set(r26710, r26665, MPFR_RNDN); } else { mpfr_set(r26710, r26709, MPFR_RNDN); };
        return mpfr_get_d(r26710, MPFR_RNDN);
}

