#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 r7849 = x;
        float r7850 = y;
        float r7851 = r7849 + r7850;
        float r7852 = z;
        float r7853 = r7851 + r7852;
        float r7854 = r7850 + r7852;
        float r7855 = r7849 + r7854;
        float r7856 = r7853 - r7855;
        return r7856;
}

double f_id(double x, double y, double z) {
        double r7857 = x;
        double r7858 = y;
        double r7859 = r7857 + r7858;
        double r7860 = z;
        double r7861 = r7859 + r7860;
        double r7862 = r7858 + r7860;
        double r7863 = r7857 + r7862;
        double r7864 = r7861 - r7863;
        return r7864;
}


double f_of(float x, float y, float z) {
        float r7865 = x;
        float r7866 = y;
        float r7867 = r7865 + r7866;
        float r7868 = z;
        float r7869 = r7867 + r7868;
        float r7870 = r7866 + r7868;
        float r7871 = r7865 + r7870;
        float r7872 = r7869 - r7871;
        return r7872;
}

double f_od(double x, double y, double z) {
        double r7873 = x;
        double r7874 = y;
        double r7875 = r7873 + r7874;
        double r7876 = z;
        double r7877 = r7875 + r7876;
        double r7878 = r7874 + r7876;
        double r7879 = r7873 + r7878;
        double r7880 = r7877 - r7879;
        return r7880;
}

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 r7881, r7882, r7883, r7884, r7885, r7886, r7887, r7888;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7881);
        mpfr_init(r7882);
        mpfr_init(r7883);
        mpfr_init(r7884);
        mpfr_init(r7885);
        mpfr_init(r7886);
        mpfr_init(r7887);
        mpfr_init(r7888);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r7881, x, MPFR_RNDN);
        mpfr_set_d(r7882, y, MPFR_RNDN);
        mpfr_add(r7883, r7881, r7882, MPFR_RNDN);
        mpfr_set_d(r7884, z, MPFR_RNDN);
        mpfr_add(r7885, r7883, r7884, MPFR_RNDN);
        mpfr_add(r7886, r7882, r7884, MPFR_RNDN);
        mpfr_add(r7887, r7881, r7886, MPFR_RNDN);
        mpfr_sub(r7888, r7885, r7887, MPFR_RNDN);
        return mpfr_get_d(r7888, MPFR_RNDN);
}

static mpfr_t r7889, r7890, r7891, r7892, r7893, r7894, r7895, r7896;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7889);
        mpfr_init(r7890);
        mpfr_init(r7891);
        mpfr_init(r7892);
        mpfr_init(r7893);
        mpfr_init(r7894);
        mpfr_init(r7895);
        mpfr_init(r7896);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r7889, x, MPFR_RNDN);
        mpfr_set_d(r7890, y, MPFR_RNDN);
        mpfr_add(r7891, r7889, r7890, MPFR_RNDN);
        mpfr_set_d(r7892, z, MPFR_RNDN);
        mpfr_add(r7893, r7891, r7892, MPFR_RNDN);
        mpfr_add(r7894, r7890, r7892, MPFR_RNDN);
        mpfr_add(r7895, r7889, r7894, MPFR_RNDN);
        mpfr_sub(r7896, r7893, r7895, MPFR_RNDN);
        return mpfr_get_d(r7896, MPFR_RNDN);
}

static mpfr_t r7897, r7898, r7899, r7900, r7901, r7902, r7903, r7904;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7897);
        mpfr_init(r7898);
        mpfr_init(r7899);
        mpfr_init(r7900);
        mpfr_init(r7901);
        mpfr_init(r7902);
        mpfr_init(r7903);
        mpfr_init(r7904);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r7897, x, MPFR_RNDN);
        mpfr_set_d(r7898, y, MPFR_RNDN);
        mpfr_add(r7899, r7897, r7898, MPFR_RNDN);
        mpfr_set_d(r7900, z, MPFR_RNDN);
        mpfr_add(r7901, r7899, r7900, MPFR_RNDN);
        mpfr_add(r7902, r7898, r7900, MPFR_RNDN);
        mpfr_add(r7903, r7897, r7902, MPFR_RNDN);
        mpfr_sub(r7904, r7901, r7903, MPFR_RNDN);
        return mpfr_get_d(r7904, MPFR_RNDN);
}

