#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 r56527 = x;
        float r56528 = y;
        float r56529 = r56527 / r56528;
        float r56530 = 2.0;
        float r56531 = z;
        float r56532 = r56531 * r56530;
        float r56533 = 1.0;
        float r56534 = t;
        float r56535 = r56533 - r56534;
        float r56536 = r56532 * r56535;
        float r56537 = r56530 + r56536;
        float r56538 = r56534 * r56531;
        float r56539 = r56537 / r56538;
        float r56540 = r56529 + r56539;
        return r56540;
}

double f_id(double x, double y, double z, double t) {
        double r56541 = x;
        double r56542 = y;
        double r56543 = r56541 / r56542;
        double r56544 = 2.0;
        double r56545 = z;
        double r56546 = r56545 * r56544;
        double r56547 = 1.0;
        double r56548 = t;
        double r56549 = r56547 - r56548;
        double r56550 = r56546 * r56549;
        double r56551 = r56544 + r56550;
        double r56552 = r56548 * r56545;
        double r56553 = r56551 / r56552;
        double r56554 = r56543 + r56553;
        return r56554;
}


double f_of(float x, float y, float z, float t) {
        float r56555 = 2.0;
        float r56556 = z;
        float r56557 = r56555 / r56556;
        float r56558 = r56557 + r56555;
        float r56559 = t;
        float r56560 = r56558 / r56559;
        float r56561 = x;
        float r56562 = y;
        float r56563 = r56561 / r56562;
        float r56564 = r56555 - r56563;
        float r56565 = r56560 - r56564;
        return r56565;
}

double f_od(double x, double y, double z, double t) {
        double r56566 = 2.0;
        double r56567 = z;
        double r56568 = r56566 / r56567;
        double r56569 = r56568 + r56566;
        double r56570 = t;
        double r56571 = r56569 / r56570;
        double r56572 = x;
        double r56573 = y;
        double r56574 = r56572 / r56573;
        double r56575 = r56566 - r56574;
        double r56576 = r56571 - r56575;
        return r56576;
}

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 r56577, r56578, r56579, r56580, r56581, r56582, r56583, r56584, r56585, r56586, r56587, r56588, r56589, r56590;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56577);
        mpfr_init(r56578);
        mpfr_init(r56579);
        mpfr_init_set_str(r56580, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56581);
        mpfr_init(r56582);
        mpfr_init_set_str(r56583, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56584);
        mpfr_init(r56585);
        mpfr_init(r56586);
        mpfr_init(r56587);
        mpfr_init(r56588);
        mpfr_init(r56589);
        mpfr_init(r56590);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r56577, x, MPFR_RNDN);
        mpfr_set_d(r56578, y, MPFR_RNDN);
        mpfr_div(r56579, r56577, r56578, MPFR_RNDN);
        ;
        mpfr_set_d(r56581, z, MPFR_RNDN);
        mpfr_mul(r56582, r56581, r56580, MPFR_RNDN);
        ;
        mpfr_set_d(r56584, t, MPFR_RNDN);
        mpfr_sub(r56585, r56583, r56584, MPFR_RNDN);
        mpfr_mul(r56586, r56582, r56585, MPFR_RNDN);
        mpfr_add(r56587, r56580, r56586, MPFR_RNDN);
        mpfr_mul(r56588, r56584, r56581, MPFR_RNDN);
        mpfr_div(r56589, r56587, r56588, MPFR_RNDN);
        mpfr_add(r56590, r56579, r56589, MPFR_RNDN);
        return mpfr_get_d(r56590, MPFR_RNDN);
}

static mpfr_t r56591, r56592, r56593, r56594, r56595, r56596, r56597, r56598, r56599, r56600, r56601;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56591, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56592);
        mpfr_init(r56593);
        mpfr_init(r56594);
        mpfr_init(r56595);
        mpfr_init(r56596);
        mpfr_init(r56597);
        mpfr_init(r56598);
        mpfr_init(r56599);
        mpfr_init(r56600);
        mpfr_init(r56601);
}

double f_fm(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r56592, z, MPFR_RNDN);
        mpfr_div(r56593, r56591, r56592, MPFR_RNDN);
        mpfr_add(r56594, r56593, r56591, MPFR_RNDN);
        mpfr_set_d(r56595, t, MPFR_RNDN);
        mpfr_div(r56596, r56594, r56595, MPFR_RNDN);
        mpfr_set_d(r56597, x, MPFR_RNDN);
        mpfr_set_d(r56598, y, MPFR_RNDN);
        mpfr_div(r56599, r56597, r56598, MPFR_RNDN);
        mpfr_sub(r56600, r56591, r56599, MPFR_RNDN);
        mpfr_sub(r56601, r56596, r56600, MPFR_RNDN);
        return mpfr_get_d(r56601, MPFR_RNDN);
}

static mpfr_t r56602, r56603, r56604, r56605, r56606, r56607, r56608, r56609, r56610, r56611, r56612;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r56602, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56603);
        mpfr_init(r56604);
        mpfr_init(r56605);
        mpfr_init(r56606);
        mpfr_init(r56607);
        mpfr_init(r56608);
        mpfr_init(r56609);
        mpfr_init(r56610);
        mpfr_init(r56611);
        mpfr_init(r56612);
}

double f_dm(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r56603, z, MPFR_RNDN);
        mpfr_div(r56604, r56602, r56603, MPFR_RNDN);
        mpfr_add(r56605, r56604, r56602, MPFR_RNDN);
        mpfr_set_d(r56606, t, MPFR_RNDN);
        mpfr_div(r56607, r56605, r56606, MPFR_RNDN);
        mpfr_set_d(r56608, x, MPFR_RNDN);
        mpfr_set_d(r56609, y, MPFR_RNDN);
        mpfr_div(r56610, r56608, r56609, MPFR_RNDN);
        mpfr_sub(r56611, r56602, r56610, MPFR_RNDN);
        mpfr_sub(r56612, r56607, r56611, MPFR_RNDN);
        return mpfr_get_d(r56612, MPFR_RNDN);
}

