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

char *name = "Expression 4, p15";

double f_if(float a, float b) {
        float r9970 = a;
        float r9971 = b;
        float r9972 = r9970 + r9971;
        float r9973 = r9972 * r9972;
        return r9973;
}

double f_id(double a, double b) {
        double r9974 = a;
        double r9975 = b;
        double r9976 = r9974 + r9975;
        double r9977 = r9976 * r9976;
        return r9977;
}


double f_of(float a, float b) {
        float r9978 = a;
        float r9979 = b;
        float r9980 = r9978 + r9979;
        float r9981 = r9980 * r9980;
        return r9981;
}

double f_od(double a, double b) {
        double r9982 = a;
        double r9983 = b;
        double r9984 = r9982 + r9983;
        double r9985 = r9984 * r9984;
        return r9985;
}

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 r9986, r9987, r9988, r9989;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9986);
        mpfr_init(r9987);
        mpfr_init(r9988);
        mpfr_init(r9989);
}

double f_im(double a, double b) {
        mpfr_set_d(r9986, a, MPFR_RNDN);
        mpfr_set_d(r9987, b, MPFR_RNDN);
        mpfr_add(r9988, r9986, r9987, MPFR_RNDN);
        mpfr_mul(r9989, r9988, r9988, MPFR_RNDN);
        return mpfr_get_d(r9989, MPFR_RNDN);
}

static mpfr_t r9990, r9991, r9992, r9993;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
}

double f_fm(double a, double b) {
        mpfr_set_d(r9990, a, MPFR_RNDN);
        mpfr_set_d(r9991, b, MPFR_RNDN);
        mpfr_add(r9992, r9990, r9991, MPFR_RNDN);
        mpfr_mul(r9993, r9992, r9992, MPFR_RNDN);
        return mpfr_get_d(r9993, MPFR_RNDN);
}

static mpfr_t r9994, r9995, r9996, r9997;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9994);
        mpfr_init(r9995);
        mpfr_init(r9996);
        mpfr_init(r9997);
}

double f_dm(double a, double b) {
        mpfr_set_d(r9994, a, MPFR_RNDN);
        mpfr_set_d(r9995, b, MPFR_RNDN);
        mpfr_add(r9996, r9994, r9995, MPFR_RNDN);
        mpfr_mul(r9997, r9996, r9996, MPFR_RNDN);
        return mpfr_get_d(r9997, MPFR_RNDN);
}

