#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 r51783 = a;
        float r51784 = b;
        float r51785 = c;
        float r51786 = d;
        float r51787 = r51785 + r51786;
        float r51788 = r51784 + r51787;
        float r51789 = r51783 + r51788;
        float r51790 = 2;
        float r51791 = r51789 * r51790;
        return r51791;
}

double f_id(double a, double b, double c, double d) {
        double r51792 = a;
        double r51793 = b;
        double r51794 = c;
        double r51795 = d;
        double r51796 = r51794 + r51795;
        double r51797 = r51793 + r51796;
        double r51798 = r51792 + r51797;
        double r51799 = 2;
        double r51800 = r51798 * r51799;
        return r51800;
}


double f_of(float a, float b, float c, float d) {
        float r51801 = a;
        float r51802 = b;
        float r51803 = c;
        float r51804 = d;
        float r51805 = r51803 + r51804;
        float r51806 = r51802 + r51805;
        float r51807 = r51801 + r51806;
        float r51808 = 2;
        float r51809 = r51807 * r51808;
        return r51809;
}

double f_od(double a, double b, double c, double d) {
        double r51810 = a;
        double r51811 = b;
        double r51812 = c;
        double r51813 = d;
        double r51814 = r51812 + r51813;
        double r51815 = r51811 + r51814;
        double r51816 = r51810 + r51815;
        double r51817 = 2;
        double r51818 = r51816 * r51817;
        return r51818;
}

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 r51819, r51820, r51821, r51822, r51823, r51824, r51825, r51826, r51827;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51819);
        mpfr_init(r51820);
        mpfr_init(r51821);
        mpfr_init(r51822);
        mpfr_init(r51823);
        mpfr_init(r51824);
        mpfr_init(r51825);
        mpfr_init_set_str(r51826, "2", 10, MPFR_RNDN);
        mpfr_init(r51827);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r51819, a, MPFR_RNDN);
        mpfr_set_d(r51820, b, MPFR_RNDN);
        mpfr_set_d(r51821, c, MPFR_RNDN);
        mpfr_set_d(r51822, d, MPFR_RNDN);
        mpfr_add(r51823, r51821, r51822, MPFR_RNDN);
        mpfr_add(r51824, r51820, r51823, MPFR_RNDN);
        mpfr_add(r51825, r51819, r51824, MPFR_RNDN);
        ;
        mpfr_mul(r51827, r51825, r51826, MPFR_RNDN);
        return mpfr_get_d(r51827, MPFR_RNDN);
}

static mpfr_t r51828, r51829, r51830, r51831, r51832, r51833, r51834, r51835, r51836;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51828);
        mpfr_init(r51829);
        mpfr_init(r51830);
        mpfr_init(r51831);
        mpfr_init(r51832);
        mpfr_init(r51833);
        mpfr_init(r51834);
        mpfr_init_set_str(r51835, "2", 10, MPFR_RNDN);
        mpfr_init(r51836);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r51828, a, MPFR_RNDN);
        mpfr_set_d(r51829, b, MPFR_RNDN);
        mpfr_set_d(r51830, c, MPFR_RNDN);
        mpfr_set_d(r51831, d, MPFR_RNDN);
        mpfr_add(r51832, r51830, r51831, MPFR_RNDN);
        mpfr_add(r51833, r51829, r51832, MPFR_RNDN);
        mpfr_add(r51834, r51828, r51833, MPFR_RNDN);
        ;
        mpfr_mul(r51836, r51834, r51835, MPFR_RNDN);
        return mpfr_get_d(r51836, MPFR_RNDN);
}

static mpfr_t r51837, r51838, r51839, r51840, r51841, r51842, r51843, r51844, r51845;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51837);
        mpfr_init(r51838);
        mpfr_init(r51839);
        mpfr_init(r51840);
        mpfr_init(r51841);
        mpfr_init(r51842);
        mpfr_init(r51843);
        mpfr_init_set_str(r51844, "2", 10, MPFR_RNDN);
        mpfr_init(r51845);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r51837, a, MPFR_RNDN);
        mpfr_set_d(r51838, b, MPFR_RNDN);
        mpfr_set_d(r51839, c, MPFR_RNDN);
        mpfr_set_d(r51840, d, MPFR_RNDN);
        mpfr_add(r51841, r51839, r51840, MPFR_RNDN);
        mpfr_add(r51842, r51838, r51841, MPFR_RNDN);
        mpfr_add(r51843, r51837, r51842, MPFR_RNDN);
        ;
        mpfr_mul(r51845, r51843, r51844, MPFR_RNDN);
        return mpfr_get_d(r51845, MPFR_RNDN);
}

