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

char *name = "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2";

double f_if(float x, float y, float z, float t) {
        float r55284 = x;
        float r55285 = y;
        float r55286 = r55284 / r55285;
        float r55287 = 2.0f;
        float r55288 = z;
        float r55289 = r55288 * r55287;
        float r55290 = 1.0f;
        float r55291 = t;
        float r55292 = r55290 - r55291;
        float r55293 = r55289 * r55292;
        float r55294 = r55287 + r55293;
        float r55295 = r55291 * r55288;
        float r55296 = r55294 / r55295;
        float r55297 = r55286 + r55296;
        return r55297;
}

double f_id(double x, double y, double z, double t) {
        double r55298 = x;
        double r55299 = y;
        double r55300 = r55298 / r55299;
        double r55301 = 2.0;
        double r55302 = z;
        double r55303 = r55302 * r55301;
        double r55304 = 1.0;
        double r55305 = t;
        double r55306 = r55304 - r55305;
        double r55307 = r55303 * r55306;
        double r55308 = r55301 + r55307;
        double r55309 = r55305 * r55302;
        double r55310 = r55308 / r55309;
        double r55311 = r55300 + r55310;
        return r55311;
}


double f_of(float x, float y, float z, float t) {
        float r55312 = z;
        float r55313 = -5.070143915338624e-32f;
        bool r55314 = r55312 <= r55313;
        float r55315 = 2.0f;
        float r55316 = r55315 / r55312;
        float r55317 = r55316 * r55316;
        float r55318 = r55315 * r55315;
        float r55319 = r55317 - r55318;
        float r55320 = t;
        float r55321 = r55316 - r55315;
        float r55322 = r55320 * r55321;
        float r55323 = r55319 / r55322;
        float r55324 = x;
        float r55325 = y;
        float r55326 = r55324 / r55325;
        float r55327 = r55315 - r55326;
        float r55328 = r55323 - r55327;
        float r55329 = 9.246126022216187e-153f;
        bool r55330 = r55312 <= r55329;
        float r55331 = r55312 * r55315;
        float r55332 = 1.0f;
        float r55333 = r55332 - r55320;
        float r55334 = r55331 * r55333;
        float r55335 = r55315 + r55334;
        float r55336 = r55320 * r55312;
        float r55337 = r55335 / r55336;
        float r55338 = r55326 + r55337;
        float r55339 = r55330 ? r55338 : r55328;
        float r55340 = r55314 ? r55328 : r55339;
        return r55340;
}

double f_od(double x, double y, double z, double t) {
        double r55341 = z;
        double r55342 = -5.070143915338624e-32;
        bool r55343 = r55341 <= r55342;
        double r55344 = 2.0;
        double r55345 = r55344 / r55341;
        double r55346 = r55345 * r55345;
        double r55347 = r55344 * r55344;
        double r55348 = r55346 - r55347;
        double r55349 = t;
        double r55350 = r55345 - r55344;
        double r55351 = r55349 * r55350;
        double r55352 = r55348 / r55351;
        double r55353 = x;
        double r55354 = y;
        double r55355 = r55353 / r55354;
        double r55356 = r55344 - r55355;
        double r55357 = r55352 - r55356;
        double r55358 = 9.246126022216187e-153;
        bool r55359 = r55341 <= r55358;
        double r55360 = r55341 * r55344;
        double r55361 = 1.0;
        double r55362 = r55361 - r55349;
        double r55363 = r55360 * r55362;
        double r55364 = r55344 + r55363;
        double r55365 = r55349 * r55341;
        double r55366 = r55364 / r55365;
        double r55367 = r55355 + r55366;
        double r55368 = r55359 ? r55367 : r55357;
        double r55369 = r55343 ? r55357 : r55368;
        return r55369;
}

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 r55370, r55371, r55372, r55373, r55374, r55375, r55376, r55377, r55378, r55379, r55380, r55381, r55382, r55383;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r55370);
        mpfr_init(r55371);
        mpfr_init(r55372);
        mpfr_init_set_str(r55373, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55374);
        mpfr_init(r55375);
        mpfr_init_set_str(r55376, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55377);
        mpfr_init(r55378);
        mpfr_init(r55379);
        mpfr_init(r55380);
        mpfr_init(r55381);
        mpfr_init(r55382);
        mpfr_init(r55383);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r55370, x, MPFR_RNDN);
        mpfr_set_d(r55371, y, MPFR_RNDN);
        mpfr_div(r55372, r55370, r55371, MPFR_RNDN);
        ;
        mpfr_set_d(r55374, z, MPFR_RNDN);
        mpfr_mul(r55375, r55374, r55373, MPFR_RNDN);
        ;
        mpfr_set_d(r55377, t, MPFR_RNDN);
        mpfr_sub(r55378, r55376, r55377, MPFR_RNDN);
        mpfr_mul(r55379, r55375, r55378, MPFR_RNDN);
        mpfr_add(r55380, r55373, r55379, MPFR_RNDN);
        mpfr_mul(r55381, r55377, r55374, MPFR_RNDN);
        mpfr_div(r55382, r55380, r55381, MPFR_RNDN);
        mpfr_add(r55383, r55372, r55382, MPFR_RNDN);
        return mpfr_get_d(r55383, MPFR_RNDN);
}

