#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 r9080 = w0;
        float r9081 = 1.0f;
        float r9082 = M;
        float r9083 = D;
        float r9084 = r9082 * r9083;
        float r9085 = 2.0f;
        float r9086 = d;
        float r9087 = r9085 * r9086;
        float r9088 = r9084 / r9087;
        float r9089 = pow(r9088, r9085);
        float r9090 = h;
        float r9091 = l;
        float r9092 = r9090 / r9091;
        float r9093 = r9089 * r9092;
        float r9094 = r9081 - r9093;
        float r9095 = sqrt(r9094);
        float r9096 = r9080 * r9095;
        return r9096;
}

double f_id(double w0, double M, double D, double h, double l, double d) {
        double r9097 = w0;
        double r9098 = 1.0;
        double r9099 = M;
        double r9100 = D;
        double r9101 = r9099 * r9100;
        double r9102 = 2.0;
        double r9103 = d;
        double r9104 = r9102 * r9103;
        double r9105 = r9101 / r9104;
        double r9106 = pow(r9105, r9102);
        double r9107 = h;
        double r9108 = l;
        double r9109 = r9107 / r9108;
        double r9110 = r9106 * r9109;
        double r9111 = r9098 - r9110;
        double r9112 = sqrt(r9111);
        double r9113 = r9097 * r9112;
        return r9113;
}


double f_of(float w0, float M, float D, float h, float l, float d) {
        float r9114 = D;
        float r9115 = h;
        float r9116 = r9114 * r9115;
        float r9117 = d;
        float r9118 = r9116 / r9117;
        float r9119 = M;
        float r9120 = 2.0f;
        float r9121 = r9119 / r9120;
        float r9122 = r9118 * r9121;
        float r9123 = r9119 * r9114;
        float r9124 = r9120 * r9117;
        float r9125 = r9123 / r9124;
        float r9126 = l;
        float r9127 = r9125 / r9126;
        float r9128 = r9122 * r9127;
        float r9129 = -1.2180960052631341e+268f;
        bool r9130 = r9128 <= r9129;
        float r9131 = 1.0f;
        float r9132 = r9126 / r9115;
        float r9133 = r9132 / r9125;
        float r9134 = r9125 / r9133;
        float r9135 = r9131 - r9134;
        float r9136 = sqrt(r9135);
        float r9137 = sqrt(r9136);
        float r9138 = r9137 * r9137;
        float r9139 = w0;
        float r9140 = r9138 * r9139;
        float r9141 = -34009522142315936.0f;
        bool r9142 = r9128 <= r9141;
        float r9143 = r9131 - r9128;
        float r9144 = sqrt(r9143);
        float r9145 = r9139 * r9144;
        float r9146 = r9114 / r9117;
        float r9147 = r9146 * r9121;
        float r9148 = r9131 / r9115;
        float r9149 = r9147 / r9148;
        float r9150 = r9126 / r9149;
        float r9151 = r9147 / r9150;
        float r9152 = r9131 - r9151;
        float r9153 = sqrt(r9152);
        float r9154 = r9139 * r9153;
        float r9155 = r9142 ? r9145 : r9154;
        float r9156 = r9130 ? r9140 : r9155;
        return r9156;
}

