#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 r51936 = e;
        float r51937 = d;
        float r51938 = r51936 + r51937;
        float r51939 = c;
        float r51940 = r51938 + r51939;
        float r51941 = b;
        float r51942 = r51940 + r51941;
        float r51943 = a;
        float r51944 = r51942 + r51943;
        return r51944;
}

double f_id(double a, double b, double c, double d, double e) {
        double r51945 = e;
        double r51946 = d;
        double r51947 = r51945 + r51946;
        double r51948 = c;
        double r51949 = r51947 + r51948;
        double r51950 = b;
        double r51951 = r51949 + r51950;
        double r51952 = a;
        double r51953 = r51951 + r51952;
        return r51953;
}


double f_of(float a, float b, float c, float d, float e) {
        float r51954 = c;
        float r51955 = d;
        float r51956 = r51954 + r51955;
        float r51957 = b;
        float r51958 = e;
        float r51959 = r51957 + r51958;
        float r51960 = r51956 + r51959;
        float r51961 = a;
        float r51962 = r51960 + r51961;
        return r51962;
}

double f_od(double a, double b, double c, double d, double e) {
        double r51963 = c;
        double r51964 = d;
        double r51965 = r51963 + r51964;
        double r51966 = b;
        double r51967 = e;
        double r51968 = r51966 + r51967;
        double r51969 = r51965 + r51968;
        double r51970 = a;
        double r51971 = r51969 + r51970;
        return r51971;
}

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 r51972, r51973, r51974, r51975, r51976, r51977, r51978, r51979, r51980;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51972);
        mpfr_init(r51973);
        mpfr_init(r51974);
        mpfr_init(r51975);
        mpfr_init(r51976);
        mpfr_init(r51977);
        mpfr_init(r51978);
        mpfr_init(r51979);
        mpfr_init(r51980);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51972, e, MPFR_RNDN);
        mpfr_set_d(r51973, d, MPFR_RNDN);
        mpfr_add(r51974, r51972, r51973, MPFR_RNDN);
        mpfr_set_d(r51975, c, MPFR_RNDN);
        mpfr_add(r51976, r51974, r51975, MPFR_RNDN);
        mpfr_set_d(r51977, b, MPFR_RNDN);
        mpfr_add(r51978, r51976, r51977, MPFR_RNDN);
        mpfr_set_d(r51979, a, MPFR_RNDN);
        mpfr_add(r51980, r51978, r51979, MPFR_RNDN);
        return mpfr_get_d(r51980, MPFR_RNDN);
}

static mpfr_t r51981, r51982, r51983, r51984, r51985, r51986, r51987, r51988, r51989;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51981);
        mpfr_init(r51982);
        mpfr_init(r51983);
        mpfr_init(r51984);
        mpfr_init(r51985);
        mpfr_init(r51986);
        mpfr_init(r51987);
        mpfr_init(r51988);
        mpfr_init(r51989);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51981, c, MPFR_RNDN);
        mpfr_set_d(r51982, d, MPFR_RNDN);
        mpfr_add(r51983, r51981, r51982, MPFR_RNDN);
        mpfr_set_d(r51984, b, MPFR_RNDN);
        mpfr_set_d(r51985, e, MPFR_RNDN);
        mpfr_add(r51986, r51984, r51985, MPFR_RNDN);
        mpfr_add(r51987, r51983, r51986, MPFR_RNDN);
        mpfr_set_d(r51988, a, MPFR_RNDN);
        mpfr_add(r51989, r51987, r51988, MPFR_RNDN);
        return mpfr_get_d(r51989, MPFR_RNDN);
}

static mpfr_t r51990, r51991, r51992, r51993, r51994, r51995, r51996, r51997, r51998;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51990);
        mpfr_init(r51991);
        mpfr_init(r51992);
        mpfr_init(r51993);
        mpfr_init(r51994);
        mpfr_init(r51995);
        mpfr_init(r51996);
        mpfr_init(r51997);
        mpfr_init(r51998);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r51990, c, MPFR_RNDN);
        mpfr_set_d(r51991, d, MPFR_RNDN);
        mpfr_add(r51992, r51990, r51991, MPFR_RNDN);
        mpfr_set_d(r51993, b, MPFR_RNDN);
        mpfr_set_d(r51994, e, MPFR_RNDN);
        mpfr_add(r51995, r51993, r51994, MPFR_RNDN);
        mpfr_add(r51996, r51992, r51995, MPFR_RNDN);
        mpfr_set_d(r51997, a, MPFR_RNDN);
        mpfr_add(r51998, r51996, r51997, MPFR_RNDN);
        return mpfr_get_d(r51998, MPFR_RNDN);
}

