#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 r10161 = x;
        float r10162 = r10161 * r10161;
        float r10163 = r10161 * r10162;
        float r10164 = r10163 + r10162;
        return r10164;
}

double f_id(double x) {
        double r10165 = x;
        double r10166 = r10165 * r10165;
        double r10167 = r10165 * r10166;
        double r10168 = r10167 + r10166;
        return r10168;
}


double f_of(float x) {
        float r10169 = x;
        float r10170 = r10169 * r10169;
        float r10171 = r10169 * r10170;
        float r10172 = r10171 + r10170;
        return r10172;
}

double f_od(double x) {
        double r10173 = x;
        double r10174 = r10173 * r10173;
        double r10175 = r10173 * r10174;
        double r10176 = r10175 + r10174;
        return r10176;
}

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 r10177, r10178, r10179, r10180;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10177);
        mpfr_init(r10178);
        mpfr_init(r10179);
        mpfr_init(r10180);
}

double f_im(double x) {
        mpfr_set_d(r10177, x, MPFR_RNDN);
        mpfr_mul(r10178, r10177, r10177, MPFR_RNDN);
        mpfr_mul(r10179, r10177, r10178, MPFR_RNDN);
        mpfr_add(r10180, r10179, r10178, MPFR_RNDN);
        return mpfr_get_d(r10180, MPFR_RNDN);
}

static mpfr_t r10181, r10182, r10183, r10184;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init(r10183);
        mpfr_init(r10184);
}

double f_fm(double x) {
        mpfr_set_d(r10181, x, MPFR_RNDN);
        mpfr_mul(r10182, r10181, r10181, MPFR_RNDN);
        mpfr_mul(r10183, r10181, r10182, MPFR_RNDN);
        mpfr_add(r10184, r10183, r10182, MPFR_RNDN);
        return mpfr_get_d(r10184, MPFR_RNDN);
}

static mpfr_t r10185, r10186, r10187, r10188;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10185);
        mpfr_init(r10186);
        mpfr_init(r10187);
        mpfr_init(r10188);
}

double f_dm(double x) {
        mpfr_set_d(r10185, x, MPFR_RNDN);
        mpfr_mul(r10186, r10185, r10185, MPFR_RNDN);
        mpfr_mul(r10187, r10185, r10186, MPFR_RNDN);
        mpfr_add(r10188, r10187, r10186, MPFR_RNDN);
        return mpfr_get_d(r10188, MPFR_RNDN);
}