static mpfr_t r55384, r55385, r55386, r55387, r55388, r55389, r55390, r55391, r55392, r55393, r55394, r55395, r55396, r55397, r55398, r55399, r55400, r55401, r55402, r55403, r55404, r55405, r55406, r55407, r55408, r55409, r55410, r55411, r55412;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55384);
        mpfr_init_set_str(r55385, "-5.070143915338624e-32", 10, MPFR_RNDN);
        mpfr_init(r55386);
        mpfr_init_set_str(r55387, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55388);
        mpfr_init(r55389);
        mpfr_init(r55390);
        mpfr_init(r55391);
        mpfr_init(r55392);
        mpfr_init(r55393);
        mpfr_init(r55394);
        mpfr_init(r55395);
        mpfr_init(r55396);
        mpfr_init(r55397);
        mpfr_init(r55398);
        mpfr_init(r55399);
        mpfr_init(r55400);
        mpfr_init_set_str(r55401, "9.246126022216187e-153", 10, MPFR_RNDN);
        mpfr_init(r55402);
        mpfr_init(r55403);
        mpfr_init_set_str(r55404, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55405);
        mpfr_init(r55406);
        mpfr_init(r55407);
        mpfr_init(r55408);
        mpfr_init(r55409);
        mpfr_init(r55410);
        mpfr_init(r55411);
        mpfr_init(r55412);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r55384, z, MPFR_RNDN);
        ;
        mpfr_set_si(r55386, mpfr_cmp(r55384, r55385) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r55388, r55387, r55384, MPFR_RNDN);
        mpfr_sqr(r55389, r55388, MPFR_RNDN);
        mpfr_sqr(r55390, r55387, MPFR_RNDN);
        mpfr_sub(r55391, r55389, r55390, MPFR_RNDN);
        mpfr_set_d(r55392, t, MPFR_RNDN);
        mpfr_sub(r55393, r55388, r55387, MPFR_RNDN);
        mpfr_mul(r55394, r55392, r55393, MPFR_RNDN);
        mpfr_div(r55395, r55391, r55394, MPFR_RNDN);
        mpfr_set_d(r55396, x, MPFR_RNDN);
        mpfr_set_d(r55397, y, MPFR_RNDN);
        mpfr_div(r55398, r55396, r55397, MPFR_RNDN);
        mpfr_sub(r55399, r55387, r55398, MPFR_RNDN);
        mpfr_sub(r55400, r55395, r55399, MPFR_RNDN);
        ;
        mpfr_set_si(r55402, mpfr_cmp(r55384, r55401) <= 0, MPFR_RNDN);
        mpfr_mul(r55403, r55384, r55387, MPFR_RNDN);
        ;
        mpfr_sub(r55405, r55404, r55392, MPFR_RNDN);
        mpfr_mul(r55406, r55403, r55405, MPFR_RNDN);
        mpfr_add(r55407, r55387, r55406, MPFR_RNDN);
        mpfr_mul(r55408, r55392, r55384, MPFR_RNDN);
        mpfr_div(r55409, r55407, r55408, MPFR_RNDN);
        mpfr_add(r55410, r55398, r55409, MPFR_RNDN);
        if (mpfr_get_si(r55402, MPFR_RNDN)) { mpfr_set(r55411, r55410, MPFR_RNDN); } else { mpfr_set(r55411, r55400, MPFR_RNDN); };
        if (mpfr_get_si(r55386, MPFR_RNDN)) { mpfr_set(r55412, r55400, MPFR_RNDN); } else { mpfr_set(r55412, r55411, MPFR_RNDN); };
        return mpfr_get_d(r55412, MPFR_RNDN);
}

