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

char *name = "Expression 1, p15";

double f_if(float a, float b, float c, float d, float e) {
        float r10210 = e;
        float r10211 = d;
        float r10212 = r10210 + r10211;
        float r10213 = c;
        float r10214 = r10212 + r10213;
        float r10215 = b;
        float r10216 = r10214 + r10215;
        float r10217 = a;
        float r10218 = r10216 + r10217;
        return r10218;
}

double f_id(double a, double b, double c, double d, double e) {
        double r10219 = e;
        double r10220 = d;
        double r10221 = r10219 + r10220;
        double r10222 = c;
        double r10223 = r10221 + r10222;
        double r10224 = b;
        double r10225 = r10223 + r10224;
        double r10226 = a;
        double r10227 = r10225 + r10226;
        return r10227;
}


double f_of(float a, float b, float c, float d, float e) {
        float r10228 = e;
        float r10229 = d;
        float r10230 = r10228 + r10229;
        float r10231 = c;
        float r10232 = r10230 + r10231;
        float r10233 = b;
        float r10234 = r10232 + r10233;
        float r10235 = a;
        float r10236 = r10234 + r10235;
        return r10236;
}

double f_od(double a, double b, double c, double d, double e) {
        double r10237 = e;
        double r10238 = d;
        double r10239 = r10237 + r10238;
        double r10240 = c;
        double r10241 = r10239 + r10240;
        double r10242 = b;
        double r10243 = r10241 + r10242;
        double r10244 = a;
        double r10245 = r10243 + r10244;
        return r10245;
}

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 r10246, r10247, r10248, r10249, r10250, r10251, r10252, r10253, r10254;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10246);
        mpfr_init(r10247);
        mpfr_init(r10248);
        mpfr_init(r10249);
        mpfr_init(r10250);
        mpfr_init(r10251);
        mpfr_init(r10252);
        mpfr_init(r10253);
        mpfr_init(r10254);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r10246, e, MPFR_RNDN);
        mpfr_set_d(r10247, d, MPFR_RNDN);
        mpfr_add(r10248, r10246, r10247, MPFR_RNDN);
        mpfr_set_d(r10249, c, MPFR_RNDN);
        mpfr_add(r10250, r10248, r10249, MPFR_RNDN);
        mpfr_set_d(r10251, b, MPFR_RNDN);
        mpfr_add(r10252, r10250, r10251, MPFR_RNDN);
        mpfr_set_d(r10253, a, MPFR_RNDN);
        mpfr_add(r10254, r10252, r10253, MPFR_RNDN);
        return mpfr_get_d(r10254, MPFR_RNDN);
}

static mpfr_t r10255, r10256, r10257, r10258, r10259, r10260, r10261, r10262, r10263;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10255);
        mpfr_init(r10256);
        mpfr_init(r10257);
        mpfr_init(r10258);
        mpfr_init(r10259);
        mpfr_init(r10260);
        mpfr_init(r10261);
        mpfr_init(r10262);
        mpfr_init(r10263);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r10255, e, MPFR_RNDN);
        mpfr_set_d(r10256, d, MPFR_RNDN);
        mpfr_add(r10257, r10255, r10256, MPFR_RNDN);
        mpfr_set_d(r10258, c, MPFR_RNDN);
        mpfr_add(r10259, r10257, r10258, MPFR_RNDN);
        mpfr_set_d(r10260, b, MPFR_RNDN);
        mpfr_add(r10261, r10259, r10260, MPFR_RNDN);
        mpfr_set_d(r10262, a, MPFR_RNDN);
        mpfr_add(r10263, r10261, r10262, MPFR_RNDN);
        return mpfr_get_d(r10263, MPFR_RNDN);
}

static mpfr_t r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10264);
        mpfr_init(r10265);
        mpfr_init(r10266);
        mpfr_init(r10267);
        mpfr_init(r10268);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r10264, e, MPFR_RNDN);
        mpfr_set_d(r10265, d, MPFR_RNDN);
        mpfr_add(r10266, r10264, r10265, MPFR_RNDN);
        mpfr_set_d(r10267, c, MPFR_RNDN);
        mpfr_add(r10268, r10266, r10267, MPFR_RNDN);
        mpfr_set_d(r10269, b, MPFR_RNDN);
        mpfr_add(r10270, r10268, r10269, MPFR_RNDN);
        mpfr_set_d(r10271, a, MPFR_RNDN);
        mpfr_add(r10272, r10270, r10271, MPFR_RNDN);
        return mpfr_get_d(r10272, MPFR_RNDN);
}

