#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 r26441 = e;
        float r26442 = d;
        float r26443 = r26441 + r26442;
        float r26444 = c;
        float r26445 = r26443 + r26444;
        float r26446 = b;
        float r26447 = r26445 + r26446;
        float r26448 = a;
        float r26449 = r26447 + r26448;
        return r26449;
}

double f_id(double a, double b, double c, double d, double e) {
        double r26450 = e;
        double r26451 = d;
        double r26452 = r26450 + r26451;
        double r26453 = c;
        double r26454 = r26452 + r26453;
        double r26455 = b;
        double r26456 = r26454 + r26455;
        double r26457 = a;
        double r26458 = r26456 + r26457;
        return r26458;
}


double f_of(float a, float b, float c, float d, float e) {
        float r26459 = e;
        float r26460 = d;
        float r26461 = r26459 + r26460;
        float r26462 = c;
        float r26463 = r26461 + r26462;
        float r26464 = b;
        float r26465 = a;
        float r26466 = r26464 + r26465;
        float r26467 = r26463 + r26466;
        return r26467;
}

double f_od(double a, double b, double c, double d, double e) {
        double r26468 = e;
        double r26469 = d;
        double r26470 = r26468 + r26469;
        double r26471 = c;
        double r26472 = r26470 + r26471;
        double r26473 = b;
        double r26474 = a;
        double r26475 = r26473 + r26474;
        double r26476 = r26472 + r26475;
        return r26476;
}

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 r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
}

double f_im(double a, double b, double c, double d, double e) {
        mpfr_set_d(r26477, e, MPFR_RNDN);
        mpfr_set_d(r26478, d, MPFR_RNDN);
        mpfr_add(r26479, r26477, r26478, MPFR_RNDN);
        mpfr_set_d(r26480, c, MPFR_RNDN);
        mpfr_add(r26481, r26479, r26480, MPFR_RNDN);
        mpfr_set_d(r26482, b, MPFR_RNDN);
        mpfr_add(r26483, r26481, r26482, MPFR_RNDN);
        mpfr_set_d(r26484, a, MPFR_RNDN);
        mpfr_add(r26485, r26483, r26484, MPFR_RNDN);
        return mpfr_get_d(r26485, MPFR_RNDN);
}

static mpfr_t r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
}

double f_fm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r26486, e, MPFR_RNDN);
        mpfr_set_d(r26487, d, MPFR_RNDN);
        mpfr_add(r26488, r26486, r26487, MPFR_RNDN);
        mpfr_set_d(r26489, c, MPFR_RNDN);
        mpfr_add(r26490, r26488, r26489, MPFR_RNDN);
        mpfr_set_d(r26491, b, MPFR_RNDN);
        mpfr_set_d(r26492, a, MPFR_RNDN);
        mpfr_add(r26493, r26491, r26492, MPFR_RNDN);
        mpfr_add(r26494, r26490, r26493, MPFR_RNDN);
        return mpfr_get_d(r26494, MPFR_RNDN);
}

static mpfr_t r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r26495);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
}

double f_dm(double a, double b, double c, double d, double e) {
        mpfr_set_d(r26495, e, MPFR_RNDN);
        mpfr_set_d(r26496, d, MPFR_RNDN);
        mpfr_add(r26497, r26495, r26496, MPFR_RNDN);
        mpfr_set_d(r26498, c, MPFR_RNDN);
        mpfr_add(r26499, r26497, r26498, MPFR_RNDN);
        mpfr_set_d(r26500, b, MPFR_RNDN);
        mpfr_set_d(r26501, a, MPFR_RNDN);
        mpfr_add(r26502, r26500, r26501, MPFR_RNDN);
        mpfr_add(r26503, r26499, r26502, MPFR_RNDN);
        return mpfr_get_d(r26503, MPFR_RNDN);
}

