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

char *name = "Expression 3, p15";

double f_if(float x) {
        float r23331 = x;
        float r23332 = r23331 * r23331;
        float r23333 = r23331 * r23332;
        float r23334 = r23333 + r23332;
        return r23334;
}

double f_id(double x) {
        double r23335 = x;
        double r23336 = r23335 * r23335;
        double r23337 = r23335 * r23336;
        double r23338 = r23337 + r23336;
        return r23338;
}


double f_of(float x) {
        float r23339 = x;
        float r23340 = r23339 * r23339;
        float r23341 = r23339 * r23340;
        float r23342 = r23341 + r23340;
        return r23342;
}

double f_od(double x) {
        double r23343 = x;
        double r23344 = r23343 * r23343;
        double r23345 = r23343 * r23344;
        double r23346 = r23345 + r23344;
        return r23346;
}

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 r23347, r23348, r23349, r23350;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r23347);
        mpfr_init(r23348);
        mpfr_init(r23349);
        mpfr_init(r23350);
}

double f_im(double x) {
        mpfr_set_d(r23347, x, MPFR_RNDN);
        mpfr_mul(r23348, r23347, r23347, MPFR_RNDN);
        mpfr_mul(r23349, r23347, r23348, MPFR_RNDN);
        mpfr_add(r23350, r23349, r23348, MPFR_RNDN);
        return mpfr_get_d(r23350, MPFR_RNDN);
}

static mpfr_t r23351, r23352, r23353, r23354;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23351);
        mpfr_init(r23352);
        mpfr_init(r23353);
        mpfr_init(r23354);
}

double f_fm(double x) {
        mpfr_set_d(r23351, x, MPFR_RNDN);
        mpfr_mul(r23352, r23351, r23351, MPFR_RNDN);
        mpfr_mul(r23353, r23351, r23352, MPFR_RNDN);
        mpfr_add(r23354, r23353, r23352, MPFR_RNDN);
        return mpfr_get_d(r23354, MPFR_RNDN);
}

static mpfr_t r23355, r23356, r23357, r23358;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23355);
        mpfr_init(r23356);
        mpfr_init(r23357);
        mpfr_init(r23358);
}

double f_dm(double x) {
        mpfr_set_d(r23355, x, MPFR_RNDN);
        mpfr_mul(r23356, r23355, r23355, MPFR_RNDN);
        mpfr_mul(r23357, r23355, r23356, MPFR_RNDN);
        mpfr_add(r23358, r23357, r23356, MPFR_RNDN);
        return mpfr_get_d(r23358, MPFR_RNDN);
}

