#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 r51778 = e;
        float r51779 = d;
        float r51780 = r51778 + r51779;
        float r51781 = c;
        float r51782 = r51780 + r51781;
        float r51783 = b;
        float r51784 = r51782 + r51783;
        float r51785 = a;
        float r51786 = r51784 + r51785;
        return r51786;
}

double f_id(double a, double b, double c, double d, double e) {
        double r51787 = e;
        double r51788 = d;
        double r51789 = r51787 + r51788;
        double r51790 = c;
        double r51791 = r51789 + r51790;
        double r51792 = b;
        double r51793 = r51791 + r51792;
        double r51794 = a;
        double r51795 = r51793 + r51794;
        return r51795;
}


double f_of(float a, float b, float c, float d, float e) {
        float r51796 = e;
        float r51797 = d;
        float r51798 = r51796 + r51797;
        float r51799 = c;
        float r51800 = r51798 + r51799;
        float r51801 = b;
        float r51802 = a;
        float r51803 = r51801 + r51802;
        float r51804 = r51800 + r51803;
        return r51804;
}

double f_od(double a, double b, double c, double d, double e) {
        double r51805 = e;
        double r51806 = d;
        double r51807 = r51805 + r51806;
        double r51808 = c;
        double r51809 = r51807 + r51808;
        double r51810 = b;
        double r51811 = a;
        double r51812 = r51810 + r51811;
        double r51813 = r51809 + r51812;
        return r51813;
}

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 r51814, r51815, r51816, r51817, r51818, r51819, r51820, r51821, r51822;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51814);
        mpfr_init(r51815);
        mpfr_init(r51816);
        mpfr_init(r51817);
        mpfr_init(r51818);
        mpfr_init(r51819);
        mpfr_init(r51820);
        mpfr_init(r51821);
        mpfr_init(r51822);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51814, e, MPFR_RNDN);
        mpfr_set_d(r51815, d, MPFR_RNDN);
        mpfr_add(r51816, r51814, r51815, MPFR_RNDN);
        mpfr_set_d(r51817, c, MPFR_RNDN);
        mpfr_add(r51818, r51816, r51817, MPFR_RNDN);
        mpfr_set_d(r51819, b, MPFR_RNDN);
        mpfr_add(r51820, r51818, r51819, MPFR_RNDN);
        mpfr_set_d(r51821, a, MPFR_RNDN);
        mpfr_add(r51822, r51820, r51821, MPFR_RNDN);
        return mpfr_get_d(r51822, MPFR_RNDN);
}

static mpfr_t r51823, r51824, r51825, r51826, r51827, r51828, r51829, r51830, r51831;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51823);
        mpfr_init(r51824);
        mpfr_init(r51825);
        mpfr_init(r51826);
        mpfr_init(r51827);
        mpfr_init(r51828);
        mpfr_init(r51829);
        mpfr_init(r51830);
        mpfr_init(r51831);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51823, e, MPFR_RNDN);
        mpfr_set_d(r51824, d, MPFR_RNDN);
        mpfr_add(r51825, r51823, r51824, MPFR_RNDN);
        mpfr_set_d(r51826, c, MPFR_RNDN);
        mpfr_add(r51827, r51825, r51826, MPFR_RNDN);
        mpfr_set_d(r51828, b, MPFR_RNDN);
        mpfr_set_d(r51829, a, MPFR_RNDN);
        mpfr_add(r51830, r51828, r51829, MPFR_RNDN);
        mpfr_add(r51831, r51827, r51830, MPFR_RNDN);
        return mpfr_get_d(r51831, MPFR_RNDN);
}

static mpfr_t r51832, r51833, r51834, r51835, r51836, r51837, r51838, r51839, r51840;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51832);
        mpfr_init(r51833);
        mpfr_init(r51834);
        mpfr_init(r51835);
        mpfr_init(r51836);
        mpfr_init(r51837);
        mpfr_init(r51838);
        mpfr_init(r51839);
        mpfr_init(r51840);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51832, e, MPFR_RNDN);
        mpfr_set_d(r51833, d, MPFR_RNDN);
        mpfr_add(r51834, r51832, r51833, MPFR_RNDN);
        mpfr_set_d(r51835, c, MPFR_RNDN);
        mpfr_add(r51836, r51834, r51835, MPFR_RNDN);
        mpfr_set_d(r51837, b, MPFR_RNDN);
        mpfr_set_d(r51838, a, MPFR_RNDN);
        mpfr_add(r51839, r51837, r51838, MPFR_RNDN);
        mpfr_add(r51840, r51836, r51839, MPFR_RNDN);
        return mpfr_get_d(r51840, MPFR_RNDN);
}

