#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 r31421 = w0;
        float r31422 = 1;
        float r31423 = M;
        float r31424 = D;
        float r31425 = r31423 * r31424;
        float r31426 = 2;
        float r31427 = d;
        float r31428 = r31426 * r31427;
        float r31429 = r31425 / r31428;
        float r31430 = pow(r31429, r31426);
        float r31431 = h;
        float r31432 = l;
        float r31433 = r31431 / r31432;
        float r31434 = r31430 * r31433;
        float r31435 = r31422 - r31434;
        float r31436 = sqrt(r31435);
        float r31437 = r31421 * r31436;
        return r31437;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r31438 = w0;
        double r31439 = 1;
        double r31440 = M;
        double r31441 = D;
        double r31442 = r31440 * r31441;
        double r31443 = 2;
        double r31444 = d;
        double r31445 = r31443 * r31444;
        double r31446 = r31442 / r31445;
        double r31447 = pow(r31446, r31443);
        double r31448 = h;
        double r31449 = l;
        double r31450 = r31448 / r31449;
        double r31451 = r31447 * r31450;
        double r31452 = r31439 - r31451;
        double r31453 = sqrt(r31452);
        double r31454 = r31438 * r31453;
        return r31454;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r31455 = w0;
        float r31456 = 1;
        float r31457 = M;
        float r31458 = D;
        float r31459 = r31457 * r31458;
        float r31460 = 2;
        float r31461 = d;
        float r31462 = r31460 * r31461;
        float r31463 = r31459 / r31462;
        float r31464 = h;
        float r31465 = r31463 * r31464;
        float r31466 = r31463 * r31465;
        float r31467 = l;
        float r31468 = r31466 / r31467;
        float r31469 = r31456 - r31468;
        float r31470 = sqrt(r31469);
        float r31471 = r31455 * r31470;
        return r31471;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r31472 = w0;
        double r31473 = 1;
        double r31474 = M;
        double r31475 = D;
        double r31476 = r31474 * r31475;
        double r31477 = 2;
        double r31478 = d;
        double r31479 = r31477 * r31478;
        double r31480 = r31476 / r31479;
        double r31481 = h;
        double r31482 = r31480 * r31481;
        double r31483 = r31480 * r31482;
        double r31484 = l;
        double r31485 = r31483 / r31484;
        double r31486 = r31473 - r31485;
        double r31487 = sqrt(r31486);
        double r31488 = r31472 * r31487;
        return r31488;
}

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 r31489, r31490, r31491, r31492, r31493, r31494, r31495, r31496, r31497, r31498, r31499, r31500, r31501, r31502, r31503, r31504, r31505;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r31489);
        mpfr_init_set_str(r31490, "1", 10, MPFR_RNDN);
        mpfr_init(r31491);
        mpfr_init(r31492);
        mpfr_init(r31493);
        mpfr_init_set_str(r31494, "2", 10, MPFR_RNDN);
        mpfr_init(r31495);
        mpfr_init(r31496);
        mpfr_init(r31497);
        mpfr_init(r31498);
        mpfr_init(r31499);
        mpfr_init(r31500);
        mpfr_init(r31501);
        mpfr_init(r31502);
        mpfr_init(r31503);
        mpfr_init(r31504);
        mpfr_init(r31505);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r31489, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r31491, M, MPFR_RNDN);
        mpfr_set_d(r31492, D, MPFR_RNDN);
        mpfr_mul(r31493, r31491, r31492, MPFR_RNDN);
        ;
        mpfr_set_d(r31495, d, MPFR_RNDN);
        mpfr_mul(r31496, r31494, r31495, MPFR_RNDN);
        mpfr_div(r31497, r31493, r31496, MPFR_RNDN);
        mpfr_pow(r31498, r31497, r31494, MPFR_RNDN);
        mpfr_set_d(r31499, h, MPFR_RNDN);
        mpfr_set_d(r31500, l, MPFR_RNDN);
        mpfr_div(r31501, r31499, r31500, MPFR_RNDN);
        mpfr_mul(r31502, r31498, r31501, MPFR_RNDN);
        mpfr_sub(r31503, r31490, r31502, MPFR_RNDN);
        mpfr_sqrt(r31504, r31503, MPFR_RNDN);
        mpfr_mul(r31505, r31489, r31504, MPFR_RNDN);
        return mpfr_get_d(r31505, MPFR_RNDN);
}

