#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 r9369 = a;
        float r9370 = b;
        float r9371 = r9369 + r9370;
        float r9372 = r9371 * r9371;
        return r9372;
}

double f_id(double a, double b) {
        double r9373 = a;
        double r9374 = b;
        double r9375 = r9373 + r9374;
        double r9376 = r9375 * r9375;
        return r9376;
}


double f_of(float a, float b) {
        float r9377 = b;
        float r9378 = a;
        float r9379 = r9377 + r9378;
        float r9380 = r9379 * r9379;
        return r9380;
}

double f_od(double a, double b) {
        double r9381 = b;
        double r9382 = a;
        double r9383 = r9381 + r9382;
        double r9384 = r9383 * r9383;
        return r9384;
}

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 r9385, r9386, r9387, r9388;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9385);
        mpfr_init(r9386);
        mpfr_init(r9387);
        mpfr_init(r9388);
}

double f_im(double a, double b) {
        mpfr_set_d(r9385, a, MPFR_RNDN);
        mpfr_set_d(r9386, b, MPFR_RNDN);
        mpfr_add(r9387, r9385, r9386, MPFR_RNDN);
        mpfr_mul(r9388, r9387, r9387, MPFR_RNDN);
        return mpfr_get_d(r9388, MPFR_RNDN);
}

static mpfr_t r9389, r9390, r9391, r9392;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9389);
        mpfr_init(r9390);
        mpfr_init(r9391);
        mpfr_init(r9392);
}

double f_fm(double a, double b) {
        mpfr_set_d(r9389, b, MPFR_RNDN);
        mpfr_set_d(r9390, a, MPFR_RNDN);
        mpfr_add(r9391, r9389, r9390, MPFR_RNDN);
        mpfr_mul(r9392, r9391, r9391, MPFR_RNDN);
        return mpfr_get_d(r9392, MPFR_RNDN);
}

static mpfr_t r9393, r9394, r9395, r9396;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9393);
        mpfr_init(r9394);
        mpfr_init(r9395);
        mpfr_init(r9396);
}

double f_dm(double a, double b) {
        mpfr_set_d(r9393, b, MPFR_RNDN);
        mpfr_set_d(r9394, a, MPFR_RNDN);
        mpfr_add(r9395, r9393, r9394, MPFR_RNDN);
        mpfr_mul(r9396, r9395, r9395, MPFR_RNDN);
        return mpfr_get_d(r9396, MPFR_RNDN);
}

