#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 r9246 = a;
        float r9247 = b;
        float r9248 = c;
        float r9249 = d;
        float r9250 = r9248 + r9249;
        float r9251 = r9247 + r9250;
        float r9252 = r9246 + r9251;
        float r9253 = 2.0f;
        float r9254 = r9252 * r9253;
        return r9254;
}

double f_id(double a, double b, double c, double d) {
        double r9255 = a;
        double r9256 = b;
        double r9257 = c;
        double r9258 = d;
        double r9259 = r9257 + r9258;
        double r9260 = r9256 + r9259;
        double r9261 = r9255 + r9260;
        double r9262 = 2.0;
        double r9263 = r9261 * r9262;
        return r9263;
}


double f_of(float a, float b, float c, float d) {
        float r9264 = b;
        float r9265 = c;
        float r9266 = a;
        float r9267 = d;
        float r9268 = r9266 + r9267;
        float r9269 = r9265 + r9268;
        float r9270 = r9264 + r9269;
        float r9271 = 2.0f;
        float r9272 = r9270 * r9271;
        return r9272;
}

double f_od(double a, double b, double c, double d) {
        double r9273 = b;
        double r9274 = c;
        double r9275 = a;
        double r9276 = d;
        double r9277 = r9275 + r9276;
        double r9278 = r9274 + r9277;
        double r9279 = r9273 + r9278;
        double r9280 = 2.0;
        double r9281 = r9279 * r9280;
        return r9281;
}

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 r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init_set_str(r9289, "2", 10, MPFR_RNDN);
        mpfr_init(r9290);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9282, a, MPFR_RNDN);
        mpfr_set_d(r9283, b, MPFR_RNDN);
        mpfr_set_d(r9284, c, MPFR_RNDN);
        mpfr_set_d(r9285, d, MPFR_RNDN);
        mpfr_add(r9286, r9284, r9285, MPFR_RNDN);
        mpfr_add(r9287, r9283, r9286, MPFR_RNDN);
        mpfr_add(r9288, r9282, r9287, MPFR_RNDN);
        ;
        mpfr_mul(r9290, r9288, r9289, MPFR_RNDN);
        return mpfr_get_d(r9290, MPFR_RNDN);
}

static mpfr_t r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init_set_str(r9298, "2", 10, MPFR_RNDN);
        mpfr_init(r9299);
}

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

static mpfr_t r9300, r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init_set_str(r9307, "2", 10, MPFR_RNDN);
        mpfr_init(r9308);
}

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

