#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 r26494 = c0;
        float r26495 = 2;
        float r26496 = w;
        float r26497 = r26495 * r26496;
        float r26498 = r26494 / r26497;
        float r26499 = d;
        float r26500 = r26499 * r26499;
        float r26501 = r26494 * r26500;
        float r26502 = h;
        float r26503 = r26496 * r26502;
        float r26504 = D;
        float r26505 = r26504 * r26504;
        float r26506 = r26503 * r26505;
        float r26507 = r26501 / r26506;
        float r26508 = r26507 * r26507;
        float r26509 = M;
        float r26510 = r26509 * r26509;
        float r26511 = r26508 - r26510;
        float r26512 = sqrt(r26511);
        float r26513 = r26507 + r26512;
        float r26514 = r26498 * r26513;
        return r26514;
}

double f_id(double c0, double w, double h, double D, double d, double M) {
        double r26515 = c0;
        double r26516 = 2;
        double r26517 = w;
        double r26518 = r26516 * r26517;
        double r26519 = r26515 / r26518;
        double r26520 = d;
        double r26521 = r26520 * r26520;
        double r26522 = r26515 * r26521;
        double r26523 = h;
        double r26524 = r26517 * r26523;
        double r26525 = D;
        double r26526 = r26525 * r26525;
        double r26527 = r26524 * r26526;
        double r26528 = r26522 / r26527;
        double r26529 = r26528 * r26528;
        double r26530 = M;
        double r26531 = r26530 * r26530;
        double r26532 = r26529 - r26531;
        double r26533 = sqrt(r26532);
        double r26534 = r26528 + r26533;
        double r26535 = r26519 * r26534;
        return r26535;
}


double f_of(float c0, float w, float h, float D, float d, float M) {
        float r26536 = c0;
        float r26537 = w;
        float r26538 = M;
        float r26539 = r26537 / r26538;
        float r26540 = 2;
        float r26541 = r26538 / r26540;
        float r26542 = r26539 / r26541;
        float r26543 = d;
        float r26544 = D;
        float r26545 = r26543 / r26544;
        float r26546 = r26545 * r26536;
        float r26547 = h;
        float r26548 = r26547 * r26537;
        float r26549 = r26548 / r26545;
        float r26550 = r26546 / r26549;
        float r26551 = r26550 - r26538;
        float r26552 = r26550 + r26538;
        float r26553 = r26551 * r26552;
        float r26554 = sqrt(r26553);
        float r26555 = r26550 - r26554;
        float r26556 = r26542 * r26555;
        float r26557 = r26536 / r26556;
        float r26558 = -1.8998674666154518e+145;
        bool r26559 = r26557 <= r26558;
        float r26560 = r26545 * r26545;
        float r26561 = r26548 / r26536;
        float r26562 = r26560 / r26561;
        float r26563 = r26562 * r26562;
        float r26564 = r26538 * r26538;
        float r26565 = r26563 - r26564;
        float r26566 = sqrt(r26565);
        float r26567 = r26562 + r26566;
        float r26568 = r26537 * r26540;
        float r26569 = r26536 / r26568;
        float r26570 = r26569 / r26564;
        float r26571 = r26570 * r26564;
        float r26572 = r26567 * r26571;
        float r26573 = 1.8311289264330715e-66;
        bool r26574 = r26557 <= r26573;
        float r26575 = 0;
        float r26576 = r26574 ? r26557 : r26575;
        float r26577 = r26559 ? r26572 : r26576;
        return r26577;
}

