#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Henrywood and Agarwal, Equation (9a)";

double f_if(float w0, float M, float D, float h, float l, float d) {
        float r29433 = w0;
        float r29434 = 1.0f;
        float r29435 = M;
        float r29436 = D;
        float r29437 = r29435 * r29436;
        float r29438 = 2.0f;
        float r29439 = d;
        float r29440 = r29438 * r29439;
        float r29441 = r29437 / r29440;
        float r29442 = r29441 * r29441;
        float r29443 = h;
        float r29444 = l;
        float r29445 = r29443 / r29444;
        float r29446 = r29442 * r29445;
        float r29447 = r29434 - r29446;
        float r29448 = sqrt(r29447);
        float r29449 = r29433 * r29448;
        return r29449;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r29450 = w0;
        double r29451 = 1.0;
        double r29452 = M;
        double r29453 = D;
        double r29454 = r29452 * r29453;
        double r29455 = 2.0;
        double r29456 = d;
        double r29457 = r29455 * r29456;
        double r29458 = r29454 / r29457;
        double r29459 = r29458 * r29458;
        double r29460 = h;
        double r29461 = l;
        double r29462 = r29460 / r29461;
        double r29463 = r29459 * r29462;
        double r29464 = r29451 - r29463;
        double r29465 = sqrt(r29464);
        double r29466 = r29450 * r29465;
        return r29466;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r29467 = w0;
        float r29468 = 1.0f;
        float r29469 = M;
        float r29470 = D;
        float r29471 = r29469 * r29470;
        float r29472 = cbrt(r29471);
        float r29473 = 2.0f;
        float r29474 = d;
        float r29475 = r29473 * r29474;
        float r29476 = cbrt(r29475);
        float r29477 = r29472 / r29476;
        float r29478 = r29471 / r29475;
        float r29479 = h;
        float r29480 = r29478 * r29479;
        float r29481 = cbrt(r29480);
        float r29482 = r29477 * r29481;
        float r29483 = l;
        float r29484 = r29468 / r29483;
        float r29485 = cbrt(r29484);
        float r29486 = r29482 * r29485;
        float r29487 = r29486 * (r29486 * r29486);
        float r29488 = r29468 - r29487;
        float r29489 = sqrt(r29488);
        float r29490 = r29467 * r29489;
        return r29490;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r29491 = w0;
        double r29492 = 1.0;
        double r29493 = M;
        double r29494 = D;
        double r29495 = r29493 * r29494;
        double r29496 = cbrt(r29495);
        double r29497 = 2.0;
        double r29498 = d;
        double r29499 = r29497 * r29498;
        double r29500 = cbrt(r29499);
        double r29501 = r29496 / r29500;
        double r29502 = r29495 / r29499;
        double r29503 = h;
        double r29504 = r29502 * r29503;
        double r29505 = cbrt(r29504);
        double r29506 = r29501 * r29505;
        double r29507 = l;
        double r29508 = r29492 / r29507;
        double r29509 = cbrt(r29508);
        double r29510 = r29506 * r29509;
        double r29511 = r29510 * (r29510 * r29510);
        double r29512 = r29492 - r29511;
        double r29513 = sqrt(r29512);
        double r29514 = r29491 * r29513;
        return r29514;
}

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 r29515, r29516, r29517, r29518, r29519, r29520, r29521, r29522, r29523, r29524, r29525, r29526, r29527, r29528, r29529, r29530, r29531;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r29515);
        mpfr_init_set_str(r29516, "1", 10, MPFR_RNDN);
        mpfr_init(r29517);
        mpfr_init(r29518);
        mpfr_init(r29519);
        mpfr_init_set_str(r29520, "2", 10, MPFR_RNDN);
        mpfr_init(r29521);
        mpfr_init(r29522);
        mpfr_init(r29523);
        mpfr_init(r29524);
        mpfr_init(r29525);
        mpfr_init(r29526);
        mpfr_init(r29527);
        mpfr_init(r29528);
        mpfr_init(r29529);
        mpfr_init(r29530);
        mpfr_init(r29531);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r29515, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r29517, M, MPFR_RNDN);
        mpfr_set_d(r29518, D, MPFR_RNDN);
        mpfr_mul(r29519, r29517, r29518, MPFR_RNDN);
        ;
        mpfr_set_d(r29521, d, MPFR_RNDN);
        mpfr_mul(r29522, r29520, r29521, MPFR_RNDN);
        mpfr_div(r29523, r29519, r29522, MPFR_RNDN);
        mpfr_sqr(r29524, r29523, MPFR_RNDN);
        mpfr_set_d(r29525, h, MPFR_RNDN);
        mpfr_set_d(r29526, l, MPFR_RNDN);
        mpfr_div(r29527, r29525, r29526, MPFR_RNDN);
        mpfr_mul(r29528, r29524, r29527, MPFR_RNDN);
        mpfr_sub(r29529, r29516, r29528, MPFR_RNDN);
        mpfr_sqrt(r29530, r29529, MPFR_RNDN);
        mpfr_mul(r29531, r29515, r29530, MPFR_RNDN);
        return mpfr_get_d(r29531, MPFR_RNDN);
}