double f_od(double w0, double M, double D, double h, double l, double d) {
        double r9157 = D;
        double r9158 = h;
        double r9159 = r9157 * r9158;
        double r9160 = d;
        double r9161 = r9159 / r9160;
        double r9162 = M;
        double r9163 = 2.0;
        double r9164 = r9162 / r9163;
        double r9165 = r9161 * r9164;
        double r9166 = r9162 * r9157;
        double r9167 = r9163 * r9160;
        double r9168 = r9166 / r9167;
        double r9169 = l;
        double r9170 = r9168 / r9169;
        double r9171 = r9165 * r9170;
        double r9172 = -1.2180960052631341e+268;
        bool r9173 = r9171 <= r9172;
        double r9174 = 1.0;
        double r9175 = r9169 / r9158;
        double r9176 = r9175 / r9168;
        double r9177 = r9168 / r9176;
        double r9178 = r9174 - r9177;
        double r9179 = sqrt(r9178);
        double r9180 = sqrt(r9179);
        double r9181 = r9180 * r9180;
        double r9182 = w0;
        double r9183 = r9181 * r9182;
        double r9184 = -34009522142315936.0;
        bool r9185 = r9171 <= r9184;
        double r9186 = r9174 - r9171;
        double r9187 = sqrt(r9186);
        double r9188 = r9182 * r9187;
        double r9189 = r9157 / r9160;
        double r9190 = r9189 * r9164;
        double r9191 = r9174 / r9158;
        double r9192 = r9190 / r9191;
        double r9193 = r9169 / r9192;
        double r9194 = r9190 / r9193;
        double r9195 = r9174 - r9194;
        double r9196 = sqrt(r9195);
        double r9197 = r9182 * r9196;
        double r9198 = r9185 ? r9188 : r9197;
        double r9199 = r9173 ? r9183 : r9198;
        return r9199;
}

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 r9200, r9201, r9202, r9203, r9204, r9205, r9206, r9207, r9208, r9209, r9210, r9211, r9212, r9213, r9214, r9215, r9216;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9200);
        mpfr_init_set_str(r9201, "1", 10, MPFR_RNDN);
        mpfr_init(r9202);
        mpfr_init(r9203);
        mpfr_init(r9204);
        mpfr_init_set_str(r9205, "2", 10, MPFR_RNDN);
        mpfr_init(r9206);
        mpfr_init(r9207);
        mpfr_init(r9208);
        mpfr_init(r9209);
        mpfr_init(r9210);
        mpfr_init(r9211);
        mpfr_init(r9212);
        mpfr_init(r9213);
        mpfr_init(r9214);
        mpfr_init(r9215);
        mpfr_init(r9216);
}

double f_im(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r9200, w0, MPFR_RNDN);
        ;
        mpfr_set_d(r9202, M, MPFR_RNDN);
        mpfr_set_d(r9203, D, MPFR_RNDN);
        mpfr_mul(r9204, r9202, r9203, MPFR_RNDN);
        ;
        mpfr_set_d(r9206, d, MPFR_RNDN);
        mpfr_mul(r9207, r9205, r9206, MPFR_RNDN);
        mpfr_div(r9208, r9204, r9207, MPFR_RNDN);
        mpfr_pow(r9209, r9208, r9205, MPFR_RNDN);
        mpfr_set_d(r9210, h, MPFR_RNDN);
        mpfr_set_d(r9211, l, MPFR_RNDN);
        mpfr_div(r9212, r9210, r9211, MPFR_RNDN);
        mpfr_mul(r9213, r9209, r9212, MPFR_RNDN);
        mpfr_sub(r9214, r9201, r9213, MPFR_RNDN);
        mpfr_sqrt(r9215, r9214, MPFR_RNDN);
        mpfr_mul(r9216, r9200, r9215, MPFR_RNDN);
        return mpfr_get_d(r9216, MPFR_RNDN);
}

static mpfr_t r9217, r9218, r9219, r9220, r9221, r9222, r9223, r9224, r9225, r9226, r9227, r9228, r9229, r9230, r9231, r9232, r9233, r9234, r9235, r9236, r9237, r9238, r9239, r9240, r9241, r9242, r9243, r9244, r9245, r9246, r9247, r9248, r9249, r9250, r9251, r9252, r9253, r9254, r9255, r9256, r9257, r9258, r9259;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9217);
        mpfr_init(r9218);
        mpfr_init(r9219);
        mpfr_init(r9220);
        mpfr_init(r9221);
        mpfr_init(r9222);
        mpfr_init_set_str(r9223, "2", 10, MPFR_RNDN);
        mpfr_init(r9224);
        mpfr_init(r9225);
        mpfr_init(r9226);
        mpfr_init(r9227);
        mpfr_init(r9228);
        mpfr_init(r9229);
        mpfr_init(r9230);
        mpfr_init(r9231);
        mpfr_init_set_str(r9232, "-1.2180960052631341e+268", 10, MPFR_RNDN);
        mpfr_init(r9233);
        mpfr_init_set_str(r9234, "1", 10, MPFR_RNDN);
        mpfr_init(r9235);
        mpfr_init(r9236);
        mpfr_init(r9237);
        mpfr_init(r9238);
        mpfr_init(r9239);
        mpfr_init(r9240);
        mpfr_init(r9241);
        mpfr_init(r9242);
        mpfr_init(r9243);
        mpfr_init_set_str(r9244, "-34009522142315936.0", 10, MPFR_RNDN);
        mpfr_init(r9245);
        mpfr_init(r9246);
        mpfr_init(r9247);
        mpfr_init(r9248);
        mpfr_init(r9249);
        mpfr_init(r9250);
        mpfr_init(r9251);
        mpfr_init(r9252);
        mpfr_init(r9253);
        mpfr_init(r9254);
        mpfr_init(r9255);
        mpfr_init(r9256);
        mpfr_init(r9257);
        mpfr_init(r9258);
        mpfr_init(r9259);
}

