#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 r9921 = a;
        float r9922 = b;
        float r9923 = c;
        float r9924 = r9922 + r9923;
        float r9925 = d;
        float r9926 = r9924 + r9925;
        float r9927 = r9921 * r9926;
        return r9927;
}

double f_id(double a, double b, double c, double d) {
        double r9928 = a;
        double r9929 = b;
        double r9930 = c;
        double r9931 = r9929 + r9930;
        double r9932 = d;
        double r9933 = r9931 + r9932;
        double r9934 = r9928 * r9933;
        return r9934;
}


double f_of(float a, float b, float c, float d) {
        float r9935 = a;
        float r9936 = b;
        float r9937 = c;
        float r9938 = r9936 + r9937;
        float r9939 = d;
        float r9940 = r9938 + r9939;
        float r9941 = r9935 * r9940;
        return r9941;
}

double f_od(double a, double b, double c, double d) {
        double r9942 = a;
        double r9943 = b;
        double r9944 = c;
        double r9945 = r9943 + r9944;
        double r9946 = d;
        double r9947 = r9945 + r9946;
        double r9948 = r9942 * r9947;
        return r9948;
}

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 r9949, r9950, r9951, r9952, r9953, r9954, r9955;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9949, a, MPFR_RNDN);
        mpfr_set_d(r9950, b, MPFR_RNDN);
        mpfr_set_d(r9951, c, MPFR_RNDN);
        mpfr_add(r9952, r9950, r9951, MPFR_RNDN);
        mpfr_set_d(r9953, d, MPFR_RNDN);
        mpfr_add(r9954, r9952, r9953, MPFR_RNDN);
        mpfr_mul(r9955, r9949, r9954, MPFR_RNDN);
        return mpfr_get_d(r9955, MPFR_RNDN);
}

static mpfr_t r9956, r9957, r9958, r9959, r9960, r9961, r9962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9956, a, MPFR_RNDN);
        mpfr_set_d(r9957, b, MPFR_RNDN);
        mpfr_set_d(r9958, c, MPFR_RNDN);
        mpfr_add(r9959, r9957, r9958, MPFR_RNDN);
        mpfr_set_d(r9960, d, MPFR_RNDN);
        mpfr_add(r9961, r9959, r9960, MPFR_RNDN);
        mpfr_mul(r9962, r9956, r9961, MPFR_RNDN);
        return mpfr_get_d(r9962, MPFR_RNDN);
}

static mpfr_t r9963, r9964, r9965, r9966, r9967, r9968, r9969;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9963);
        mpfr_init(r9964);
        mpfr_init(r9965);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9963, a, MPFR_RNDN);
        mpfr_set_d(r9964, b, MPFR_RNDN);
        mpfr_set_d(r9965, c, MPFR_RNDN);
        mpfr_add(r9966, r9964, r9965, MPFR_RNDN);
        mpfr_set_d(r9967, d, MPFR_RNDN);
        mpfr_add(r9968, r9966, r9967, MPFR_RNDN);
        mpfr_mul(r9969, r9963, r9968, MPFR_RNDN);
        return mpfr_get_d(r9969, MPFR_RNDN);
}

