#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Expression, p6";

double f_if(float a, float b, float c, float d) {
        float r9720 = a;
        float r9721 = b;
        float r9722 = c;
        float r9723 = d;
        float r9724 = r9722 + r9723;
        float r9725 = r9721 + r9724;
        float r9726 = r9720 + r9725;
        float r9727 = 2;
        float r9728 = r9726 * r9727;
        return r9728;
}

double f_id(double a, double b, double c, double d) {
        double r9729 = a;
        double r9730 = b;
        double r9731 = c;
        double r9732 = d;
        double r9733 = r9731 + r9732;
        double r9734 = r9730 + r9733;
        double r9735 = r9729 + r9734;
        double r9736 = 2;
        double r9737 = r9735 * r9736;
        return r9737;
}


double f_of(float a, float b, float c, float d) {
        float r9738 = b;
        float r9739 = c;
        float r9740 = r9738 + r9739;
        float r9741 = d;
        float r9742 = a;
        float r9743 = r9741 + r9742;
        float r9744 = r9740 + r9743;
        float r9745 = 2;
        float r9746 = r9744 * r9745;
        return r9746;
}

double f_od(double a, double b, double c, double d) {
        double r9747 = b;
        double r9748 = c;
        double r9749 = r9747 + r9748;
        double r9750 = d;
        double r9751 = a;
        double r9752 = r9750 + r9751;
        double r9753 = r9749 + r9752;
        double r9754 = 2;
        double r9755 = r9753 * r9754;
        return r9755;
}

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 r9756, r9757, r9758, r9759, r9760, r9761, r9762, r9763, r9764;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9756);
        mpfr_init(r9757);
        mpfr_init(r9758);
        mpfr_init(r9759);
        mpfr_init(r9760);
        mpfr_init(r9761);
        mpfr_init(r9762);
        mpfr_init_set_str(r9763, "2", 10, MPFR_RNDN);
        mpfr_init(r9764);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9756, a, MPFR_RNDN);
        mpfr_set_d(r9757, b, MPFR_RNDN);
        mpfr_set_d(r9758, c, MPFR_RNDN);
        mpfr_set_d(r9759, d, MPFR_RNDN);
        mpfr_add(r9760, r9758, r9759, MPFR_RNDN);
        mpfr_add(r9761, r9757, r9760, MPFR_RNDN);
        mpfr_add(r9762, r9756, r9761, MPFR_RNDN);
        ;
        mpfr_mul(r9764, r9762, r9763, MPFR_RNDN);
        return mpfr_get_d(r9764, MPFR_RNDN);
}

static mpfr_t r9765, r9766, r9767, r9768, r9769, r9770, r9771, r9772, r9773;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9765);
        mpfr_init(r9766);
        mpfr_init(r9767);
        mpfr_init(r9768);
        mpfr_init(r9769);
        mpfr_init(r9770);
        mpfr_init(r9771);
        mpfr_init_set_str(r9772, "2", 10, MPFR_RNDN);
        mpfr_init(r9773);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9765, b, MPFR_RNDN);
        mpfr_set_d(r9766, c, MPFR_RNDN);
        mpfr_add(r9767, r9765, r9766, MPFR_RNDN);
        mpfr_set_d(r9768, d, MPFR_RNDN);
        mpfr_set_d(r9769, a, MPFR_RNDN);
        mpfr_add(r9770, r9768, r9769, MPFR_RNDN);
        mpfr_add(r9771, r9767, r9770, MPFR_RNDN);
        ;
        mpfr_mul(r9773, r9771, r9772, MPFR_RNDN);
        return mpfr_get_d(r9773, MPFR_RNDN);
}

static mpfr_t r9774, r9775, r9776, r9777, r9778, r9779, r9780, r9781, r9782;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9774);
        mpfr_init(r9775);
        mpfr_init(r9776);
        mpfr_init(r9777);
        mpfr_init(r9778);
        mpfr_init(r9779);
        mpfr_init(r9780);
        mpfr_init_set_str(r9781, "2", 10, MPFR_RNDN);
        mpfr_init(r9782);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9774, b, MPFR_RNDN);
        mpfr_set_d(r9775, c, MPFR_RNDN);
        mpfr_add(r9776, r9774, r9775, MPFR_RNDN);
        mpfr_set_d(r9777, d, MPFR_RNDN);
        mpfr_set_d(r9778, a, MPFR_RNDN);
        mpfr_add(r9779, r9777, r9778, MPFR_RNDN);
        mpfr_add(r9780, r9776, r9779, MPFR_RNDN);
        ;
        mpfr_mul(r9782, r9780, r9781, MPFR_RNDN);
        return mpfr_get_d(r9782, MPFR_RNDN);
}

