#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 r9377 = e;
        float r9378 = d;
        float r9379 = r9377 + r9378;
        float r9380 = c;
        float r9381 = r9379 + r9380;
        float r9382 = b;
        float r9383 = r9381 + r9382;
        float r9384 = a;
        float r9385 = r9383 + r9384;
        return r9385;
}

double f_id(double a, double b, double c, double d, double e) {
        double r9386 = e;
        double r9387 = d;
        double r9388 = r9386 + r9387;
        double r9389 = c;
        double r9390 = r9388 + r9389;
        double r9391 = b;
        double r9392 = r9390 + r9391;
        double r9393 = a;
        double r9394 = r9392 + r9393;
        return r9394;
}


double f_of(float a, float b, float c, float d, float e) {
        float r9395 = b;
        float r9396 = a;
        float r9397 = r9395 + r9396;
        float r9398 = e;
        float r9399 = d;
        float r9400 = c;
        float r9401 = r9399 + r9400;
        float r9402 = r9398 + r9401;
        float r9403 = r9397 + r9402;
        return r9403;
}

double f_od(double a, double b, double c, double d, double e) {
        double r9404 = b;
        double r9405 = a;
        double r9406 = r9404 + r9405;
        double r9407 = e;
        double r9408 = d;
        double r9409 = c;
        double r9410 = r9408 + r9409;
        double r9411 = r9407 + r9410;
        double r9412 = r9406 + r9411;
        return r9412;
}

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 r9413, r9414, r9415, r9416, r9417, r9418, r9419, r9420, r9421;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9413);
        mpfr_init(r9414);
        mpfr_init(r9415);
        mpfr_init(r9416);
        mpfr_init(r9417);
        mpfr_init(r9418);
        mpfr_init(r9419);
        mpfr_init(r9420);
        mpfr_init(r9421);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9413, e, MPFR_RNDN);
        mpfr_set_d(r9414, d, MPFR_RNDN);
        mpfr_add(r9415, r9413, r9414, MPFR_RNDN);
        mpfr_set_d(r9416, c, MPFR_RNDN);
        mpfr_add(r9417, r9415, r9416, MPFR_RNDN);
        mpfr_set_d(r9418, b, MPFR_RNDN);
        mpfr_add(r9419, r9417, r9418, MPFR_RNDN);
        mpfr_set_d(r9420, a, MPFR_RNDN);
        mpfr_add(r9421, r9419, r9420, MPFR_RNDN);
        return mpfr_get_d(r9421, MPFR_RNDN);
}

static mpfr_t r9422, r9423, r9424, r9425, r9426, r9427, r9428, r9429, r9430;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9422);
        mpfr_init(r9423);
        mpfr_init(r9424);
        mpfr_init(r9425);
        mpfr_init(r9426);
        mpfr_init(r9427);
        mpfr_init(r9428);
        mpfr_init(r9429);
        mpfr_init(r9430);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9422, b, MPFR_RNDN);
        mpfr_set_d(r9423, a, MPFR_RNDN);
        mpfr_add(r9424, r9422, r9423, MPFR_RNDN);
        mpfr_set_d(r9425, e, MPFR_RNDN);
        mpfr_set_d(r9426, d, MPFR_RNDN);
        mpfr_set_d(r9427, c, MPFR_RNDN);
        mpfr_add(r9428, r9426, r9427, MPFR_RNDN);
        mpfr_add(r9429, r9425, r9428, MPFR_RNDN);
        mpfr_add(r9430, r9424, r9429, MPFR_RNDN);
        return mpfr_get_d(r9430, MPFR_RNDN);
}

static mpfr_t r9431, r9432, r9433, r9434, r9435, r9436, r9437, r9438, r9439;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9431);
        mpfr_init(r9432);
        mpfr_init(r9433);
        mpfr_init(r9434);
        mpfr_init(r9435);
        mpfr_init(r9436);
        mpfr_init(r9437);
        mpfr_init(r9438);
        mpfr_init(r9439);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r9431, b, MPFR_RNDN);
        mpfr_set_d(r9432, a, MPFR_RNDN);
        mpfr_add(r9433, r9431, r9432, MPFR_RNDN);
        mpfr_set_d(r9434, e, MPFR_RNDN);
        mpfr_set_d(r9435, d, MPFR_RNDN);
        mpfr_set_d(r9436, c, MPFR_RNDN);
        mpfr_add(r9437, r9435, r9436, MPFR_RNDN);
        mpfr_add(r9438, r9434, r9437, MPFR_RNDN);
        mpfr_add(r9439, r9433, r9438, MPFR_RNDN);
        return mpfr_get_d(r9439, MPFR_RNDN);
}

