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

char *name = "Expression, p6";

double f_if(float a, float b, float c, float d) {
        float r51589 = a;
        float r51590 = b;
        float r51591 = c;
        float r51592 = d;
        float r51593 = r51591 + r51592;
        float r51594 = r51590 + r51593;
        float r51595 = r51589 + r51594;
        float r51596 = 2;
        float r51597 = r51595 * r51596;
        return r51597;
}

double f_id(double a, double b, double c, double d) {
        double r51598 = a;
        double r51599 = b;
        double r51600 = c;
        double r51601 = d;
        double r51602 = r51600 + r51601;
        double r51603 = r51599 + r51602;
        double r51604 = r51598 + r51603;
        double r51605 = 2;
        double r51606 = r51604 * r51605;
        return r51606;
}


double f_of(float a, float b, float c, float d) {
        float r51607 = a;
        float r51608 = b;
        float r51609 = c;
        float r51610 = d;
        float r51611 = r51609 + r51610;
        float r51612 = r51608 + r51611;
        float r51613 = r51607 + r51612;
        float r51614 = 2;
        float r51615 = r51613 * r51614;
        return r51615;
}

double f_od(double a, double b, double c, double d) {
        double r51616 = a;
        double r51617 = b;
        double r51618 = c;
        double r51619 = d;
        double r51620 = r51618 + r51619;
        double r51621 = r51617 + r51620;
        double r51622 = r51616 + r51621;
        double r51623 = 2;
        double r51624 = r51622 * r51623;
        return r51624;
}

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 r51625, r51626, r51627, r51628, r51629, r51630, r51631, r51632, r51633;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51625);
        mpfr_init(r51626);
        mpfr_init(r51627);
        mpfr_init(r51628);
        mpfr_init(r51629);
        mpfr_init(r51630);
        mpfr_init(r51631);
        mpfr_init_set_str(r51632, "2", 10, MPFR_RNDN);
        mpfr_init(r51633);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r51625, a, MPFR_RNDN);
        mpfr_set_d(r51626, b, MPFR_RNDN);
        mpfr_set_d(r51627, c, MPFR_RNDN);
        mpfr_set_d(r51628, d, MPFR_RNDN);
        mpfr_add(r51629, r51627, r51628, MPFR_RNDN);
        mpfr_add(r51630, r51626, r51629, MPFR_RNDN);
        mpfr_add(r51631, r51625, r51630, MPFR_RNDN);
        ;
        mpfr_mul(r51633, r51631, r51632, MPFR_RNDN);
        return mpfr_get_d(r51633, MPFR_RNDN);
}

static mpfr_t r51634, r51635, r51636, r51637, r51638, r51639, r51640, r51641, r51642;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51634);
        mpfr_init(r51635);
        mpfr_init(r51636);
        mpfr_init(r51637);
        mpfr_init(r51638);
        mpfr_init(r51639);
        mpfr_init(r51640);
        mpfr_init_set_str(r51641, "2", 10, MPFR_RNDN);
        mpfr_init(r51642);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r51634, a, MPFR_RNDN);
        mpfr_set_d(r51635, b, MPFR_RNDN);
        mpfr_set_d(r51636, c, MPFR_RNDN);
        mpfr_set_d(r51637, d, MPFR_RNDN);
        mpfr_add(r51638, r51636, r51637, MPFR_RNDN);
        mpfr_add(r51639, r51635, r51638, MPFR_RNDN);
        mpfr_add(r51640, r51634, r51639, MPFR_RNDN);
        ;
        mpfr_mul(r51642, r51640, r51641, MPFR_RNDN);
        return mpfr_get_d(r51642, MPFR_RNDN);
}

static mpfr_t r51643, r51644, r51645, r51646, r51647, r51648, r51649, r51650, r51651;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51643);
        mpfr_init(r51644);
        mpfr_init(r51645);
        mpfr_init(r51646);
        mpfr_init(r51647);
        mpfr_init(r51648);
        mpfr_init(r51649);
        mpfr_init_set_str(r51650, "2", 10, MPFR_RNDN);
        mpfr_init(r51651);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r51643, a, MPFR_RNDN);
        mpfr_set_d(r51644, b, MPFR_RNDN);
        mpfr_set_d(r51645, c, MPFR_RNDN);
        mpfr_set_d(r51646, d, MPFR_RNDN);
        mpfr_add(r51647, r51645, r51646, MPFR_RNDN);
        mpfr_add(r51648, r51644, r51647, MPFR_RNDN);
        mpfr_add(r51649, r51643, r51648, MPFR_RNDN);
        ;
        mpfr_mul(r51651, r51649, r51650, MPFR_RNDN);
        return mpfr_get_d(r51651, MPFR_RNDN);
}

