#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 r51923 = x;
        float r51924 = r51923 * r51923;
        float r51925 = r51923 * r51924;
        float r51926 = r51925 + r51924;
        return r51926;
}

double f_id(double x) {
        double r51927 = x;
        double r51928 = r51927 * r51927;
        double r51929 = r51927 * r51928;
        double r51930 = r51929 + r51928;
        return r51930;
}


double f_of(float x) {
        float r51931 = x;
        float r51932 = r51931 * r51931;
        float r51933 = r51931 * r51932;
        float r51934 = r51933 + r51932;
        return r51934;
}

double f_od(double x) {
        double r51935 = x;
        double r51936 = r51935 * r51935;
        double r51937 = r51935 * r51936;
        double r51938 = r51937 + r51936;
        return r51938;
}

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 r51939, r51940, r51941, r51942;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51939);
        mpfr_init(r51940);
        mpfr_init(r51941);
        mpfr_init(r51942);
}

double f_im(double x) {
        mpfr_set_d(r51939, x, MPFR_RNDN);
        mpfr_mul(r51940, r51939, r51939, MPFR_RNDN);
        mpfr_mul(r51941, r51939, r51940, MPFR_RNDN);
        mpfr_add(r51942, r51941, r51940, MPFR_RNDN);
        return mpfr_get_d(r51942, MPFR_RNDN);
}

static mpfr_t r51943, r51944, r51945, r51946;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51943);
        mpfr_init(r51944);
        mpfr_init(r51945);
        mpfr_init(r51946);
}

double f_fm(double x) {
        mpfr_set_d(r51943, x, MPFR_RNDN);
        mpfr_mul(r51944, r51943, r51943, MPFR_RNDN);
        mpfr_mul(r51945, r51943, r51944, MPFR_RNDN);
        mpfr_add(r51946, r51945, r51944, MPFR_RNDN);
        return mpfr_get_d(r51946, MPFR_RNDN);
}

static mpfr_t r51947, r51948, r51949, r51950;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51947);
        mpfr_init(r51948);
        mpfr_init(r51949);
        mpfr_init(r51950);
}

double f_dm(double x) {
        mpfr_set_d(r51947, x, MPFR_RNDN);
        mpfr_mul(r51948, r51947, r51947, MPFR_RNDN);
        mpfr_mul(r51949, r51947, r51948, MPFR_RNDN);
        mpfr_add(r51950, r51949, r51948, MPFR_RNDN);
        return mpfr_get_d(r51950, MPFR_RNDN);
}

