#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 r51614 = a;
        float r51615 = b;
        float r51616 = c;
        float r51617 = r51615 + r51616;
        float r51618 = d;
        float r51619 = r51617 + r51618;
        float r51620 = r51614 * r51619;
        return r51620;
}

double f_id(double a, double b, double c, double d) {
        double r51621 = a;
        double r51622 = b;
        double r51623 = c;
        double r51624 = r51622 + r51623;
        double r51625 = d;
        double r51626 = r51624 + r51625;
        double r51627 = r51621 * r51626;
        return r51627;
}


double f_of(float a, float b, float c, float d) {
        float r51628 = a;
        float r51629 = b;
        float r51630 = c;
        float r51631 = r51629 + r51630;
        float r51632 = d;
        float r51633 = r51631 + r51632;
        float r51634 = r51628 * r51633;
        return r51634;
}

double f_od(double a, double b, double c, double d) {
        double r51635 = a;
        double r51636 = b;
        double r51637 = c;
        double r51638 = r51636 + r51637;
        double r51639 = d;
        double r51640 = r51638 + r51639;
        double r51641 = r51635 * r51640;
        return r51641;
}

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 r51642, r51643, r51644, r51645, r51646, r51647, r51648;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51642);
        mpfr_init(r51643);
        mpfr_init(r51644);
        mpfr_init(r51645);
        mpfr_init(r51646);
        mpfr_init(r51647);
        mpfr_init(r51648);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r51642, a, MPFR_RNDN);
        mpfr_set_d(r51643, b, MPFR_RNDN);
        mpfr_set_d(r51644, c, MPFR_RNDN);
        mpfr_add(r51645, r51643, r51644, MPFR_RNDN);
        mpfr_set_d(r51646, d, MPFR_RNDN);
        mpfr_add(r51647, r51645, r51646, MPFR_RNDN);
        mpfr_mul(r51648, r51642, r51647, MPFR_RNDN);
        return mpfr_get_d(r51648, MPFR_RNDN);
}

static mpfr_t r51649, r51650, r51651, r51652, r51653, r51654, r51655;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51649);
        mpfr_init(r51650);
        mpfr_init(r51651);
        mpfr_init(r51652);
        mpfr_init(r51653);
        mpfr_init(r51654);
        mpfr_init(r51655);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r51649, a, MPFR_RNDN);
        mpfr_set_d(r51650, b, MPFR_RNDN);
        mpfr_set_d(r51651, c, MPFR_RNDN);
        mpfr_add(r51652, r51650, r51651, MPFR_RNDN);
        mpfr_set_d(r51653, d, MPFR_RNDN);
        mpfr_add(r51654, r51652, r51653, MPFR_RNDN);
        mpfr_mul(r51655, r51649, r51654, MPFR_RNDN);
        return mpfr_get_d(r51655, MPFR_RNDN);
}

static mpfr_t r51656, r51657, r51658, r51659, r51660, r51661, r51662;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51656);
        mpfr_init(r51657);
        mpfr_init(r51658);
        mpfr_init(r51659);
        mpfr_init(r51660);
        mpfr_init(r51661);
        mpfr_init(r51662);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r51656, a, MPFR_RNDN);
        mpfr_set_d(r51657, b, MPFR_RNDN);
        mpfr_set_d(r51658, c, MPFR_RNDN);
        mpfr_add(r51659, r51657, r51658, MPFR_RNDN);
        mpfr_set_d(r51660, d, MPFR_RNDN);
        mpfr_add(r51661, r51659, r51660, MPFR_RNDN);
        mpfr_mul(r51662, r51656, r51661, MPFR_RNDN);
        return mpfr_get_d(r51662, MPFR_RNDN);
}

