#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 r35805 = x;
        float r35806 = y;
        float r35807 = r35805 + r35806;
        float r35808 = z;
        float r35809 = r35807 + r35808;
        float r35810 = r35806 + r35808;
        float r35811 = r35805 + r35810;
        float r35812 = r35809 - r35811;
        return r35812;
}

double f_id(double x, double y, double z) {
        double r35813 = x;
        double r35814 = y;
        double r35815 = r35813 + r35814;
        double r35816 = z;
        double r35817 = r35815 + r35816;
        double r35818 = r35814 + r35816;
        double r35819 = r35813 + r35818;
        double r35820 = r35817 - r35819;
        return r35820;
}


double f_of(float x, float y, float z) {
        float r35821 = x;
        float r35822 = y;
        float r35823 = r35821 + r35822;
        float r35824 = z;
        float r35825 = r35823 + r35824;
        float r35826 = r35822 + r35824;
        float r35827 = r35821 + r35826;
        float r35828 = r35825 - r35827;
        return r35828;
}

double f_od(double x, double y, double z) {
        double r35829 = x;
        double r35830 = y;
        double r35831 = r35829 + r35830;
        double r35832 = z;
        double r35833 = r35831 + r35832;
        double r35834 = r35830 + r35832;
        double r35835 = r35829 + r35834;
        double r35836 = r35833 - r35835;
        return r35836;
}

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 r35837, r35838, r35839, r35840, r35841, r35842, r35843, r35844;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35837);
        mpfr_init(r35838);
        mpfr_init(r35839);
        mpfr_init(r35840);
        mpfr_init(r35841);
        mpfr_init(r35842);
        mpfr_init(r35843);
        mpfr_init(r35844);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r35837, x, MPFR_RNDN);
        mpfr_set_d(r35838, y, MPFR_RNDN);
        mpfr_add(r35839, r35837, r35838, MPFR_RNDN);
        mpfr_set_d(r35840, z, MPFR_RNDN);
        mpfr_add(r35841, r35839, r35840, MPFR_RNDN);
        mpfr_add(r35842, r35838, r35840, MPFR_RNDN);
        mpfr_add(r35843, r35837, r35842, MPFR_RNDN);
        mpfr_sub(r35844, r35841, r35843, MPFR_RNDN);
        return mpfr_get_d(r35844, MPFR_RNDN);
}

static mpfr_t r35845, r35846, r35847, r35848, r35849, r35850, r35851, r35852;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35845);
        mpfr_init(r35846);
        mpfr_init(r35847);
        mpfr_init(r35848);
        mpfr_init(r35849);
        mpfr_init(r35850);
        mpfr_init(r35851);
        mpfr_init(r35852);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r35845, x, MPFR_RNDN);
        mpfr_set_d(r35846, y, MPFR_RNDN);
        mpfr_add(r35847, r35845, r35846, MPFR_RNDN);
        mpfr_set_d(r35848, z, MPFR_RNDN);
        mpfr_add(r35849, r35847, r35848, MPFR_RNDN);
        mpfr_add(r35850, r35846, r35848, MPFR_RNDN);
        mpfr_add(r35851, r35845, r35850, MPFR_RNDN);
        mpfr_sub(r35852, r35849, r35851, MPFR_RNDN);
        return mpfr_get_d(r35852, MPFR_RNDN);
}

static mpfr_t r35853, r35854, r35855, r35856, r35857, r35858, r35859, r35860;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r35853);
        mpfr_init(r35854);
        mpfr_init(r35855);
        mpfr_init(r35856);
        mpfr_init(r35857);
        mpfr_init(r35858);
        mpfr_init(r35859);
        mpfr_init(r35860);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r35853, x, MPFR_RNDN);
        mpfr_set_d(r35854, y, MPFR_RNDN);
        mpfr_add(r35855, r35853, r35854, MPFR_RNDN);
        mpfr_set_d(r35856, z, MPFR_RNDN);
        mpfr_add(r35857, r35855, r35856, MPFR_RNDN);
        mpfr_add(r35858, r35854, r35856, MPFR_RNDN);
        mpfr_add(r35859, r35853, r35858, MPFR_RNDN);
        mpfr_sub(r35860, r35857, r35859, MPFR_RNDN);
        return mpfr_get_d(r35860, MPFR_RNDN);
}

