#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 r49150 = a;
        float r49151 = b;
        float r49152 = c;
        float r49153 = r49151 + r49152;
        float r49154 = d;
        float r49155 = r49153 + r49154;
        float r49156 = r49150 * r49155;
        return r49156;
}

double f_id(double a, double b, double c, double d) {
        double r49157 = a;
        double r49158 = b;
        double r49159 = c;
        double r49160 = r49158 + r49159;
        double r49161 = d;
        double r49162 = r49160 + r49161;
        double r49163 = r49157 * r49162;
        return r49163;
}


double f_of(float a, float b, float c, float d) {
        float r49164 = a;
        float r49165 = b;
        float r49166 = c;
        float r49167 = r49165 + r49166;
        float r49168 = r49164 * r49167;
        float r49169 = d;
        float r49170 = r49164 * r49169;
        float r49171 = r49168 + r49170;
        return r49171;
}

double f_od(double a, double b, double c, double d) {
        double r49172 = a;
        double r49173 = b;
        double r49174 = c;
        double r49175 = r49173 + r49174;
        double r49176 = r49172 * r49175;
        double r49177 = d;
        double r49178 = r49172 * r49177;
        double r49179 = r49176 + r49178;
        return r49179;
}

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 r49180, r49181, r49182, r49183, r49184, r49185, r49186;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r49180);
        mpfr_init(r49181);
        mpfr_init(r49182);
        mpfr_init(r49183);
        mpfr_init(r49184);
        mpfr_init(r49185);
        mpfr_init(r49186);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r49180, a, MPFR_RNDN);
        mpfr_set_d(r49181, b, MPFR_RNDN);
        mpfr_set_d(r49182, c, MPFR_RNDN);
        mpfr_add(r49183, r49181, r49182, MPFR_RNDN);
        mpfr_set_d(r49184, d, MPFR_RNDN);
        mpfr_add(r49185, r49183, r49184, MPFR_RNDN);
        mpfr_mul(r49186, r49180, r49185, MPFR_RNDN);
        return mpfr_get_d(r49186, MPFR_RNDN);
}

static mpfr_t r49187, r49188, r49189, r49190, r49191, r49192, r49193, r49194;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49187);
        mpfr_init(r49188);
        mpfr_init(r49189);
        mpfr_init(r49190);
        mpfr_init(r49191);
        mpfr_init(r49192);
        mpfr_init(r49193);
        mpfr_init(r49194);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r49187, a, MPFR_RNDN);
        mpfr_set_d(r49188, b, MPFR_RNDN);
        mpfr_set_d(r49189, c, MPFR_RNDN);
        mpfr_add(r49190, r49188, r49189, MPFR_RNDN);
        mpfr_mul(r49191, r49187, r49190, MPFR_RNDN);
        mpfr_set_d(r49192, d, MPFR_RNDN);
        mpfr_mul(r49193, r49187, r49192, MPFR_RNDN);
        mpfr_add(r49194, r49191, r49193, MPFR_RNDN);
        return mpfr_get_d(r49194, MPFR_RNDN);
}

static mpfr_t r49195, r49196, r49197, r49198, r49199, r49200, r49201, r49202;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49195);
        mpfr_init(r49196);
        mpfr_init(r49197);
        mpfr_init(r49198);
        mpfr_init(r49199);
        mpfr_init(r49200);
        mpfr_init(r49201);
        mpfr_init(r49202);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r49195, a, MPFR_RNDN);
        mpfr_set_d(r49196, b, MPFR_RNDN);
        mpfr_set_d(r49197, c, MPFR_RNDN);
        mpfr_add(r49198, r49196, r49197, MPFR_RNDN);
        mpfr_mul(r49199, r49195, r49198, MPFR_RNDN);
        mpfr_set_d(r49200, d, MPFR_RNDN);
        mpfr_mul(r49201, r49195, r49200, MPFR_RNDN);
        mpfr_add(r49202, r49199, r49201, MPFR_RNDN);
        return mpfr_get_d(r49202, MPFR_RNDN);
}

