#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 r52104 = e;
        float r52105 = d;
        float r52106 = r52104 + r52105;
        float r52107 = c;
        float r52108 = r52106 + r52107;
        float r52109 = b;
        float r52110 = r52108 + r52109;
        float r52111 = a;
        float r52112 = r52110 + r52111;
        return r52112;
}

double f_id(double a, double b, double c, double d, double e) {
        double r52113 = e;
        double r52114 = d;
        double r52115 = r52113 + r52114;
        double r52116 = c;
        double r52117 = r52115 + r52116;
        double r52118 = b;
        double r52119 = r52117 + r52118;
        double r52120 = a;
        double r52121 = r52119 + r52120;
        return r52121;
}


double f_of(float a, float b, float c, float d, float e) {
        float r52122 = e;
        float r52123 = d;
        float r52124 = r52122 + r52123;
        float r52125 = c;
        float r52126 = r52124 + r52125;
        float r52127 = b;
        float r52128 = r52126 + r52127;
        float r52129 = a;
        float r52130 = r52128 + r52129;
        return r52130;
}

double f_od(double a, double b, double c, double d, double e) {
        double r52131 = e;
        double r52132 = d;
        double r52133 = r52131 + r52132;
        double r52134 = c;
        double r52135 = r52133 + r52134;
        double r52136 = b;
        double r52137 = r52135 + r52136;
        double r52138 = a;
        double r52139 = r52137 + r52138;
        return r52139;
}

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 r52140, r52141, r52142, r52143, r52144, r52145, r52146, r52147, r52148;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52140);
        mpfr_init(r52141);
        mpfr_init(r52142);
        mpfr_init(r52143);
        mpfr_init(r52144);
        mpfr_init(r52145);
        mpfr_init(r52146);
        mpfr_init(r52147);
        mpfr_init(r52148);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r52140, e, MPFR_RNDN);
        mpfr_set_d(r52141, d, MPFR_RNDN);
        mpfr_add(r52142, r52140, r52141, MPFR_RNDN);
        mpfr_set_d(r52143, c, MPFR_RNDN);
        mpfr_add(r52144, r52142, r52143, MPFR_RNDN);
        mpfr_set_d(r52145, b, MPFR_RNDN);
        mpfr_add(r52146, r52144, r52145, MPFR_RNDN);
        mpfr_set_d(r52147, a, MPFR_RNDN);
        mpfr_add(r52148, r52146, r52147, MPFR_RNDN);
        return mpfr_get_d(r52148, MPFR_RNDN);
}

static mpfr_t r52149, r52150, r52151, r52152, r52153, r52154, r52155, r52156, r52157;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52149);
        mpfr_init(r52150);
        mpfr_init(r52151);
        mpfr_init(r52152);
        mpfr_init(r52153);
        mpfr_init(r52154);
        mpfr_init(r52155);
        mpfr_init(r52156);
        mpfr_init(r52157);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r52149, e, MPFR_RNDN);
        mpfr_set_d(r52150, d, MPFR_RNDN);
        mpfr_add(r52151, r52149, r52150, MPFR_RNDN);
        mpfr_set_d(r52152, c, MPFR_RNDN);
        mpfr_add(r52153, r52151, r52152, MPFR_RNDN);
        mpfr_set_d(r52154, b, MPFR_RNDN);
        mpfr_add(r52155, r52153, r52154, MPFR_RNDN);
        mpfr_set_d(r52156, a, MPFR_RNDN);
        mpfr_add(r52157, r52155, r52156, MPFR_RNDN);
        return mpfr_get_d(r52157, MPFR_RNDN);
}

static mpfr_t r52158, r52159, r52160, r52161, r52162, r52163, r52164, r52165, r52166;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52158);
        mpfr_init(r52159);
        mpfr_init(r52160);
        mpfr_init(r52161);
        mpfr_init(r52162);
        mpfr_init(r52163);
        mpfr_init(r52164);
        mpfr_init(r52165);
        mpfr_init(r52166);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r52158, e, MPFR_RNDN);
        mpfr_set_d(r52159, d, MPFR_RNDN);
        mpfr_add(r52160, r52158, r52159, MPFR_RNDN);
        mpfr_set_d(r52161, c, MPFR_RNDN);
        mpfr_add(r52162, r52160, r52161, MPFR_RNDN);
        mpfr_set_d(r52163, b, MPFR_RNDN);
        mpfr_add(r52164, r52162, r52163, MPFR_RNDN);
        mpfr_set_d(r52165, a, MPFR_RNDN);
        mpfr_add(r52166, r52164, r52165, MPFR_RNDN);
        return mpfr_get_d(r52166, MPFR_RNDN);
}

