#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 r9257 = a;
        float r9258 = b;
        float r9259 = c;
        float r9260 = d;
        float r9261 = r9259 + r9260;
        float r9262 = r9258 + r9261;
        float r9263 = r9257 + r9262;
        float r9264 = 2.0f;
        float r9265 = r9263 * r9264;
        return r9265;
}

double f_id(double a, double b, double c, double d) {
        double r9266 = a;
        double r9267 = b;
        double r9268 = c;
        double r9269 = d;
        double r9270 = r9268 + r9269;
        double r9271 = r9267 + r9270;
        double r9272 = r9266 + r9271;
        double r9273 = 2.0;
        double r9274 = r9272 * r9273;
        return r9274;
}


double f_of(float a, float b, float c, float d) {
        float r9275 = b;
        float r9276 = c;
        float r9277 = a;
        float r9278 = d;
        float r9279 = r9277 + r9278;
        float r9280 = r9276 + r9279;
        float r9281 = r9275 + r9280;
        float r9282 = 2.0f;
        float r9283 = r9281 * r9282;
        return r9283;
}

double f_od(double a, double b, double c, double d) {
        double r9284 = b;
        double r9285 = c;
        double r9286 = a;
        double r9287 = d;
        double r9288 = r9286 + r9287;
        double r9289 = r9285 + r9288;
        double r9290 = r9284 + r9289;
        double r9291 = 2.0;
        double r9292 = r9290 * r9291;
        return r9292;
}

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 r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300, r9301;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init_set_str(r9300, "2", 10, MPFR_RNDN);
        mpfr_init(r9301);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9293, a, MPFR_RNDN);
        mpfr_set_d(r9294, b, MPFR_RNDN);
        mpfr_set_d(r9295, c, MPFR_RNDN);
        mpfr_set_d(r9296, d, MPFR_RNDN);
        mpfr_add(r9297, r9295, r9296, MPFR_RNDN);
        mpfr_add(r9298, r9294, r9297, MPFR_RNDN);
        mpfr_add(r9299, r9293, r9298, MPFR_RNDN);
        ;
        mpfr_mul(r9301, r9299, r9300, MPFR_RNDN);
        return mpfr_get_d(r9301, MPFR_RNDN);
}

static mpfr_t r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init(r9307);
        mpfr_init(r9308);
        mpfr_init_set_str(r9309, "2", 10, MPFR_RNDN);
        mpfr_init(r9310);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9302, b, MPFR_RNDN);
        mpfr_set_d(r9303, c, MPFR_RNDN);
        mpfr_set_d(r9304, a, MPFR_RNDN);
        mpfr_set_d(r9305, d, MPFR_RNDN);
        mpfr_add(r9306, r9304, r9305, MPFR_RNDN);
        mpfr_add(r9307, r9303, r9306, MPFR_RNDN);
        mpfr_add(r9308, r9302, r9307, MPFR_RNDN);
        ;
        mpfr_mul(r9310, r9308, r9309, MPFR_RNDN);
        return mpfr_get_d(r9310, MPFR_RNDN);
}

static mpfr_t r9311, r9312, r9313, r9314, r9315, r9316, r9317, r9318, r9319;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init(r9315);
        mpfr_init(r9316);
        mpfr_init(r9317);
        mpfr_init_set_str(r9318, "2", 10, MPFR_RNDN);
        mpfr_init(r9319);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9311, b, MPFR_RNDN);
        mpfr_set_d(r9312, c, MPFR_RNDN);
        mpfr_set_d(r9313, a, MPFR_RNDN);
        mpfr_set_d(r9314, d, MPFR_RNDN);
        mpfr_add(r9315, r9313, r9314, MPFR_RNDN);
        mpfr_add(r9316, r9312, r9315, MPFR_RNDN);
        mpfr_add(r9317, r9311, r9316, MPFR_RNDN);
        ;
        mpfr_mul(r9319, r9317, r9318, MPFR_RNDN);
        return mpfr_get_d(r9319, MPFR_RNDN);
}

