#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 r9993 = a;
        float r9994 = b;
        float r9995 = c;
        float r9996 = d;
        float r9997 = r9995 + r9996;
        float r9998 = r9994 + r9997;
        float r9999 = r9993 + r9998;
        float r10000 = 2;
        float r10001 = r9999 * r10000;
        return r10001;
}

double f_id(double a, double b, double c, double d) {
        double r10002 = a;
        double r10003 = b;
        double r10004 = c;
        double r10005 = d;
        double r10006 = r10004 + r10005;
        double r10007 = r10003 + r10006;
        double r10008 = r10002 + r10007;
        double r10009 = 2;
        double r10010 = r10008 * r10009;
        return r10010;
}


double f_of(float a, float b, float c, float d) {
        float r10011 = b;
        float r10012 = c;
        float r10013 = r10011 + r10012;
        float r10014 = d;
        float r10015 = a;
        float r10016 = r10014 + r10015;
        float r10017 = r10013 + r10016;
        float r10018 = 2;
        float r10019 = r10017 * r10018;
        return r10019;
}

double f_od(double a, double b, double c, double d) {
        double r10020 = b;
        double r10021 = c;
        double r10022 = r10020 + r10021;
        double r10023 = d;
        double r10024 = a;
        double r10025 = r10023 + r10024;
        double r10026 = r10022 + r10025;
        double r10027 = 2;
        double r10028 = r10026 * r10027;
        return r10028;
}

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 r10029, r10030, r10031, r10032, r10033, r10034, r10035, r10036, r10037;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init(r10032);
        mpfr_init(r10033);
        mpfr_init(r10034);
        mpfr_init(r10035);
        mpfr_init_set_str(r10036, "2", 10, MPFR_RNDN);
        mpfr_init(r10037);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r10029, a, MPFR_RNDN);
        mpfr_set_d(r10030, b, MPFR_RNDN);
        mpfr_set_d(r10031, c, MPFR_RNDN);
        mpfr_set_d(r10032, d, MPFR_RNDN);
        mpfr_add(r10033, r10031, r10032, MPFR_RNDN);
        mpfr_add(r10034, r10030, r10033, MPFR_RNDN);
        mpfr_add(r10035, r10029, r10034, MPFR_RNDN);
        ;
        mpfr_mul(r10037, r10035, r10036, MPFR_RNDN);
        return mpfr_get_d(r10037, MPFR_RNDN);
}

static mpfr_t r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init_set_str(r10045, "2", 10, MPFR_RNDN);
        mpfr_init(r10046);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r10038, b, MPFR_RNDN);
        mpfr_set_d(r10039, c, MPFR_RNDN);
        mpfr_add(r10040, r10038, r10039, MPFR_RNDN);
        mpfr_set_d(r10041, d, MPFR_RNDN);
        mpfr_set_d(r10042, a, MPFR_RNDN);
        mpfr_add(r10043, r10041, r10042, MPFR_RNDN);
        mpfr_add(r10044, r10040, r10043, MPFR_RNDN);
        ;
        mpfr_mul(r10046, r10044, r10045, MPFR_RNDN);
        return mpfr_get_d(r10046, MPFR_RNDN);
}

static mpfr_t r10047, r10048, r10049, r10050, r10051, r10052, r10053, r10054, r10055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10047);
        mpfr_init(r10048);
        mpfr_init(r10049);
        mpfr_init(r10050);
        mpfr_init(r10051);
        mpfr_init(r10052);
        mpfr_init(r10053);
        mpfr_init_set_str(r10054, "2", 10, MPFR_RNDN);
        mpfr_init(r10055);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r10047, b, MPFR_RNDN);
        mpfr_set_d(r10048, c, MPFR_RNDN);
        mpfr_add(r10049, r10047, r10048, MPFR_RNDN);
        mpfr_set_d(r10050, d, MPFR_RNDN);
        mpfr_set_d(r10051, a, MPFR_RNDN);
        mpfr_add(r10052, r10050, r10051, MPFR_RNDN);
        mpfr_add(r10053, r10049, r10052, MPFR_RNDN);
        ;
        mpfr_mul(r10055, r10053, r10054, MPFR_RNDN);
        return mpfr_get_d(r10055, MPFR_RNDN);
}

