#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 r56469 = x;
        float r56470 = y;
        float r56471 = r56469 / r56470;
        float r56472 = 2.0;
        float r56473 = z;
        float r56474 = r56473 * r56472;
        float r56475 = 1.0;
        float r56476 = t;
        float r56477 = r56475 - r56476;
        float r56478 = r56474 * r56477;
        float r56479 = r56472 + r56478;
        float r56480 = r56476 * r56473;
        float r56481 = r56479 / r56480;
        float r56482 = r56471 + r56481;
        return r56482;
}

double f_id(double x, double y, double z, double t) {
        double r56483 = x;
        double r56484 = y;
        double r56485 = r56483 / r56484;
        double r56486 = 2.0;
        double r56487 = z;
        double r56488 = r56487 * r56486;
        double r56489 = 1.0;
        double r56490 = t;
        double r56491 = r56489 - r56490;
        double r56492 = r56488 * r56491;
        double r56493 = r56486 + r56492;
        double r56494 = r56490 * r56487;
        double r56495 = r56493 / r56494;
        double r56496 = r56485 + r56495;
        return r56496;
}


double f_of(float x, float y, float z, float t) {
        float r56497 = 2.0;
        float r56498 = z;
        float r56499 = r56497 / r56498;
        float r56500 = r56499 + r56497;
        float r56501 = t;
        float r56502 = r56500 / r56501;
        float r56503 = x;
        float r56504 = y;
        float r56505 = r56503 / r56504;
        float r56506 = r56497 - r56505;
        float r56507 = r56502 - r56506;
        return r56507;
}

double f_od(double x, double y, double z, double t) {
        double r56508 = 2.0;
        double r56509 = z;
        double r56510 = r56508 / r56509;
        double r56511 = r56510 + r56508;
        double r56512 = t;
        double r56513 = r56511 / r56512;
        double r56514 = x;
        double r56515 = y;
        double r56516 = r56514 / r56515;
        double r56517 = r56508 - r56516;
        double r56518 = r56513 - r56517;
        return r56518;
}

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 r56519, r56520, r56521, r56522, r56523, r56524, r56525, r56526, r56527, r56528, r56529, r56530, r56531, r56532;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56519);
        mpfr_init(r56520);
        mpfr_init(r56521);
        mpfr_init_set_str(r56522, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56523);
        mpfr_init(r56524);
        mpfr_init_set_str(r56525, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56526);
        mpfr_init(r56527);
        mpfr_init(r56528);
        mpfr_init(r56529);
        mpfr_init(r56530);
        mpfr_init(r56531);
        mpfr_init(r56532);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r56519, x, MPFR_RNDN);
        mpfr_set_d(r56520, y, MPFR_RNDN);
        mpfr_div(r56521, r56519, r56520, MPFR_RNDN);
        ;
        mpfr_set_d(r56523, z, MPFR_RNDN);
        mpfr_mul(r56524, r56523, r56522, MPFR_RNDN);
        ;
        mpfr_set_d(r56526, t, MPFR_RNDN);
        mpfr_sub(r56527, r56525, r56526, MPFR_RNDN);
        mpfr_mul(r56528, r56524, r56527, MPFR_RNDN);
        mpfr_add(r56529, r56522, r56528, MPFR_RNDN);
        mpfr_mul(r56530, r56526, r56523, MPFR_RNDN);
        mpfr_div(r56531, r56529, r56530, MPFR_RNDN);
        mpfr_add(r56532, r56521, r56531, MPFR_RNDN);
        return mpfr_get_d(r56532, MPFR_RNDN);
}

static mpfr_t r56533, r56534, r56535, r56536, r56537, r56538, r56539, r56540, r56541, r56542, r56543;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56533, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56534);
        mpfr_init(r56535);
        mpfr_init(r56536);
        mpfr_init(r56537);
        mpfr_init(r56538);
        mpfr_init(r56539);
        mpfr_init(r56540);
        mpfr_init(r56541);
        mpfr_init(r56542);
        mpfr_init(r56543);
}

double f_fm(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r56534, z, MPFR_RNDN);
        mpfr_div(r56535, r56533, r56534, MPFR_RNDN);
        mpfr_add(r56536, r56535, r56533, MPFR_RNDN);
        mpfr_set_d(r56537, t, MPFR_RNDN);
        mpfr_div(r56538, r56536, r56537, MPFR_RNDN);
        mpfr_set_d(r56539, x, MPFR_RNDN);
        mpfr_set_d(r56540, y, MPFR_RNDN);
        mpfr_div(r56541, r56539, r56540, MPFR_RNDN);
        mpfr_sub(r56542, r56533, r56541, MPFR_RNDN);
        mpfr_sub(r56543, r56538, r56542, MPFR_RNDN);
        return mpfr_get_d(r56543, MPFR_RNDN);
}

static mpfr_t r56544, r56545, r56546, r56547, r56548, r56549, r56550, r56551, r56552, r56553, r56554;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56544, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56545);
        mpfr_init(r56546);
        mpfr_init(r56547);
        mpfr_init(r56548);
        mpfr_init(r56549);
        mpfr_init(r56550);
        mpfr_init(r56551);
        mpfr_init(r56552);
        mpfr_init(r56553);
        mpfr_init(r56554);
}

double f_dm(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r56545, z, MPFR_RNDN);
        mpfr_div(r56546, r56544, r56545, MPFR_RNDN);
        mpfr_add(r56547, r56546, r56544, MPFR_RNDN);
        mpfr_set_d(r56548, t, MPFR_RNDN);
        mpfr_div(r56549, r56547, r56548, MPFR_RNDN);
        mpfr_set_d(r56550, x, MPFR_RNDN);
        mpfr_set_d(r56551, y, MPFR_RNDN);
        mpfr_div(r56552, r56550, r56551, MPFR_RNDN);
        mpfr_sub(r56553, r56544, r56552, MPFR_RNDN);
        mpfr_sub(r56554, r56549, r56553, MPFR_RNDN);
        return mpfr_get_d(r56554, MPFR_RNDN);
}

