#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 r49304 = e;
        float r49305 = d;
        float r49306 = r49304 + r49305;
        float r49307 = c;
        float r49308 = r49306 + r49307;
        float r49309 = b;
        float r49310 = r49308 + r49309;
        float r49311 = a;
        float r49312 = r49310 + r49311;
        return r49312;
}

double f_id(double a, double b, double c, double d, double e) {
        double r49313 = e;
        double r49314 = d;
        double r49315 = r49313 + r49314;
        double r49316 = c;
        double r49317 = r49315 + r49316;
        double r49318 = b;
        double r49319 = r49317 + r49318;
        double r49320 = a;
        double r49321 = r49319 + r49320;
        return r49321;
}


double f_of(float a, float b, float c, float d, float e) {
        float r49322 = e;
        float r49323 = d;
        float r49324 = r49322 + r49323;
        float r49325 = c;
        float r49326 = r49324 + r49325;
        float r49327 = b;
        float r49328 = r49326 + r49327;
        float r49329 = a;
        float r49330 = r49328 + r49329;
        return r49330;
}

double f_od(double a, double b, double c, double d, double e) {
        double r49331 = e;
        double r49332 = d;
        double r49333 = r49331 + r49332;
        double r49334 = c;
        double r49335 = r49333 + r49334;
        double r49336 = b;
        double r49337 = r49335 + r49336;
        double r49338 = a;
        double r49339 = r49337 + r49338;
        return r49339;
}

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 r49340, r49341, r49342, r49343, r49344, r49345, r49346, r49347, r49348;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r49340);
        mpfr_init(r49341);
        mpfr_init(r49342);
        mpfr_init(r49343);
        mpfr_init(r49344);
        mpfr_init(r49345);
        mpfr_init(r49346);
        mpfr_init(r49347);
        mpfr_init(r49348);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r49340, e, MPFR_RNDN);
        mpfr_set_d(r49341, d, MPFR_RNDN);
        mpfr_add(r49342, r49340, r49341, MPFR_RNDN);
        mpfr_set_d(r49343, c, MPFR_RNDN);
        mpfr_add(r49344, r49342, r49343, MPFR_RNDN);
        mpfr_set_d(r49345, b, MPFR_RNDN);
        mpfr_add(r49346, r49344, r49345, MPFR_RNDN);
        mpfr_set_d(r49347, a, MPFR_RNDN);
        mpfr_add(r49348, r49346, r49347, MPFR_RNDN);
        return mpfr_get_d(r49348, MPFR_RNDN);
}

static mpfr_t r49349, r49350, r49351, r49352, r49353, r49354, r49355, r49356, r49357;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49349);
        mpfr_init(r49350);
        mpfr_init(r49351);
        mpfr_init(r49352);
        mpfr_init(r49353);
        mpfr_init(r49354);
        mpfr_init(r49355);
        mpfr_init(r49356);
        mpfr_init(r49357);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r49349, e, MPFR_RNDN);
        mpfr_set_d(r49350, d, MPFR_RNDN);
        mpfr_add(r49351, r49349, r49350, MPFR_RNDN);
        mpfr_set_d(r49352, c, MPFR_RNDN);
        mpfr_add(r49353, r49351, r49352, MPFR_RNDN);
        mpfr_set_d(r49354, b, MPFR_RNDN);
        mpfr_add(r49355, r49353, r49354, MPFR_RNDN);
        mpfr_set_d(r49356, a, MPFR_RNDN);
        mpfr_add(r49357, r49355, r49356, MPFR_RNDN);
        return mpfr_get_d(r49357, MPFR_RNDN);
}

static mpfr_t r49358, r49359, r49360, r49361, r49362, r49363, r49364, r49365, r49366;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49358);
        mpfr_init(r49359);
        mpfr_init(r49360);
        mpfr_init(r49361);
        mpfr_init(r49362);
        mpfr_init(r49363);
        mpfr_init(r49364);
        mpfr_init(r49365);
        mpfr_init(r49366);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r49358, e, MPFR_RNDN);
        mpfr_set_d(r49359, d, MPFR_RNDN);
        mpfr_add(r49360, r49358, r49359, MPFR_RNDN);
        mpfr_set_d(r49361, c, MPFR_RNDN);
        mpfr_add(r49362, r49360, r49361, MPFR_RNDN);
        mpfr_set_d(r49363, b, MPFR_RNDN);
        mpfr_add(r49364, r49362, r49363, MPFR_RNDN);
        mpfr_set_d(r49365, a, MPFR_RNDN);
        mpfr_add(r49366, r49364, r49365, MPFR_RNDN);
        return mpfr_get_d(r49366, MPFR_RNDN);
}

