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

char *name = "Expression 2, p15";

double f_if(float x) {
        float r51663 = x;
        float r51664 = r51663 * r51663;
        float r51665 = r51663 + r51664;
        return r51665;
}

double f_id(double x) {
        double r51666 = x;
        double r51667 = r51666 * r51666;
        double r51668 = r51666 + r51667;
        return r51668;
}


double f_of(float x) {
        float r51669 = x;
        float r51670 = r51669 * r51669;
        float r51671 = r51669 + r51670;
        return r51671;
}

double f_od(double x) {
        double r51672 = x;
        double r51673 = r51672 * r51672;
        double r51674 = r51672 + r51673;
        return r51674;
}

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 r51675, r51676, r51677;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51675);
        mpfr_init(r51676);
        mpfr_init(r51677);
}

double f_im(double x) {
        mpfr_set_d(r51675, x, MPFR_RNDN);
        mpfr_mul(r51676, r51675, r51675, MPFR_RNDN);
        mpfr_add(r51677, r51675, r51676, MPFR_RNDN);
        return mpfr_get_d(r51677, MPFR_RNDN);
}

static mpfr_t r51678, r51679, r51680;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51678);
        mpfr_init(r51679);
        mpfr_init(r51680);
}

double f_fm(double x) {
        mpfr_set_d(r51678, x, MPFR_RNDN);
        mpfr_mul(r51679, r51678, r51678, MPFR_RNDN);
        mpfr_add(r51680, r51678, r51679, MPFR_RNDN);
        return mpfr_get_d(r51680, MPFR_RNDN);
}

static mpfr_t r51681, r51682, r51683;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51681);
        mpfr_init(r51682);
        mpfr_init(r51683);
}

double f_dm(double x) {
        mpfr_set_d(r51681, x, MPFR_RNDN);
        mpfr_mul(r51682, r51681, r51681, MPFR_RNDN);
        mpfr_add(r51683, r51681, r51682, MPFR_RNDN);
        return mpfr_get_d(r51683, MPFR_RNDN);
}