static mpfr_t r31506, r31507, r31508, r31509, r31510, r31511, r31512, r31513, r31514, r31515, r31516, r31517, r31518, r31519, r31520, r31521, r31522;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31506);
        mpfr_init_set_str(r31507, "1", 10, MPFR_RNDN);
        mpfr_init(r31508);
        mpfr_init(r31509);
        mpfr_init(r31510);
        mpfr_init_set_str(r31511, "2", 10, MPFR_RNDN);
        mpfr_init(r31512);
        mpfr_init(r31513);
        mpfr_init(r31514);
        mpfr_init(r31515);
        mpfr_init(r31516);
        mpfr_init(r31517);
        mpfr_init(r31518);
        mpfr_init(r31519);
        mpfr_init(r31520);
        mpfr_init(r31521);
        mpfr_init(r31522);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r31506, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r31508, M, MPFR_RNDN);
        mpfr_set_d(r31509, D, MPFR_RNDN);
        mpfr_mul(r31510, r31508, r31509, MPFR_RNDN);
        ;
        mpfr_set_d(r31512, d, MPFR_RNDN);
        mpfr_mul(r31513, r31511, r31512, MPFR_RNDN);
        mpfr_div(r31514, r31510, r31513, MPFR_RNDN);
        mpfr_set_d(r31515, h, MPFR_RNDN);
        mpfr_mul(r31516, r31514, r31515, MPFR_RNDN);
        mpfr_mul(r31517, r31514, r31516, MPFR_RNDN);
        mpfr_set_d(r31518, l, MPFR_RNDN);
        mpfr_div(r31519, r31517, r31518, MPFR_RNDN);
        mpfr_sub(r31520, r31507, r31519, MPFR_RNDN);
        mpfr_sqrt(r31521, r31520, MPFR_RNDN);
        mpfr_mul(r31522, r31506, r31521, MPFR_RNDN);
        return mpfr_get_d(r31522, MPFR_RNDN);
}

static mpfr_t r31523, r31524, r31525, r31526, r31527, r31528, r31529, r31530, r31531, r31532, r31533, r31534, r31535, r31536, r31537, r31538, r31539;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r31523);
        mpfr_init_set_str(r31524, "1", 10, MPFR_RNDN);
        mpfr_init(r31525);
        mpfr_init(r31526);
        mpfr_init(r31527);
        mpfr_init_set_str(r31528, "2", 10, MPFR_RNDN);
        mpfr_init(r31529);
        mpfr_init(r31530);
        mpfr_init(r31531);
        mpfr_init(r31532);
        mpfr_init(r31533);
        mpfr_init(r31534);
        mpfr_init(r31535);
        mpfr_init(r31536);
        mpfr_init(r31537);
        mpfr_init(r31538);
        mpfr_init(r31539);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r31523, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r31525, M, MPFR_RNDN);
        mpfr_set_d(r31526, D, MPFR_RNDN);
        mpfr_mul(r31527, r31525, r31526, MPFR_RNDN);
        ;
        mpfr_set_d(r31529, d, MPFR_RNDN);
        mpfr_mul(r31530, r31528, r31529, MPFR_RNDN);
        mpfr_div(r31531, r31527, r31530, MPFR_RNDN);
        mpfr_set_d(r31532, h, MPFR_RNDN);
        mpfr_mul(r31533, r31531, r31532, MPFR_RNDN);
        mpfr_mul(r31534, r31531, r31533, MPFR_RNDN);
        mpfr_set_d(r31535, l, MPFR_RNDN);
        mpfr_div(r31536, r31534, r31535, MPFR_RNDN);
        mpfr_sub(r31537, r31524, r31536, MPFR_RNDN);
        mpfr_sqrt(r31538, r31537, MPFR_RNDN);
        mpfr_mul(r31539, r31523, r31538, MPFR_RNDN);
        return mpfr_get_d(r31539, MPFR_RNDN);
}