double f_fm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r9217, D, MPFR_RNDN);
        mpfr_set_d(r9218, h, MPFR_RNDN);
        mpfr_mul(r9219, r9217, r9218, MPFR_RNDN);
        mpfr_set_d(r9220, d, MPFR_RNDN);
        mpfr_div(r9221, r9219, r9220, MPFR_RNDN);
        mpfr_set_d(r9222, M, MPFR_RNDN);
        ;
        mpfr_div(r9224, r9222, r9223, MPFR_RNDN);
        mpfr_mul(r9225, r9221, r9224, MPFR_RNDN);
        mpfr_mul(r9226, r9222, r9217, MPFR_RNDN);
        mpfr_mul(r9227, r9223, r9220, MPFR_RNDN);
        mpfr_div(r9228, r9226, r9227, MPFR_RNDN);
        mpfr_set_d(r9229, l, MPFR_RNDN);
        mpfr_div(r9230, r9228, r9229, MPFR_RNDN);
        mpfr_mul(r9231, r9225, r9230, MPFR_RNDN);
        ;
        mpfr_set_si(r9233, mpfr_cmp(r9231, r9232) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9235, r9229, r9218, MPFR_RNDN);
        mpfr_div(r9236, r9235, r9228, MPFR_RNDN);
        mpfr_div(r9237, r9228, r9236, MPFR_RNDN);
        mpfr_sub(r9238, r9234, r9237, MPFR_RNDN);
        mpfr_sqrt(r9239, r9238, MPFR_RNDN);
        mpfr_sqrt(r9240, r9239, MPFR_RNDN);
        mpfr_mul(r9241, r9240, r9240, MPFR_RNDN);
        mpfr_set_d(r9242, w0, MPFR_RNDN);
        mpfr_mul(r9243, r9241, r9242, MPFR_RNDN);
        ;
        mpfr_set_si(r9245, mpfr_cmp(r9231, r9244) <= 0, MPFR_RNDN);
        mpfr_sub(r9246, r9234, r9231, MPFR_RNDN);
        mpfr_sqrt(r9247, r9246, MPFR_RNDN);
        mpfr_mul(r9248, r9242, r9247, MPFR_RNDN);
        mpfr_div(r9249, r9217, r9220, MPFR_RNDN);
        mpfr_mul(r9250, r9249, r9224, MPFR_RNDN);
        mpfr_div(r9251, r9234, r9218, MPFR_RNDN);
        mpfr_div(r9252, r9250, r9251, MPFR_RNDN);
        mpfr_div(r9253, r9229, r9252, MPFR_RNDN);
        mpfr_div(r9254, r9250, r9253, MPFR_RNDN);
        mpfr_sub(r9255, r9234, r9254, MPFR_RNDN);
        mpfr_sqrt(r9256, r9255, MPFR_RNDN);
        mpfr_mul(r9257, r9242, r9256, MPFR_RNDN);
        if (mpfr_get_si(r9245, MPFR_RNDN)) { mpfr_set(r9258, r9248, MPFR_RNDN); } else { mpfr_set(r9258, r9257, MPFR_RNDN); };
        if (mpfr_get_si(r9233, MPFR_RNDN)) { mpfr_set(r9259, r9243, MPFR_RNDN); } else { mpfr_set(r9259, r9258, MPFR_RNDN); };
        return mpfr_get_d(r9259, MPFR_RNDN);
}

