#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 r9913 = e;
        float r9914 = d;
        float r9915 = r9913 + r9914;
        float r9916 = c;
        float r9917 = r9915 + r9916;
        float r9918 = b;
        float r9919 = r9917 + r9918;
        float r9920 = a;
        float r9921 = r9919 + r9920;
        return r9921;
}

double f_id(double a, double b, double c, double d, double e) {
        double r9922 = e;
        double r9923 = d;
        double r9924 = r9922 + r9923;
        double r9925 = c;
        double r9926 = r9924 + r9925;
        double r9927 = b;
        double r9928 = r9926 + r9927;
        double r9929 = a;
        double r9930 = r9928 + r9929;
        return r9930;
}


double f_of(float a, float b, float c, float d, float e) {
        float r9931 = e;
        float r9932 = d;
        float r9933 = r9931 + r9932;
        float r9934 = c;
        float r9935 = r9933 + r9934;
        float r9936 = b;
        float r9937 = a;
        float r9938 = r9936 + r9937;
        float r9939 = r9935 + r9938;
        return r9939;
}

double f_od(double a, double b, double c, double d, double e) {
        double r9940 = e;
        double r9941 = d;
        double r9942 = r9940 + r9941;
        double r9943 = c;
        double r9944 = r9942 + r9943;
        double r9945 = b;
        double r9946 = a;
        double r9947 = r9945 + r9946;
        double r9948 = r9944 + r9947;
        return r9948;
}

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 r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9949, e, MPFR_RNDN);
        mpfr_set_d(r9950, d, MPFR_RNDN);
        mpfr_add(r9951, r9949, r9950, MPFR_RNDN);
        mpfr_set_d(r9952, c, MPFR_RNDN);
        mpfr_add(r9953, r9951, r9952, MPFR_RNDN);
        mpfr_set_d(r9954, b, MPFR_RNDN);
        mpfr_add(r9955, r9953, r9954, MPFR_RNDN);
        mpfr_set_d(r9956, a, MPFR_RNDN);
        mpfr_add(r9957, r9955, r9956, MPFR_RNDN);
        return mpfr_get_d(r9957, MPFR_RNDN);
}

static mpfr_t r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965, r9966;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init(r9963);
        mpfr_init(r9964);
        mpfr_init(r9965);
        mpfr_init(r9966);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9958, e, MPFR_RNDN);
        mpfr_set_d(r9959, d, MPFR_RNDN);
        mpfr_add(r9960, r9958, r9959, MPFR_RNDN);
        mpfr_set_d(r9961, c, MPFR_RNDN);
        mpfr_add(r9962, r9960, r9961, MPFR_RNDN);
        mpfr_set_d(r9963, b, MPFR_RNDN);
        mpfr_set_d(r9964, a, MPFR_RNDN);
        mpfr_add(r9965, r9963, r9964, MPFR_RNDN);
        mpfr_add(r9966, r9962, r9965, MPFR_RNDN);
        return mpfr_get_d(r9966, MPFR_RNDN);
}

static mpfr_t r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974, r9975;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init(r9974);
        mpfr_init(r9975);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9967, e, MPFR_RNDN);
        mpfr_set_d(r9968, d, MPFR_RNDN);
        mpfr_add(r9969, r9967, r9968, MPFR_RNDN);
        mpfr_set_d(r9970, c, MPFR_RNDN);
        mpfr_add(r9971, r9969, r9970, MPFR_RNDN);
        mpfr_set_d(r9972, b, MPFR_RNDN);
        mpfr_set_d(r9973, a, MPFR_RNDN);
        mpfr_add(r9974, r9972, r9973, MPFR_RNDN);
        mpfr_add(r9975, r9971, r9974, MPFR_RNDN);
        return mpfr_get_d(r9975, MPFR_RNDN);
}

