#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 r51740 = e;
        float r51741 = d;
        float r51742 = r51740 + r51741;
        float r51743 = c;
        float r51744 = r51742 + r51743;
        float r51745 = b;
        float r51746 = r51744 + r51745;
        float r51747 = a;
        float r51748 = r51746 + r51747;
        return r51748;
}

double f_id(double a, double b, double c, double d, double e) {
        double r51749 = e;
        double r51750 = d;
        double r51751 = r51749 + r51750;
        double r51752 = c;
        double r51753 = r51751 + r51752;
        double r51754 = b;
        double r51755 = r51753 + r51754;
        double r51756 = a;
        double r51757 = r51755 + r51756;
        return r51757;
}


double f_of(float a, float b, float c, float d, float e) {
        float r51758 = e;
        float r51759 = d;
        float r51760 = r51758 + r51759;
        float r51761 = c;
        float r51762 = r51760 + r51761;
        float r51763 = b;
        float r51764 = a;
        float r51765 = r51763 + r51764;
        float r51766 = r51762 + r51765;
        return r51766;
}

double f_od(double a, double b, double c, double d, double e) {
        double r51767 = e;
        double r51768 = d;
        double r51769 = r51767 + r51768;
        double r51770 = c;
        double r51771 = r51769 + r51770;
        double r51772 = b;
        double r51773 = a;
        double r51774 = r51772 + r51773;
        double r51775 = r51771 + r51774;
        return r51775;
}

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 r51776, r51777, r51778, r51779, r51780, r51781, r51782, r51783, r51784;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51776);
        mpfr_init(r51777);
        mpfr_init(r51778);
        mpfr_init(r51779);
        mpfr_init(r51780);
        mpfr_init(r51781);
        mpfr_init(r51782);
        mpfr_init(r51783);
        mpfr_init(r51784);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51776, e, MPFR_RNDN);
        mpfr_set_d(r51777, d, MPFR_RNDN);
        mpfr_add(r51778, r51776, r51777, MPFR_RNDN);
        mpfr_set_d(r51779, c, MPFR_RNDN);
        mpfr_add(r51780, r51778, r51779, MPFR_RNDN);
        mpfr_set_d(r51781, b, MPFR_RNDN);
        mpfr_add(r51782, r51780, r51781, MPFR_RNDN);
        mpfr_set_d(r51783, a, MPFR_RNDN);
        mpfr_add(r51784, r51782, r51783, MPFR_RNDN);
        return mpfr_get_d(r51784, MPFR_RNDN);
}

static mpfr_t r51785, r51786, r51787, r51788, r51789, r51790, r51791, r51792, r51793;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51785);
        mpfr_init(r51786);
        mpfr_init(r51787);
        mpfr_init(r51788);
        mpfr_init(r51789);
        mpfr_init(r51790);
        mpfr_init(r51791);
        mpfr_init(r51792);
        mpfr_init(r51793);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51785, e, MPFR_RNDN);
        mpfr_set_d(r51786, d, MPFR_RNDN);
        mpfr_add(r51787, r51785, r51786, MPFR_RNDN);
        mpfr_set_d(r51788, c, MPFR_RNDN);
        mpfr_add(r51789, r51787, r51788, MPFR_RNDN);
        mpfr_set_d(r51790, b, MPFR_RNDN);
        mpfr_set_d(r51791, a, MPFR_RNDN);
        mpfr_add(r51792, r51790, r51791, MPFR_RNDN);
        mpfr_add(r51793, r51789, r51792, MPFR_RNDN);
        return mpfr_get_d(r51793, MPFR_RNDN);
}

static mpfr_t r51794, r51795, r51796, r51797, r51798, r51799, r51800, r51801, r51802;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51794);
        mpfr_init(r51795);
        mpfr_init(r51796);
        mpfr_init(r51797);
        mpfr_init(r51798);
        mpfr_init(r51799);
        mpfr_init(r51800);
        mpfr_init(r51801);
        mpfr_init(r51802);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51794, e, MPFR_RNDN);
        mpfr_set_d(r51795, d, MPFR_RNDN);
        mpfr_add(r51796, r51794, r51795, MPFR_RNDN);
        mpfr_set_d(r51797, c, MPFR_RNDN);
        mpfr_add(r51798, r51796, r51797, MPFR_RNDN);
        mpfr_set_d(r51799, b, MPFR_RNDN);
        mpfr_set_d(r51800, a, MPFR_RNDN);
        mpfr_add(r51801, r51799, r51800, MPFR_RNDN);
        mpfr_add(r51802, r51798, r51801, MPFR_RNDN);
        return mpfr_get_d(r51802, MPFR_RNDN);
}