static mpfr_t r9260, r9261, r9262, r9263, r9264, r9265, r9266, r9267, r9268, r9269, r9270, r9271, r9272, r9273, r9274, r9275, r9276, r9277, r9278, r9279, r9280, r9281, r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301, r9302;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9260);
        mpfr_init(r9261);
        mpfr_init(r9262);
        mpfr_init(r9263);
        mpfr_init(r9264);
        mpfr_init(r9265);
        mpfr_init_set_str(r9266, "2", 10, MPFR_RNDN);
        mpfr_init(r9267);
        mpfr_init(r9268);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init(r9271);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init(r9274);
        mpfr_init_set_str(r9275, "-1.2180960052631341e+268", 10, MPFR_RNDN);
        mpfr_init(r9276);
        mpfr_init_set_str(r9277, "1", 10, MPFR_RNDN);
        mpfr_init(r9278);
        mpfr_init(r9279);
        mpfr_init(r9280);
        mpfr_init(r9281);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init_set_str(r9287, "-34009522142315936.0", 10, MPFR_RNDN);
        mpfr_init(r9288);
        mpfr_init(r9289);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
}

double f_dm(double w0, double M, double D, double h, double l, double d) {
        mpfr_set_d(r9260, D, MPFR_RNDN);
        mpfr_set_d(r9261, h, MPFR_RNDN);
        mpfr_mul(r9262, r9260, r9261, MPFR_RNDN);
        mpfr_set_d(r9263, d, MPFR_RNDN);
        mpfr_div(r9264, r9262, r9263, MPFR_RNDN);
        mpfr_set_d(r9265, M, MPFR_RNDN);
        ;
        mpfr_div(r9267, r9265, r9266, MPFR_RNDN);
        mpfr_mul(r9268, r9264, r9267, MPFR_RNDN);
        mpfr_mul(r9269, r9265, r9260, MPFR_RNDN);
        mpfr_mul(r9270, r9266, r9263, MPFR_RNDN);
        mpfr_div(r9271, r9269, r9270, MPFR_RNDN);
        mpfr_set_d(r9272, l, MPFR_RNDN);
        mpfr_div(r9273, r9271, r9272, MPFR_RNDN);
        mpfr_mul(r9274, r9268, r9273, MPFR_RNDN);
        ;
        mpfr_set_si(r9276, mpfr_cmp(r9274, r9275) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9278, r9272, r9261, MPFR_RNDN);
        mpfr_div(r9279, r9278, r9271, MPFR_RNDN);
        mpfr_div(r9280, r9271, r9279, MPFR_RNDN);
        mpfr_sub(r9281, r9277, r9280, MPFR_RNDN);
        mpfr_sqrt(r9282, r9281, MPFR_RNDN);
        mpfr_sqrt(r9283, r9282, MPFR_RNDN);
        mpfr_mul(r9284, r9283, r9283, MPFR_RNDN);
        mpfr_set_d(r9285, w0, MPFR_RNDN);
        mpfr_mul(r9286, r9284, r9285, MPFR_RNDN);
        ;
        mpfr_set_si(r9288, mpfr_cmp(r9274, r9287) <= 0, MPFR_RNDN);
        mpfr_sub(r9289, r9277, r9274, MPFR_RNDN);
        mpfr_sqrt(r9290, r9289, MPFR_RNDN);
        mpfr_mul(r9291, r9285, r9290, MPFR_RNDN);
        mpfr_div(r9292, r9260, r9263, MPFR_RNDN);
        mpfr_mul(r9293, r9292, r9267, MPFR_RNDN);
        mpfr_div(r9294, r9277, r9261, MPFR_RNDN);
        mpfr_div(r9295, r9293, r9294, MPFR_RNDN);
        mpfr_div(r9296, r9272, r9295, MPFR_RNDN);
        mpfr_div(r9297, r9293, r9296, MPFR_RNDN);
        mpfr_sub(r9298, r9277, r9297, MPFR_RNDN);
        mpfr_sqrt(r9299, r9298, MPFR_RNDN);
        mpfr_mul(r9300, r9285, r9299, MPFR_RNDN);
        if (mpfr_get_si(r9288, MPFR_RNDN)) { mpfr_set(r9301, r9291, MPFR_RNDN); } else { mpfr_set(r9301, r9300, MPFR_RNDN); };
        if (mpfr_get_si(r9276, MPFR_RNDN)) { mpfr_set(r9302, r9286, MPFR_RNDN); } else { mpfr_set(r9302, r9301, MPFR_RNDN); };
        return mpfr_get_d(r9302, MPFR_RNDN);
}

