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

char *name = "Expression, p14";

double f_if(float a, float b, float c, float d) {
        float r51652 = a;
        float r51653 = b;
        float r51654 = c;
        float r51655 = r51653 + r51654;
        float r51656 = d;
        float r51657 = r51655 + r51656;
        float r51658 = r51652 * r51657;
        return r51658;
}

double f_id(double a, double b, double c, double d) {
        double r51659 = a;
        double r51660 = b;
        double r51661 = c;
        double r51662 = r51660 + r51661;
        double r51663 = d;
        double r51664 = r51662 + r51663;
        double r51665 = r51659 * r51664;
        return r51665;
}


double f_of(float a, float b, float c, float d) {
        float r51666 = a;
        float r51667 = b;
        float r51668 = c;
        float r51669 = r51667 + r51668;
        float r51670 = d;
        float r51671 = r51669 + r51670;
        float r51672 = r51666 * r51671;
        return r51672;
}

double f_od(double a, double b, double c, double d) {
        double r51673 = a;
        double r51674 = b;
        double r51675 = c;
        double r51676 = r51674 + r51675;
        double r51677 = d;
        double r51678 = r51676 + r51677;
        double r51679 = r51673 * r51678;
        return r51679;
}

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 r51680, r51681, r51682, r51683, r51684, r51685, r51686;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51680);
        mpfr_init(r51681);
        mpfr_init(r51682);
        mpfr_init(r51683);
        mpfr_init(r51684);
        mpfr_init(r51685);
        mpfr_init(r51686);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r51680, a, MPFR_RNDN);
        mpfr_set_d(r51681, b, MPFR_RNDN);
        mpfr_set_d(r51682, c, MPFR_RNDN);
        mpfr_add(r51683, r51681, r51682, MPFR_RNDN);
        mpfr_set_d(r51684, d, MPFR_RNDN);
        mpfr_add(r51685, r51683, r51684, MPFR_RNDN);
        mpfr_mul(r51686, r51680, r51685, MPFR_RNDN);
        return mpfr_get_d(r51686, MPFR_RNDN);
}

static mpfr_t r51687, r51688, r51689, r51690, r51691, r51692, r51693;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51687);
        mpfr_init(r51688);
        mpfr_init(r51689);
        mpfr_init(r51690);
        mpfr_init(r51691);
        mpfr_init(r51692);
        mpfr_init(r51693);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r51687, a, MPFR_RNDN);
        mpfr_set_d(r51688, b, MPFR_RNDN);
        mpfr_set_d(r51689, c, MPFR_RNDN);
        mpfr_add(r51690, r51688, r51689, MPFR_RNDN);
        mpfr_set_d(r51691, d, MPFR_RNDN);
        mpfr_add(r51692, r51690, r51691, MPFR_RNDN);
        mpfr_mul(r51693, r51687, r51692, MPFR_RNDN);
        return mpfr_get_d(r51693, MPFR_RNDN);
}

static mpfr_t r51694, r51695, r51696, r51697, r51698, r51699, r51700;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51694);
        mpfr_init(r51695);
        mpfr_init(r51696);
        mpfr_init(r51697);
        mpfr_init(r51698);
        mpfr_init(r51699);
        mpfr_init(r51700);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r51694, a, MPFR_RNDN);
        mpfr_set_d(r51695, b, MPFR_RNDN);
        mpfr_set_d(r51696, c, MPFR_RNDN);
        mpfr_add(r51697, r51695, r51696, MPFR_RNDN);
        mpfr_set_d(r51698, d, MPFR_RNDN);
        mpfr_add(r51699, r51697, r51698, MPFR_RNDN);
        mpfr_mul(r51700, r51694, r51699, MPFR_RNDN);
        return mpfr_get_d(r51700, MPFR_RNDN);
}