double f_od(double c0, double w, double h, double D, double d, double M) {
        double r26578 = c0;
        double r26579 = w;
        double r26580 = M;
        double r26581 = r26579 / r26580;
        double r26582 = 2;
        double r26583 = r26580 / r26582;
        double r26584 = r26581 / r26583;
        double r26585 = d;
        double r26586 = D;
        double r26587 = r26585 / r26586;
        double r26588 = r26587 * r26578;
        double r26589 = h;
        double r26590 = r26589 * r26579;
        double r26591 = r26590 / r26587;
        double r26592 = r26588 / r26591;
        double r26593 = r26592 - r26580;
        double r26594 = r26592 + r26580;
        double r26595 = r26593 * r26594;
        double r26596 = sqrt(r26595);
        double r26597 = r26592 - r26596;
        double r26598 = r26584 * r26597;
        double r26599 = r26578 / r26598;
        double r26600 = -1.8998674666154518e+145;
        bool r26601 = r26599 <= r26600;
        double r26602 = r26587 * r26587;
        double r26603 = r26590 / r26578;
        double r26604 = r26602 / r26603;
        double r26605 = r26604 * r26604;
        double r26606 = r26580 * r26580;
        double r26607 = r26605 - r26606;
        double r26608 = sqrt(r26607);
        double r26609 = r26604 + r26608;
        double r26610 = r26579 * r26582;
        double r26611 = r26578 / r26610;
        double r26612 = r26611 / r26606;
        double r26613 = r26612 * r26606;
        double r26614 = r26609 * r26613;
        double r26615 = 1.8311289264330715e-66;
        bool r26616 = r26599 <= r26615;
        double r26617 = 0;
        double r26618 = r26616 ? r26599 : r26617;
        double r26619 = r26601 ? r26614 : r26618;
        return r26619;
}

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 r26620, r26621, r26622, r26623, r26624, r26625, r26626, r26627, r26628, r26629, r26630, r26631, r26632, r26633, r26634, r26635, r26636, r26637, r26638, r26639, r26640;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(6736);
        mpfr_init(r26620);
        mpfr_init_set_str(r26621, "2", 10, MPFR_RNDN);
        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(r26633);
        mpfr_init(r26634);
        mpfr_init(r26635);
        mpfr_init(r26636);
        mpfr_init(r26637);
        mpfr_init(r26638);
        mpfr_init(r26639);
        mpfr_init(r26640);
}

double f_im(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26620, c0, MPFR_RNDN);
        ;
        mpfr_set_d(r26622, w, MPFR_RNDN);
        mpfr_mul(r26623, r26621, r26622, MPFR_RNDN);
        mpfr_div(r26624, r26620, r26623, MPFR_RNDN);
        mpfr_set_d(r26625, d, MPFR_RNDN);
        mpfr_mul(r26626, r26625, r26625, MPFR_RNDN);
        mpfr_mul(r26627, r26620, r26626, MPFR_RNDN);
        mpfr_set_d(r26628, h, MPFR_RNDN);
        mpfr_mul(r26629, r26622, r26628, MPFR_RNDN);
        mpfr_set_d(r26630, D, MPFR_RNDN);
        mpfr_mul(r26631, r26630, r26630, MPFR_RNDN);
        mpfr_mul(r26632, r26629, r26631, MPFR_RNDN);
        mpfr_div(r26633, r26627, r26632, MPFR_RNDN);
        mpfr_mul(r26634, r26633, r26633, MPFR_RNDN);
        mpfr_set_d(r26635, M, MPFR_RNDN);
        mpfr_mul(r26636, r26635, r26635, MPFR_RNDN);
        mpfr_sub(r26637, r26634, r26636, MPFR_RNDN);
        mpfr_sqrt(r26638, r26637, MPFR_RNDN);
        mpfr_add(r26639, r26633, r26638, MPFR_RNDN);
        mpfr_mul(r26640, r26624, r26639, MPFR_RNDN);
        return mpfr_get_d(r26640, MPFR_RNDN);
}

static mpfr_t r26641, r26642, r26643, r26644, r26645, r26646, r26647, r26648, r26649, r26650, r26651, r26652, r26653, r26654, r26655, r26656, r26657, r26658, r26659, r26660, r26661, r26662, r26663, r26664, r26665, r26666, r26667, r26668, r26669, r26670, r26671, r26672, r26673, r26674, r26675, r26676, r26677, r26678, r26679, r26680, r26681, r26682;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(6736);
        mpfr_init(r26641);
        mpfr_init(r26642);
        mpfr_init(r26643);
        mpfr_init(r26644);
        mpfr_init_set_str(r26645, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r26660);
        mpfr_init(r26661);
        mpfr_init(r26662);
        mpfr_init_set_str(r26663, "-1.8998674666154518e+145", 10, MPFR_RNDN);
        mpfr_init(r26664);
        mpfr_init(r26665);
        mpfr_init(r26666);
        mpfr_init(r26667);
        mpfr_init(r26668);
        mpfr_init(r26669);
        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_set_str(r26678, "1.8311289264330715e-66", 10, MPFR_RNDN);
        mpfr_init(r26679);
        mpfr_init_set_str(r26680, "0", 10, MPFR_RNDN);
        mpfr_init(r26681);
        mpfr_init(r26682);
}