static mpfr_t r55413, r55414, r55415, r55416, r55417, r55418, r55419, r55420, r55421, r55422, r55423, r55424, r55425, r55426, r55427, r55428, r55429, r55430, r55431, r55432, r55433, r55434, r55435, r55436, r55437, r55438, r55439, r55440, r55441;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r55413);
        mpfr_init_set_str(r55414, "-5.070143915338624e-32", 10, MPFR_RNDN);
        mpfr_init(r55415);
        mpfr_init_set_str(r55416, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55417);
        mpfr_init(r55418);
        mpfr_init(r55419);
        mpfr_init(r55420);
        mpfr_init(r55421);
        mpfr_init(r55422);
        mpfr_init(r55423);
        mpfr_init(r55424);
        mpfr_init(r55425);
        mpfr_init(r55426);
        mpfr_init(r55427);
        mpfr_init(r55428);
        mpfr_init(r55429);
        mpfr_init_set_str(r55430, "9.246126022216187e-153", 10, MPFR_RNDN);
        mpfr_init(r55431);
        mpfr_init(r55432);
        mpfr_init_set_str(r55433, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55434);
        mpfr_init(r55435);
        mpfr_init(r55436);
        mpfr_init(r55437);
        mpfr_init(r55438);
        mpfr_init(r55439);
        mpfr_init(r55440);
        mpfr_init(r55441);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r55413, z, MPFR_RNDN);
        ;
        mpfr_set_si(r55415, mpfr_cmp(r55413, r55414) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r55417, r55416, r55413, MPFR_RNDN);
        mpfr_sqr(r55418, r55417, MPFR_RNDN);
        mpfr_sqr(r55419, r55416, MPFR_RNDN);
        mpfr_sub(r55420, r55418, r55419, MPFR_RNDN);
        mpfr_set_d(r55421, t, MPFR_RNDN);
        mpfr_sub(r55422, r55417, r55416, MPFR_RNDN);
        mpfr_mul(r55423, r55421, r55422, MPFR_RNDN);
        mpfr_div(r55424, r55420, r55423, MPFR_RNDN);
        mpfr_set_d(r55425, x, MPFR_RNDN);
        mpfr_set_d(r55426, y, MPFR_RNDN);
        mpfr_div(r55427, r55425, r55426, MPFR_RNDN);
        mpfr_sub(r55428, r55416, r55427, MPFR_RNDN);
        mpfr_sub(r55429, r55424, r55428, MPFR_RNDN);
        ;
        mpfr_set_si(r55431, mpfr_cmp(r55413, r55430) <= 0, MPFR_RNDN);
        mpfr_mul(r55432, r55413, r55416, MPFR_RNDN);
        ;
        mpfr_sub(r55434, r55433, r55421, MPFR_RNDN);
        mpfr_mul(r55435, r55432, r55434, MPFR_RNDN);
        mpfr_add(r55436, r55416, r55435, MPFR_RNDN);
        mpfr_mul(r55437, r55421, r55413, MPFR_RNDN);
        mpfr_div(r55438, r55436, r55437, MPFR_RNDN);
        mpfr_add(r55439, r55427, r55438, MPFR_RNDN);
        if (mpfr_get_si(r55431, MPFR_RNDN)) { mpfr_set(r55440, r55439, MPFR_RNDN); } else { mpfr_set(r55440, r55429, MPFR_RNDN); };
        if (mpfr_get_si(r55415, MPFR_RNDN)) { mpfr_set(r55441, r55429, MPFR_RNDN); } else { mpfr_set(r55441, r55440, MPFR_RNDN); };
        return mpfr_get_d(r55441, MPFR_RNDN);
}

