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

char *name = "Commute and associate";

double f_if(float x, float y, float z) {
        float r35778 = x;
        float r35779 = y;
        float r35780 = r35778 + r35779;
        float r35781 = z;
        float r35782 = r35780 + r35781;
        float r35783 = r35779 + r35781;
        float r35784 = r35778 + r35783;
        float r35785 = r35782 - r35784;
        return r35785;
}

double f_id(double x, double y, double z) {
        double r35786 = x;
        double r35787 = y;
        double r35788 = r35786 + r35787;
        double r35789 = z;
        double r35790 = r35788 + r35789;
        double r35791 = r35787 + r35789;
        double r35792 = r35786 + r35791;
        double r35793 = r35790 - r35792;
        return r35793;
}


double f_of(float x, float y, float z) {
        float r35794 = x;
        float r35795 = y;
        float r35796 = r35794 + r35795;
        float r35797 = z;
        float r35798 = r35796 + r35797;
        float r35799 = r35795 + r35797;
        float r35800 = r35794 + r35799;
        float r35801 = r35798 - r35800;
        return r35801;
}

double f_od(double x, double y, double z) {
        double r35802 = x;
        double r35803 = y;
        double r35804 = r35802 + r35803;
        double r35805 = z;
        double r35806 = r35804 + r35805;
        double r35807 = r35803 + r35805;
        double r35808 = r35802 + r35807;
        double r35809 = r35806 - r35808;
        return r35809;
}

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 r35810, r35811, r35812, r35813, r35814, r35815, r35816, r35817;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35810);
        mpfr_init(r35811);
        mpfr_init(r35812);
        mpfr_init(r35813);
        mpfr_init(r35814);
        mpfr_init(r35815);
        mpfr_init(r35816);
        mpfr_init(r35817);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35810, x, MPFR_RNDN);
        mpfr_set_d(r35811, y, MPFR_RNDN);
        mpfr_add(r35812, r35810, r35811, MPFR_RNDN);
        mpfr_set_d(r35813, z, MPFR_RNDN);
        mpfr_add(r35814, r35812, r35813, MPFR_RNDN);
        mpfr_add(r35815, r35811, r35813, MPFR_RNDN);
        mpfr_add(r35816, r35810, r35815, MPFR_RNDN);
        mpfr_sub(r35817, r35814, r35816, MPFR_RNDN);
        return mpfr_get_d(r35817, MPFR_RNDN);
}

static mpfr_t r35818, r35819, r35820, r35821, r35822, r35823, r35824, r35825;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35818);
        mpfr_init(r35819);
        mpfr_init(r35820);
        mpfr_init(r35821);
        mpfr_init(r35822);
        mpfr_init(r35823);
        mpfr_init(r35824);
        mpfr_init(r35825);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35818, x, MPFR_RNDN);
        mpfr_set_d(r35819, y, MPFR_RNDN);
        mpfr_add(r35820, r35818, r35819, MPFR_RNDN);
        mpfr_set_d(r35821, z, MPFR_RNDN);
        mpfr_add(r35822, r35820, r35821, MPFR_RNDN);
        mpfr_add(r35823, r35819, r35821, MPFR_RNDN);
        mpfr_add(r35824, r35818, r35823, MPFR_RNDN);
        mpfr_sub(r35825, r35822, r35824, MPFR_RNDN);
        return mpfr_get_d(r35825, MPFR_RNDN);
}

static mpfr_t r35826, r35827, r35828, r35829, r35830, r35831, r35832, r35833;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35826);
        mpfr_init(r35827);
        mpfr_init(r35828);
        mpfr_init(r35829);
        mpfr_init(r35830);
        mpfr_init(r35831);
        mpfr_init(r35832);
        mpfr_init(r35833);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35826, x, MPFR_RNDN);
        mpfr_set_d(r35827, y, MPFR_RNDN);
        mpfr_add(r35828, r35826, r35827, MPFR_RNDN);
        mpfr_set_d(r35829, z, MPFR_RNDN);
        mpfr_add(r35830, r35828, r35829, MPFR_RNDN);
        mpfr_add(r35831, r35827, r35829, MPFR_RNDN);
        mpfr_add(r35832, r35826, r35831, MPFR_RNDN);
        mpfr_sub(r35833, r35830, r35832, MPFR_RNDN);
        return mpfr_get_d(r35833, MPFR_RNDN);
}