double f_fm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26641, c0, MPFR_RNDN);
        mpfr_set_d(r26642, w, MPFR_RNDN);
        mpfr_set_d(r26643, M, MPFR_RNDN);
        mpfr_div(r26644, r26642, r26643, MPFR_RNDN);
        ;
        mpfr_div(r26646, r26643, r26645, MPFR_RNDN);
        mpfr_div(r26647, r26644, r26646, MPFR_RNDN);
        mpfr_set_d(r26648, d, MPFR_RNDN);
        mpfr_set_d(r26649, D, MPFR_RNDN);
        mpfr_div(r26650, r26648, r26649, MPFR_RNDN);
        mpfr_mul(r26651, r26650, r26641, MPFR_RNDN);
        mpfr_set_d(r26652, h, MPFR_RNDN);
        mpfr_mul(r26653, r26652, r26642, MPFR_RNDN);
        mpfr_div(r26654, r26653, r26650, MPFR_RNDN);
        mpfr_div(r26655, r26651, r26654, MPFR_RNDN);
        mpfr_sub(r26656, r26655, r26643, MPFR_RNDN);
        mpfr_add(r26657, r26655, r26643, MPFR_RNDN);
        mpfr_mul(r26658, r26656, r26657, MPFR_RNDN);
        mpfr_sqrt(r26659, r26658, MPFR_RNDN);
        mpfr_sub(r26660, r26655, r26659, MPFR_RNDN);
        mpfr_mul(r26661, r26647, r26660, MPFR_RNDN);
        mpfr_div(r26662, r26641, r26661, MPFR_RNDN);
        ;
        mpfr_set_si(r26664, mpfr_cmp(r26662, r26663) <= 0, MPFR_RNDN);
        mpfr_mul(r26665, r26650, r26650, MPFR_RNDN);
        mpfr_div(r26666, r26653, r26641, MPFR_RNDN);
        mpfr_div(r26667, r26665, r26666, MPFR_RNDN);
        mpfr_mul(r26668, r26667, r26667, MPFR_RNDN);
        mpfr_mul(r26669, r26643, r26643, MPFR_RNDN);
        mpfr_sub(r26670, r26668, r26669, MPFR_RNDN);
        mpfr_sqrt(r26671, r26670, MPFR_RNDN);
        mpfr_add(r26672, r26667, r26671, MPFR_RNDN);
        mpfr_mul(r26673, r26642, r26645, MPFR_RNDN);
        mpfr_div(r26674, r26641, r26673, MPFR_RNDN);
        mpfr_div(r26675, r26674, r26669, MPFR_RNDN);
        mpfr_mul(r26676, r26675, r26669, MPFR_RNDN);
        mpfr_mul(r26677, r26672, r26676, MPFR_RNDN);
        ;
        mpfr_set_si(r26679, mpfr_cmp(r26662, r26678) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26679, MPFR_RNDN)) { mpfr_set(r26681, r26662, MPFR_RNDN); } else { mpfr_set(r26681, r26680, MPFR_RNDN); };
        if (mpfr_get_si(r26664, MPFR_RNDN)) { mpfr_set(r26682, r26677, MPFR_RNDN); } else { mpfr_set(r26682, r26681, MPFR_RNDN); };
        return mpfr_get_d(r26682, MPFR_RNDN);
}