static mpfr_t r29532, r29533, r29534, r29535, r29536, r29537, r29538, r29539, r29540, r29541, r29542, r29543, r29544, r29545, r29546, r29547, r29548, r29549, r29550, r29551, r29552, r29553, r29554, r29555;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29532);
        mpfr_init_set_str(r29533, "1", 10, MPFR_RNDN);
        mpfr_init(r29534);
        mpfr_init(r29535);
        mpfr_init(r29536);
        mpfr_init(r29537);
        mpfr_init_set_str(r29538, "2", 10, MPFR_RNDN);
        mpfr_init(r29539);
        mpfr_init(r29540);
        mpfr_init(r29541);
        mpfr_init(r29542);
        mpfr_init(r29543);
        mpfr_init(r29544);
        mpfr_init(r29545);
        mpfr_init(r29546);
        mpfr_init(r29547);
        mpfr_init(r29548);
        mpfr_init(r29549);
        mpfr_init(r29550);
        mpfr_init(r29551);
        mpfr_init(r29552);
        mpfr_init(r29553);
        mpfr_init(r29554);
        mpfr_init(r29555);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r29532, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r29534, M, MPFR_RNDN);
        mpfr_set_d(r29535, D, MPFR_RNDN);
        mpfr_mul(r29536, r29534, r29535, MPFR_RNDN);
        mpfr_cbrt(r29537, r29536, MPFR_RNDN);
        ;
        mpfr_set_d(r29539, d, MPFR_RNDN);
        mpfr_mul(r29540, r29538, r29539, MPFR_RNDN);
        mpfr_cbrt(r29541, r29540, MPFR_RNDN);
        mpfr_div(r29542, r29537, r29541, MPFR_RNDN);
        mpfr_div(r29543, r29536, r29540, MPFR_RNDN);
        mpfr_set_d(r29544, h, MPFR_RNDN);
        mpfr_mul(r29545, r29543, r29544, MPFR_RNDN);
        mpfr_cbrt(r29546, r29545, MPFR_RNDN);
        mpfr_mul(r29547, r29542, r29546, MPFR_RNDN);
        mpfr_set_d(r29548, l, MPFR_RNDN);
        mpfr_div(r29549, r29533, r29548, MPFR_RNDN);
        mpfr_cbrt(r29550, r29549, MPFR_RNDN);
        mpfr_mul(r29551, r29547, r29550, MPFR_RNDN);
        mpfr_mul(r29552, r29551, r29551, MPFR_RNDN); mpfr_mul(r29552, r29552, r29551, MPFR_RNDN);
        mpfr_sub(r29553, r29533, r29552, MPFR_RNDN);
        mpfr_sqrt(r29554, r29553, MPFR_RNDN);
        mpfr_mul(r29555, r29532, r29554, MPFR_RNDN);
        return mpfr_get_d(r29555, MPFR_RNDN);
}

static mpfr_t r29556, r29557, r29558, r29559, r29560, r29561, r29562, r29563, r29564, r29565, r29566, r29567, r29568, r29569, r29570, r29571, r29572, r29573, r29574, r29575, r29576, r29577, r29578, r29579;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r29556);
        mpfr_init_set_str(r29557, "1", 10, MPFR_RNDN);
        mpfr_init(r29558);
        mpfr_init(r29559);
        mpfr_init(r29560);
        mpfr_init(r29561);
        mpfr_init_set_str(r29562, "2", 10, MPFR_RNDN);
        mpfr_init(r29563);
        mpfr_init(r29564);
        mpfr_init(r29565);
        mpfr_init(r29566);
        mpfr_init(r29567);
        mpfr_init(r29568);
        mpfr_init(r29569);
        mpfr_init(r29570);
        mpfr_init(r29571);
        mpfr_init(r29572);
        mpfr_init(r29573);
        mpfr_init(r29574);
        mpfr_init(r29575);
        mpfr_init(r29576);
        mpfr_init(r29577);
        mpfr_init(r29578);
        mpfr_init(r29579);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r29556, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r29558, M, MPFR_RNDN);
        mpfr_set_d(r29559, D, MPFR_RNDN);
        mpfr_mul(r29560, r29558, r29559, MPFR_RNDN);
        mpfr_cbrt(r29561, r29560, MPFR_RNDN);
        ;
        mpfr_set_d(r29563, d, MPFR_RNDN);
        mpfr_mul(r29564, r29562, r29563, MPFR_RNDN);
        mpfr_cbrt(r29565, r29564, MPFR_RNDN);
        mpfr_div(r29566, r29561, r29565, MPFR_RNDN);
        mpfr_div(r29567, r29560, r29564, MPFR_RNDN);
        mpfr_set_d(r29568, h, MPFR_RNDN);
        mpfr_mul(r29569, r29567, r29568, MPFR_RNDN);
        mpfr_cbrt(r29570, r29569, MPFR_RNDN);
        mpfr_mul(r29571, r29566, r29570, MPFR_RNDN);
        mpfr_set_d(r29572, l, MPFR_RNDN);
        mpfr_div(r29573, r29557, r29572, MPFR_RNDN);
        mpfr_cbrt(r29574, r29573, MPFR_RNDN);
        mpfr_mul(r29575, r29571, r29574, MPFR_RNDN);
        mpfr_mul(r29576, r29575, r29575, MPFR_RNDN); mpfr_mul(r29576, r29576, r29575, MPFR_RNDN);
        mpfr_sub(r29577, r29557, r29576, MPFR_RNDN);
        mpfr_sqrt(r29578, r29577, MPFR_RNDN);
        mpfr_mul(r29579, r29556, r29578, MPFR_RNDN);
        return mpfr_get_d(r29579, MPFR_RNDN);
}