static mpfr_t 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, r26711, r26712, r26713, r26714, r26715, r26716, r26717, r26718, r26719, r26720, r26721, r26722, r26723, r26724;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(6736);
        mpfr_init(r26683);
        mpfr_init(r26684);
        mpfr_init(r26685);
        mpfr_init(r26686);
        mpfr_init_set_str(r26687, "2", 10, MPFR_RNDN);
        mpfr_init(r26688);
        mpfr_init(r26689);
        mpfr_init(r26690);
        mpfr_init(r26691);
        mpfr_init(r26692);
        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_set_str(r26705, "-1.8998674666154518e+145", 10, MPFR_RNDN);
        mpfr_init(r26706);
        mpfr_init(r26707);
        mpfr_init(r26708);
        mpfr_init(r26709);
        mpfr_init(r26710);
        mpfr_init(r26711);
        mpfr_init(r26712);
        mpfr_init(r26713);
        mpfr_init(r26714);
        mpfr_init(r26715);
        mpfr_init(r26716);
        mpfr_init(r26717);
        mpfr_init(r26718);
        mpfr_init(r26719);
        mpfr_init_set_str(r26720, "1.8311289264330715e-66", 10, MPFR_RNDN);
        mpfr_init(r26721);
        mpfr_init_set_str(r26722, "0", 10, MPFR_RNDN);
        mpfr_init(r26723);
        mpfr_init(r26724);
}

double f_dm(double c0, double w, double h, double D, double d, double M) {
        mpfr_set_d(r26683, c0, MPFR_RNDN);
        mpfr_set_d(r26684, w, MPFR_RNDN);
        mpfr_set_d(r26685, M, MPFR_RNDN);
        mpfr_div(r26686, r26684, r26685, MPFR_RNDN);
        ;
        mpfr_div(r26688, r26685, r26687, MPFR_RNDN);
        mpfr_div(r26689, r26686, r26688, MPFR_RNDN);
        mpfr_set_d(r26690, d, MPFR_RNDN);
        mpfr_set_d(r26691, D, MPFR_RNDN);
        mpfr_div(r26692, r26690, r26691, MPFR_RNDN);
        mpfr_mul(r26693, r26692, r26683, MPFR_RNDN);
        mpfr_set_d(r26694, h, MPFR_RNDN);
        mpfr_mul(r26695, r26694, r26684, MPFR_RNDN);
        mpfr_div(r26696, r26695, r26692, MPFR_RNDN);
        mpfr_div(r26697, r26693, r26696, MPFR_RNDN);
        mpfr_sub(r26698, r26697, r26685, MPFR_RNDN);
        mpfr_add(r26699, r26697, r26685, MPFR_RNDN);
        mpfr_mul(r26700, r26698, r26699, MPFR_RNDN);
        mpfr_sqrt(r26701, r26700, MPFR_RNDN);
        mpfr_sub(r26702, r26697, r26701, MPFR_RNDN);
        mpfr_mul(r26703, r26689, r26702, MPFR_RNDN);
        mpfr_div(r26704, r26683, r26703, MPFR_RNDN);
        ;
        mpfr_set_si(r26706, mpfr_cmp(r26704, r26705) <= 0, MPFR_RNDN);
        mpfr_mul(r26707, r26692, r26692, MPFR_RNDN);
        mpfr_div(r26708, r26695, r26683, MPFR_RNDN);
        mpfr_div(r26709, r26707, r26708, MPFR_RNDN);
        mpfr_mul(r26710, r26709, r26709, MPFR_RNDN);
        mpfr_mul(r26711, r26685, r26685, MPFR_RNDN);
        mpfr_sub(r26712, r26710, r26711, MPFR_RNDN);
        mpfr_sqrt(r26713, r26712, MPFR_RNDN);
        mpfr_add(r26714, r26709, r26713, MPFR_RNDN);
        mpfr_mul(r26715, r26684, r26687, MPFR_RNDN);
        mpfr_div(r26716, r26683, r26715, MPFR_RNDN);
        mpfr_div(r26717, r26716, r26711, MPFR_RNDN);
        mpfr_mul(r26718, r26717, r26711, MPFR_RNDN);
        mpfr_mul(r26719, r26714, r26718, MPFR_RNDN);
        ;
        mpfr_set_si(r26721, mpfr_cmp(r26704, r26720) <= 0, MPFR_RNDN);
        ;
        if (mpfr_get_si(r26721, MPFR_RNDN)) { mpfr_set(r26723, r26704, MPFR_RNDN); } else { mpfr_set(r26723, r26722, MPFR_RNDN); };
        if (mpfr_get_si(r26706, MPFR_RNDN)) { mpfr_set(r26724, r26719, MPFR_RNDN); } else { mpfr_set(r26724, r26723, MPFR_RNDN); };
        return mpfr_get_d(r26724, MPFR_RNDN);
}

